我正在尝试设置 DNS 服务器来更改本地网络中的几个域 - 首先使用 bind9,然后使用 dnsmasq。使用这两种软件,我都遇到了同样的问题:在 dns 服务器本身上执行 nslookup / dig 时,我得到了正确更改的 ip 匹配。
但是,当使用 DNS 服务器在机器上进行查找时,它会返回错误的(原始)主机 IP,而不是修改后的 IP。
在 DNS 本身上
nslookup mydomain.com
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: mydomain.com
Address: <correctly modified host ip>
在已刷新缓存的设备上 (mac / android):
nslookup mydomain.com
Server: <dns server ip>
Address: <dns server ip>#53
Non-authoritative answer:
Name: mydomain.com
Address: <original host ip>
问题是,为什么服务器上的输入是正确的,但客户端上的输入却有错误?
答案1
将修改后的 DNS 条目传播到互联网需要一些时间。当旧记录(如 TTL 中定义)过期时,新记录将自动替换。您必须等待一段时间,直到 TTL 过期。
答案2
这个问题非常愚蠢而且明显:我的主机在机器上激活了一个 UDP 块。
我猜 Mac 和 Android 会使用备用 DNS 服务器,以防无法访问一组 DNS 服务器?这就能解释错误(正确)的结果了。
然而,在 Linux 机器上,使用新 DNS 服务器的 nslookup/dig 导致超时。