设置
在某些网络上,我可以用来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 服务器,或者将笔记本电脑的 DNS 服务器设置为 Google 的nslookup
按预期工作:
@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
:)
家庭网络
我跑发光二极体(以前开放WRT)在我的家用路由器上运行dnsmasq
.我看过了DNS 的文档甚至设置了系统,以便它用来解析地址的 DNS 服务器是 Google 的 ( 8.8.8.8
) - 但它仍然失败,我似乎不明白为什么。
问题
这里发生了什么以及我该如何解决它?
答案1
这是 的一个特点dnsmasq
。这dnsmasq
称之为“重新绑定保护“。它默认处于打开状态。要么将其关闭,要么将您想要使用的域添加到白名单域集中rebind_domain
。
rebind_protection
如果您想在 中更改它,您可以看到该选项/etc/config/dhcp
。如果您决定禁用重新绑定保护,则必须运行/etc/init.d/dnsmasq restart
以使更改生效。
config dnsmasq
option domainneeded '1'
option localise_queries '1'
option rebind_protection '0'
option rebind_localhost '1'
如果您希望维护除一个域之外的安全性,您可以简单地添加到排除项,如下所示:
config dnsmasq
list rebind_domain '/acmevpn.net/'
list rebind_domain '/foobar.net/'
它声称要防止的攻击是攻击者利用您的 WWW 浏览器会自动下载并运行来自全世界的攻击者提供的程序这一事实,使 xyr 域名似乎在外部域名之间快速交替。 IP 地址和 LAN 内部的 IP 地址,使您的计算机成为 LAN 上具有该 IP 地址的另一台计算机与某些攻击者运行的内容服务器之间的管道。
答案2
这是某些 DNS 软件不解析为私有 IP 地址的安全措施。我想这样做的理由是为了防止访问不安全的路由器。
此问题可以通过不使用为您完成所有解析的 DNS 来解决,而是将您的解析器配置为连接到该域本身的 NS。