我在家庭局域网上配置了一个 DNS 服务器。它提供一些额外的域名,例如foo
。请注意,foo
配置为所有请求都返回 404。(我还没有让它做我想让它做的事。)另外,请注意,这foo
是单级域名即foo.
FQDN。希望很明显,这不是我期望在家庭网络以外的任何地方解析的名称。
网络上的一台孤独的 Windows 机器似乎无法完成 DNS 请求 — — 我不知道原因。
网络拓扑,仅供参考:
^ out to Comcast
|
* Comcast modem
|
+-* 10.1.10.2, a server, hosting a webserver and a DNS server.
+-* 10.1.10.3/192.168.2.1, a wireless router.
|
(via WiFi)
|
+-* an Android phone
+-* a Windows laptop.
+-* a Linux laptop.
无线路由器配置为使用 10.1.10.2 作为 DNS。但是,它在 DHCP 响应中发送 192.168.2.1 作为 DNS 服务器(已使用 Wireshark 验证)。
如果要求 Android 手机http://foo/
在 Chrome 中执行此操作,则会得到 404。(这是正确的。)
如果要求 Windows 计算机在 Chrome 中执行相同操作,则会失败,并显示“哎呀!Google Chrome 无法找到”页面。nslookup
在计算机上使用,并foo
在提示符下输入,它似乎无法找到foo
。它声称使用 192.168.2.1 作为 DNS 服务器。如果我nslookup
foo.
(注意点),我会得到正确的 IP 地址。如果我请求http://10.1.10.2
,我会得到 404。
在 Linux 机器上,adig @10.1.10.2 foo
给出了正确的响应。此外,dig @192.168.2.1 foo
也给出了正确的结果。
到底发生了什么?为什么 Windows 计算机返回 DNS 响应未找到,而所有其他计算机似乎都得到了正确的答案?
编辑:我在 Windows 机器上安装了 Python。我实际上有两个域,foo
和bar
。Pythonsocket.gethostbyname
可以看到foo
,但看不到bar
。(请注意,它们由同一个 DNS 服务器提供服务 — 除了名称之外,记录完全相同。)nslookup
除了带点的记录外,其他都看不到。Chrome 中没有任何效果。