DNS 响应顺序在 nslookup 中重要吗?

DNS 响应顺序在 nslookup 中重要吗?

我在 Windows 上实现了一个 DNS 中继程序。
我每条命令都会收到 3 个 DNS 查询nslookup,PTR、A 和 AAAA。
我首先回复 type=A 查询,然后在几微秒后回复 PTR/AAAA 查询。
但我遇到了超时nslookup,发现本地主机收到了每个 A 和 AAAA 响应,但 PTR 响应出现了 ICMPPort unreachable错误。
我想知道为什么会发生这种情况?

答案1

地址(A 和 AAAA)请求与 PTR 记录请求是分开的。除非您有地址,否则您无法请求 PTR 记录。

对于典型的 SMTP 反向 DNS 验证查找 IP,192.0.2.8过程如下:

  • 将 IP 地址转换为查找格式。
  • 查找 的 PTR 8.2.0.192.in-addr.arpa
  • 收到带名称的 PTRsmtp.example.org
  • 查找地址smtp.example.org
  • 接收地址192.0.2.8

由于需要查找子网(例如,2.0.192.in-addr.arpa找到子网的名称服务器),因此 IP 地址在查找时是反向的。

部分子网的委派是使用 CNAME 记录完成的。

答案2

您使用的是 UDP、TCP 还是两者兼有?使用 UDP 时,您是否使用与原始查询源相同的 UDP 端口号作为目标端口?(换句话说:当 UDP 查询从 IP 地址 abcd 端口 X 进入您的 IP 地址和端口 53 时,答案应从您的端口​​ 53 发送到 abcd 的端口 X。)

DNS 可以同时使用 TCP 和 UDP:通常首先使用 UDP,因为它速度最快,但如果答案无法容纳在单个 UDP 数据包中,则服务器会尽可能多地放入答案,并添加一个标志,告诉客户端“这是第一部分;如果您需要更多,请通过 TCP 再次询问以获得完整答案”。

相关内容