为什么 nslookup 对于设置为私有地址的 DNS 记录失败?

为什么 nslookup 对于设置为私有地址的 DNS 记录失败?

设置

在某些网络上,我可以用来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。

相关内容