我正在运行 Scientific Linux 6.3,刚刚将机器更新为 dnsmasq-2.48-13.el6.x86_64。该机器的本地 IP 为 192.168.1.100。我有一个本地缓存 DNS 设置,在更新之前一直有效。
/etc/dnsmasq.conf配置:
strict-order
listen-address=192.168.1.100
bind-interfaces
cache-size=5000
我确认 dnsmasq 正在运行,端口在我启动和停止 dnsmasq 时打开和关闭。
$ netstat -nl # shows that the port was opened
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 192.168.1.100:53 0.0.0.0:* LISTEN
udp 0 0 192.168.1.100:53 0.0.0.0:*
但尝试解决失败
$ nslookup google.com 192.168.1.100
;; connection timed out; trying next origin
;; connection timed out; no servers could be reached
即使尝试 telnet 也失败
$ telnet 192.168.1.100 53
Trying 192.168.1.100...
telnet: connect to address 192.168.1.100: Connection refused
我在 /var/log/messages 中没有看到任何与 dnsmasq 相关的内容。停止 iptables 没有帮助。我不知道从这里该去哪里。
答案1
根据您的附加信息,您需要将此行添加到dnsmasq.conf
我的 Slackware 机器中/etc/
:
listen-address=127.0.0.1
这是除另一listen-address
行之外的内容。您可以配置多个“监听地址”。我的猜测是,您还需要注释掉“bind-interfaces”行,但这只是一个猜测。
您还应该检查resolv-file
参数值是什么。该文件是否存在,其内容有意义吗?你可能不想要这样的东西:
resolv-file=/etc/resolv.conf
因为这将使所有调用gethostbyname()
跳过 using dnsmasq
,或者dnsmasq
尝试使用自身来解析名称,具体取决于/etc/resolv.conf
.
dnsmasq
更改后不要忘记重新启动。