NSLookup 解析为本地 DNS,但浏览器解析为公共 DNS

NSLookup 解析为本地 DNS,但浏览器解析为公共 DNS

问题

当尝试使用 NSLookup(Windows 和 Linux/Arch/Debian)通过主机名访问内部服务器时,我收到了正确的 DNS 服务器地址、FQDN 和目标 IP 地址。

当我尝试使用浏览器或 PING 访问同一台服务器时,我最终访问了我们的公共“catch-all”IP 地址。它应该访问我们的内部服务器。为什么它会访问我们的网络之外?

配置

  • 将域名与分配给适当 IP 地址的 BIND DNS 服务器绑定。
  • 路由器已打开用于 DHCP 的 DNSMasq,并关闭用于 DNS 的 DNSMasq。
  • 路由器 LAN 本地 DNS 服务器配置为指向我们的 BIND DNS 服务器。
  • 路由器已将静态 IP 分配给 BIND DNS 服务器

答案1

nslookup 和您的浏览器/ ping 测试之间的区别在于,nslookup 将强制进行 DNS 查找,而其他测试将使用正常的名称解析查找顺序来解析名称。

这涉及查找 DNS 缓存以及 hosts 文件中的静态记录。您的计算机可能在 hosts 文件中为您的 Web 服务器保留了静态记录(Windows:C:\windows\system32\drivers\etc\hosts,Linux:/etc/hosts/)。如果此文件中有记录,则将使用该记录,并且不会执行 DNS 查找。

正如 Zoredache 所建议的,它也可能是代理服务器 - 因为代理服务器将代表您执行 DNS 查找(这很可能会解析公共地址)。话虽如此,ICMP 通常没有代理 - 特别是在 Windows 中,但无论如何它绝对值得调查。

如果您想排除故障 - 我建议检查您的主机文件,检查代理服务器设置,如果仍然空白,则刷新您的 DNS 缓存(Windows:ipconfig /flushdns Linux:/etc/rc.d/init.d/nscd restart),然后运行 ​​wireshark 或 tcpdump 等程序来确定您的 PC 在进行 ping / 浏览器测试时是否实际发送了 DNS 请求。

相关内容