【问题标题】:Is there a way to bind DNS port 53 to only TCP or UDP specifically?有没有办法专门将 DNS 端口 53 绑定到 TCP 或 UDP?
【发布时间】:2018-12-28 14:04:38
【问题描述】:

我需要保持 dns 端口 53 繁忙/绑定到仅通过 TCP 或仅 UDP 的接口。有没有办法做到这一点?使用 socket lib python 或任何其他方式将不胜感激。

【问题讨论】:

  • 这是否意味着将创建 2 个套接字,TCP 和 UDP,但一次只能接受一个连接?你可以使用select.select来实现它。
  • 嗨 Hagai,实际上一次只需要一个插座。它可以是 TCP 或 UDP,但接口的 53 端口应该绑定在一个传输协议上。
  • 你能解释一下为什么吗?从技术上讲这不是问题,但 DNS 的 53 端口需要 TCP 和 UDP 在所有情况下都可靠地工作(尽管旧文档指出 TCP 仅用于区域传输,这是完全错误的)。
  • 嗨帕特里克,是的,我同意(AXFR 和其他 DNS 东西使用 TCP),但我需要这些用于测试,它应该在哪里使用/监听任何左侧接口:Proto(TCP 或 UDP):53 .这就是为什么我想同时让他们的 TCP 或 UDP 忙(但不能同时使用其他服务或任何其他方式)。

标签: python sockets dns python-sockets


【解决方案1】:

仅tcp

from socket import *

tcp = socket(AF_INET, SOCK_STREAM)
tcp.bind(('', 53))
tcp.listen(5)

仅限udp

from socket import *

udp = socket(AF_INET, SOCK_DGRAM)
udp.bind(('', 53))

【讨论】:

  • 如果你两者都做,那就不是“仅 TCP”或“仅 UDP”。
  • 是的,正是@EJP,我试过这些,绑定到 eth0 接口 IP。没有得到我的预期。
猜你喜欢
  • 2011-04-24
  • 1970-01-01
  • 1970-01-01
  • 2021-12-08
  • 1970-01-01
  • 1970-01-01
  • 2021-01-23
  • 2019-12-25
  • 2021-06-01
相关资源
最近更新 更多