我已经在服务器网络中配置了 dnsmasq 服务。我可以从本地服务器和网络中的“兄弟”服务器正确查询它。
root@yyy ~# nslookup google.com 172.25.x.xxx
Server: 172.25.x.xxx
Address: 172.25.x.xxx#53
Non-authoritative answer:
Name: google.com
Address: 216.58.210.174
但是当我尝试从我的开发机器(范围 172.144.xx)查询它时,我没有得到任何响应。端口已正确打开(使用 nmap 和 telnet 测试)。
$ nmap -p 53 172.25.x.xxx -Pn
Starting Nmap 7.01 ( https://nmap.org ) at 2017-04-12 17:54 CEST
Nmap scan report for 172.25.x.xxx
Host is up (0.0018s latency).
PORT STATE SERVICE
53/tcp open domain
Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds
$ nslookup google.com 172.25.x.xxx
connection timed out; no servers could be reached
似乎标志 --local-service 已启用,但我已经设置了接口和监听地址变量
interface=eth0
listen-address=127.0.0.1,172.25.x.xxx
我发现 --local-service 默认启用,但使用“interface”和“listen-address”时不启用。有什么方法可以检查是否仍然处于活动状态?
编辑 似乎这可能是与 udp/tcp 相关的问题。此查询适用于我的开发网络
$ dig +tcp +short cnn.com @172.25.7.110
151.101.129.67
151.101.193.67
这看起来很奇怪,因为开发机器和服务器机器可以“对话”udp。(在服务器上使用“netcat -u -l -p 53”进行测试,在开发机器上使用“netcat -u 172.25.x.xxx 53”进行测试)
答案1
看来防火墙规则是罪魁祸首。检查列表nmap
:53/tcp
。确保 UDP 也被允许。
答案2
它已修复这边走:编辑并从变量中/etc/init.d/dnsmasq
删除以修复它。--local-service
DNSMASQ_OPTS