由于某种原因,我的一台 Ubuntu 9.04 机器上的所有 DNS 查询都被路由到 localhost,导致无法解析任何域名。例如,尝试 时dig example.com
,它会挂起约 20 秒,然后退出并显示消息“ ;; connection timed out; no servers could be reached
”。但是dig example.com @193.75.75.75
会立即返回正确的结果。此问题适用于所有 DNS 查询,而不仅仅是来自 的查询dig
。
$ cat /etc/resolv.conf
193.75.75.75
193.75.75.193
我没有 .digrc,NetworkManager 已卸载,网络其他方面都正常工作(例如,我可以正常使用它来访问 /etc/resolv.conf 中的主机)。我没有安装本地 DNS 服务器,并nmap
确认没有任何东西在端口 53 上监听。我在同一网络上还有几台运行 Ubuntu 9.04 的机器,DNS 在所有机器上都工作正常。
我已经使用 strace 来确认 dig 确实读取了resolv.conf
:
open("/etc/resolv.conf", O_RDONLY|O_LARGEFILE) = 6
(...)
read(6, "193.75.75.75\n193.75.75.193\n"..., 4096) = 27
我还使用了 tcpdump 来确认问题确实是 DNS 查询被路由到本地主机:
$ sudo tcpdump -i lo
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lo, link-type EN10MB (Ethernet), capture size 96 bytes
14:11:54.175580 IP localhost.45910 > localhost.domain: 38233+ A? example.com. (29)
14:11:54.175633 IP localhost > localhost: ICMP localhost udp port domain unreachable, length 65
14:11:55.175542 IP6 ip6-localhost.54963 > ip6-localhost.domain: 38233+[|domain]
14:11:55.175575 IP6 ip6-localhost > ip6-localhost: ICMP6, destination unreachable[|icmp6]
我没有办法解决这个问题,因此非常欢迎任何意见和建议。
答案1
/etc/resolv.conf 中的记录应如下所示
nameserver 193.75.75.75
答案2
的格式/etc/resolv.conf
不正确,应为:
search domain.com
nameserver 193.75.75.75
nameserver 193.75.75.193
搜索行当然是可选的。如果存在,它将用于限定主机名,例如,查找地址router
将返回地址router.domain.com
答案3
如果您最近更改了此项,您是否尝试过“服务网络重启”或重新启动整个服务器?
听起来很新,但这就是修改 resolv.conf 时所需要的。