![ISP DNS 与本地 DDNS 冲突](https://linux22.com/image/1435691/ISP%20DNS%20%E4%B8%8E%E6%9C%AC%E5%9C%B0%20DDNS%20%E5%86%B2%E7%AA%81.png)
我的 Actiontec MI424WR rev. D 路由器发出两个 DNS 服务器地址:
- [primary] 本身
- [secondary] ISP 的 DNS 服务器。我假设这是在 WAN 接口上自动配置的相同 DNS 服务器
路由器本身提供动态 DNS 服务,用于解析本地网络主机(来自 DHCP 请求)。
这就是问题:
- localhost1 查询:“获取 localhost2 的 IP”
- 主名称服务器响应:“本地 IP”
- 辅助名称服务器响应:“外部 IP”
如果次要名称服务器先响应,那么我将只能使用虚假 IP,直到缓存 (TTL) 过期。如果主要名称服务器先响应,那么名称解析只能在 TTL 过期期间有效。无论哪种情况,都会导致间歇性网络问题。
我认为问题在于主名称服务器对本地网络没有权威性,并且可以使用区域文件解决这个问题。话虽如此,我不知道该怎么做。
编辑:更多信息:
本地 IPv4 接口设置:
$ nmcli dev list iface eth0 | grep -i ip4 IP4.ADDRESS[1]: ip = 192.168.1.12/24, gw = 192.168.1.1 IP4.DNS[1]: 192.168.1.1 IP4.DNS[2]: 71.250.0.12 IP4.DOMAIN[1]: home
路由器 DHCP 租约(注意两个 DNS 服务器)
“ping veridian”的结果和数据包捕获,结果正确:
$ host veridian veridian.home has address 192.168.1.6
在这种情况下,两个 DNS 服务器都会被查询。注意 ICMP 数据包:
但有时,仅查询第一个:
“ping veridian”的结果和数据包捕获,结果不正确:
$ host veridian veridian has address 92.242.140.21 Host veridian not found: 3(NXDOMAIN)
dig
具有正确结果的查询:$ dig veridian ; <<>> DiG 9.9.5-4.3ubuntu0.1-Ubuntu <<>> veridian ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41955 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;veridian. IN A ;; ANSWER SECTION: veridian. 3600 IN A 192.168.1.6 ;; Query time: 8 msec ;; SERVER: 127.0.1.1#53(127.0.1.1) ;; WHEN: Thu Jan 01 11:49:15 EST 2015 ;; MSG SIZE rcvd: 42
我不明白为什么
+trace
会这么严重。数据包捕获同样疯狂$ dig veridian +trace ; <<>> DiG 9.9.5-4.3ubuntu0.1-Ubuntu <<>> veridian +trace ;; global options: +cmd . 3600 IN NS FWDR-12.FWDR-0.FWDR-250.FWDR-71. . 3600 IN NS FWDR-12.FWDR-0.FWDR-242.FWDR-71. ;; Received 192 bytes from 127.0.1.1#53(127.0.1.1) in 52 ms . 59753 IN NS f.root-servers.net. . 59753 IN NS g.root-servers.net. . 59753 IN NS h.root-servers.net. . 59753 IN NS i.root-servers.net. . 59753 IN NS a.root-servers.net. . 59753 IN NS j.root-servers.net. . 59753 IN NS b.root-servers.net. . 59753 IN NS c.root-servers.net. . 59753 IN NS k.root-servers.net. . 59753 IN NS d.root-servers.net. . 59753 IN NS l.root-servers.net. . 59753 IN NS m.root-servers.net. . 59753 IN NS e.root-servers.net. ;; BAD (HORIZONTAL) REFERRAL ;; Received 456 bytes from 71.242.0.12#53(FWDR-12.FWDR-0.FWDR-242.FWDR-71) in 424 ms . 86400 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2015010100 1800 900 604800 86400 . 86400 IN RRSIG SOA 8 0 86400 20150108050000 20150101040000 16665 . 41iHbkp6Vgt/jpFPBSSHhsZJIObLML1kpg9Zr1SwMGKKutBdx2RdSevT Al5360iNAVIPgfNNv9bfaP5U1HJ37HbRgn /PWNZ6rxWGeVr4nW/O7TTH Z5byVvNyai9h/j9FPkN4q7/+5C+iNioJtlBfoHQTSRLhcUNBqdUttTuk 89k= . 86400 IN NSEC abogado. NS SOA RRSIG NSEC DNSKEY . 86400 IN RRSIG NSEC 8 0 86400 20150108050000 20150101040000 16665 . tNCuLf6B7DspHqAbfBa2dTuIYpPqCJt0++du62VuUJOmcVKdxgupwGFm +MX5zjpegWVkNf2PciMWScSx94FBbRNPu ve4yHDCBZnL/T+FW5SoRGHI 9XUGHkO6Q+74iBpzXS3Sbgh/FAXI8MbXo2aM+utAZqowi2yYmN6KS5T5 Yic= ventures. 86400 IN NSEC versicherung. NS DS RRSIG NSEC ventures. 86400 IN RRSIG NSEC 8 1 86400 20150108050000 20150101040000 16665 . gRxYslNhKmdOYOVB0EIf091y+4JbnO7+CrMMKXTmx3nmPQSTjuoBg6xx ngbJ+BNflGYMgFkI7PEJCCJNdgpaSYY3S TIfy6nfZng7pD5MVjlFV4YJ IN7Q9gNK0GhSdUxzOerpQn9Lud0Ync2XRnAO1ErLOVGg81vXpdakYssB fy0= ;; Received 658 bytes from 202.12.27.33#53(m.root-servers.net) in 115 ms
dig
查询结果不正确:$ dig veridian +trace ; <<>> DiG 9.9.5-4.3ubuntu0.1-Ubuntu <<>> veridian +trace ;; global options: +cmd . 3600 IN NS FWDR-12.FWDR-0.FWDR-250.FWDR-71. . 3600 IN NS FWDR-12.FWDR-0.FWDR-242.FWDR-71. ;; Received 192 bytes from 127.0.1.1#53(127.0.1.1) in 52 ms veridian. 0 IN A 92.242.140.21 ;; Received 53 bytes from 71.250.0.12#53(FWDR-12.FWDR-0.FWDR-250.FWDR-71) in 10 ms
路由器桥接(内部)接口设置的屏幕截图。各个(桥接)接口上没有 DNS 设置:
路由器 WAN(外部)接口设置的屏幕截图。注意 DNS 设置。我很确定,如果我禁用“自动获取 DNS 服务器地址”,我将无法解析外部 DNS 名称:
路由器还提供“动态路由”。我很确定它不适用,但为了以防万一,我想我应该提一下。我还可以手动编辑 DNS 缓存(主机名 -> 内部 IP 地址),并且有一个我不明白的“动态 DNS”配置页面。它看起来像一个外部 DDNS 服务(DynDNS、No-IP 等),但没有任何功能:
答案1
设置路由器的方式有点奇怪。更常见的是在路由器上设置 dhcp 服务器,为 dns 服务器分配自己的 ip 地址,然后它将 dns 请求中继到路由器设置中的服务器。通常,路由器设置将由 ISP 填充 dns 服务器 - 我使用的是相同的路由器,虽然是版本 I,但使用的是 Verizon FIOS。否则,如果您想使用第三方 dns 服务器(如 google 或 open dns),请设置 dhcp 服务器,为您想要使用的任何服务器分配一对地址,或者覆盖对您想要使用的服务器的 dhcp 分配。您也是 FIOS 用户吗?
动态 DNS 页面正如您所猜测的那样,支持使用 dyndns 之类的东西。填写您的帐户详细信息,当外部 WAN IP 地址更改时,dydndns 将获得更新。
在屏幕截图 7 中,您显示了 000.000.000.000 的 dns 值,我有有效值 - 尽管它们实际上是一对 OpenDns 服务器的值。我不明白 dns 如何在值为 0 的情况下工作。我已经很久没有设置路由器了,但我相信如果您将下拉菜单更改为“无 DNS 服务器”,那么路由器将默认使用与授予租约的 ISP dhcp 服务器关联的 dns 服务器。
答案2
让您的路由器给出两个地址不一致的 DNS 地址是不好的。
您的路由器需要提供 1 个仅属于其自身的 DNS 地址,这听起来就像您的路由器的 DNS 服务器处理本地网络名称。
我认为问题在于主名称服务器对于本地网络不具有权威性,并且可以使用区域文件解决这个问题。
如果您的主服务器在被查询时将本地 IP 解析为本地名称,并且您没有收到失败的 DNS 响应,则它已经是权威的。问题是一些查询会发送到路由器的 DNS,而其他查询会发送到您的 ISP 的 DNS。DHCP 支持提供多个 DNS 服务器,但这并不意味着这些 DNS 服务器必须相互关联或相互了解。