基于 OpenWRT 的网关,带有 dnsmasq 和带有 bind 的内部服务器

基于 OpenWRT 的网关,带有 dnsmasq 和带有 bind 的内部服务器

我有基于 OpenWRT 的路由器,它有 dnsmasq 2.59。在我的局域网中,我有一个 NS 服务器绑定。此服务器对我的几个域具有内部和外部视图。我的路由器将端口 53 TCP 和 UDP 从外部 IP(路由器 WAN)转发到此服务器。对于外部客户端,一切正常。

为了组织内部视图,我决定添加例外

/etc/dnsmasq.conf

server=/mydomain1.com/192.168.1.1
server=/mydomain2.com/192.168.1.1
server=/mydomain3.com/192.168.1.1

(192.168.1.1-NS 服务器的 IP 地址)

根据 dnsmasq manstrong 文本:

More specific domains take precendence over less specific domains, so: --server=/google.com/1.2.3.4 --server=/www.google.com/2.3.4.5 will send queries for *.google.com to 1.2.3.4, except *www.google.com, which will go to 2.3.4.5

这个域名及其所有子域名都应该转发到我的 NS 服务器。

除 A 记录外,一切正常(SOA、NS、MX、CNAME、TXT、SRV 等):

# nslookup -type=a mydomain1.com

Server:         192.168.1.100
Address:        192.168.1.100#53

*** Can't find mydomain1.com: No answer

192.168.1.100-我的路由器的 IP 地址(dnsmasq)

但是,我可以得到 TXT 记录查询的答案:

# nslookup -type=txt mydomain1.com
Server:         192.168.1.100
Address:        192.168.1.100#53

mydomain1.com        text = "v=spf1 include:mydomain1.com -all"

当我仅指定我的 NS 服务器的本地 IP(不使用 dnsmasq 直接访问服务器)时,结果如下:

# nslookup -type=a mydomain1.com 192.168.1.1

Server:         192.168.1.1
Address:        192.168.1.1#53

Name:   mydomain1.com
Address: 192.168.1.1

MX 记录也有类似的情况:

C:\>nslookup -type=mx mydomain1.com
Server:  router.lan
Address:  192.168.1.100

mydomain1.com         MX preference = 10, mail exchanger = mail.mydomain1.com
mydomain1.com         nameserver = ns.mydomain1.com
mail.mydomain1.com   internet address = 192.168.1.1
ns.mydomain1.com     internet address = 192.168.1.1

C:\>nslookup -type=a mail.mydomain1.com
Server:  router.lan
Address:  192.168.1.100

*** No address (A) records available for mail.mydomain1.com

这是挖掘结果:

# dig +nocmd mydomain1.com any +multiline +noall +answer
mydomain1.com.          86400 IN SOA ns.mydomain1.com. hostmaster.mydomain1.com. (
                                121204007  ; serial
                                28800      ; refresh (8 hours)
                                7200       ; retry (2 hours)
                                604800     ; expire (1 week)
                                3600       ; minimum (1 hour)
                                )
mydomain1.com.          86400 IN NS ns.mydomain1.com.
mydomain1.com.          86400 IN A 192.168.1.1
mydomain1.com.          604800 IN MX 10 mail.mydomain1.com.
mydomain1.com.          3600 IN TXT "v=spf1 include:mydomain1.com -all"

当我尝试 ping 时:

# ping mydomain1.com
ping: cannot resolve mydomain1.com: Unknown host

这是 dnsmasq 2.59 的一个错误吗?如何解决此问题?

答案1

我最近自己也遇到了这个问题。

最有可能的是,您在配置中将重新绑定保护设置为“开启”。如果是这样,您应该允许该域的 RFC1918 响应:

--rebind-domain-ok=/mydomain1.com/domain2.com/domain3.com/

这帮我解决了这个问题。希望有帮助。

如果没有,请查看 dnsmasq 发行说明,2.5x-2.6x 版本中报告了一些回归错误。2.62 和 2.65 似乎最稳定(我使用 v62)。尝试升级并查看是否能解决问题。

相关内容