![某些机器上映射到 192.168 地址的主机名的 DNS 解析失败](https://linux22.com/image/1403568/%E6%9F%90%E4%BA%9B%E6%9C%BA%E5%99%A8%E4%B8%8A%E6%98%A0%E5%B0%84%E5%88%B0%20192.168%20%E5%9C%B0%E5%9D%80%E7%9A%84%E4%B8%BB%E6%9C%BA%E5%90%8D%E7%9A%84%20DNS%20%E8%A7%A3%E6%9E%90%E5%A4%B1%E8%B4%A5.png)
我有一个映射到本地子网地址的域名,因此我可以轻松地跨设备进行测试(test.internetdancefloor.com 映射到 192.168.1.88 或类似的地址)。此地址在我的 Windows 计算机上有效,但在我的 Android 设备或 Mac 上无效。当我在 Mac 上运行 nslookup 时,DNS 失败:
users-mbp:~ user$ nslookup internetdancefloor.com
Server: 192.168.1.1
Address: 192.168.1.1#53
Non-authoritative answer:
Name: internetdancefloor.com
Address: 174.127.248.98
users-mbp:~ user$ nslookup test.internetdancefloor.com
Server: 192.168.1.1
Address: 192.168.1.1#53
Non-authoritative answer:
*** Can't find test.internetdancefloor.com: No answer
知道为什么对 test.internetdancefloor.com 的 nslookup 在某些机器上可以成功,但在其他机器上却不行吗?
我的假设是,mac 和 android 设备上的 DNS 客户端拒绝本地子网 IP 地址,因为我后来添加了传统 DNS 条目 (version.internetdancefloor.com),并且它在各个设备之间都能正常工作。否则,我无法验证这个假设。
@Alex:
users-MacBook-Pro:videoplayer user$ cat /etc/resolv.conf
#
# Mac OS X Notice
#
# This file is not used by the host name and address resolution
# or the DNS query routing mechanisms used by most processes on
# this Mac OS X system.
#
# This file is automatically generated.
#
nameserver 192.168.1.1
更新:
我们观察到 Mac 直接使用路由器作为 DNS 服务器,而不是路由器配置使用的 DNS 服务器。我的 Windows 计算机不使用路由器 (192.168.1.1) 作为 DNS 服务器,而是获取路由器配置使用的静态 IP(我猜是通过 DHCP)。
当我从 PC 上使用 nslookup 但选择 DNS 服务器时,我发现路由器是 DNS 请求失败的一方,而不是上游 DNS 服务器。当我不指定 DNS 服务器时,它不会默认为 192.168.1.1,而是直接使用上游 DNS 服务器 (208.76.152.1)
C:\src> nslookup test.internetdancefloor.com
Server: DNSresolver-A.spectrumnet.us
Address: 208.76.152.1
Non-authoritative answer:
Name: test.internetdancefloor.com
Address: 192.168.1.88
C:\src> nslookup test.internetdancefloor.com 208.76.152.1
Server: DNSresolver-A.spectrumnet.us
Address: 208.76.152.1
Non-authoritative answer:
Name: test.internetdancefloor.com
Address: 192.168.1.88
C:\src> nslookup test.internetdancefloor.com 192.168.1.1
Server: unknown
Address: 192.168.1.1
*** No internal type for both IPv4 and IPv6 Addresses (A+AAAA) records available for test.internetdancefloor.com
将我的 Android 和 Mac 设备配置为使用特定的 DNS 服务器似乎不太自然,尽管我认为这是可行的。也许我的路由器正在过滤指向同一子网的某些 DNS 结果,而这可以撤消。我想知道为什么我的 Mac/Android 设备选择 192.168.1.1 作为其 DNS 服务器?这些设备使用无线连接,而我的 PC 使用有线连接,所以也许这是无线/有线的区别。
答案1
感谢@alex-mckenzie 引导我找到答案。
我的无线路由器告诉客户端(通过 DHCP)将其用作 DNS 代理服务器。由于某种原因,路由器无法解析本地子网内的 IP 地址。路由器软件是 TomatoUSB。DHCP 配置设置“使用内部 DNS”已启用。一旦我禁用它,通过 DHCP 连接的客户端将直接使用上游 DNS 服务器。
我注意到第一次访问域名时 DNS 请求经常会失败,我希望这个问题也能得到解决。