设置
在某些网络上,我可以用来nslookup
解析指向私有 IP 地址的域名:
@work> nslookup my192.ddns.net
Server: 10.1.2.3
Address: 10.1.2.3#53
Non-authoritative answer:
Name: my192.ddns.net
Address: 192.168.20.20
但是,在我的家庭网络上,同样的查询失败了:
@home> nslookup my192.ddns.net
Server: 192.168.0.1
Address: 192.168.0.1#53
Non-authoritative answer:
*** Can't find my192.ddns.net: No answer
什么有效
我发现如果我更改 A 记录以my192.ddns.net
使其指向公共 IP 范围,它将正常工作:
@home> nslookup my192.ddns.net
Server: 192.168.0.1
Address: 192.168.0.1#53
Non-authoritative answer:
Name: my192.ddns.net
Address: 172.217.12.238
在家里,如果我为 nslookup 指定 DNS 服务器,或者nslookup
按预期将笔记本电脑的 DNS 服务器设置为 Google 的作品:
@home> nslookup my192.ddns.net 8.8.8.8
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
Name: my192.ddns.net
Address: 192.168.20.20
但我想继续使用我的家庭路由器作为我的主 DNS,以便它可以解析本地网络名称。我只是希望它在尝试查找指向私有范围地址的 DNS 记录时不会失败(例如192.168.20.20
:)
家庭网络
我在家用路由器上运行LEDE(以前称为OpenWRT),它运行dnsmasq
. 我查看了DNS 的文档,甚至设置了系统,以便它用来解析地址的 DNS 服务器是 Google 的 ( 8.8.8.8
) - 但它仍然失败,我似乎无法弄清楚原因。
问题
这里发生了什么,我该如何解决?
这是 的一个特点
dnsmasq
。人们dnsmasq
称之为“重新绑定保护”,您可以在dnsmasq
手册中看到它作为--stop-dns-rebind
命令行选项和在 LEDE doco 作为rebind_protection
选项。它默认为开启。将其关闭,或将您希望使用的域添加到白名单
rebind_domain
域集中。它声称要防止的攻击是攻击者利用您的 WWW 浏览器将自动下载并运行来自世界各地的攻击者提供的程序这一事实,使 xyr 域名似乎在外部IP 地址和 LAN 内部的一个,允许您的计算机成为 LAN 上具有该 IP 地址的另一台计算机与一些攻击者运行的内容服务器之间的管道。
某些 DNS 软件不解析为私有 IP 地址是一种安全措施。我想这样做的理由是防止访问不安全的路由器。
这个问题可以通过不使用一个为您完成所有解析的 DNS 来解决,而是将您的解析器配置为连接到该域本身的 NS。