我在安装 CentOS 6.2 的新机器上遇到了一些 DNS 问题。
我可以使用 nslookup、dig 或 host 查找名称。我可以通过名称或 IP 地址 ping 计算机。但是,当我尝试使用其他工具(例如 ssh、wget 或 yum)时,它们无法解析名称。例如:
# wget http://www.google.com
--2012-03-08 14:48:06-- http://www.google.com/
Resolving www.google.com... failed: Name or service not known.
wget: unable to resolve host address `www.google.com'
# ssh www.google.com
ssh: Could not resolve hostname www.google.com: Name or service not known
# ping -c 1 www.google.com
PING www.l.google.com (74.125.113.106) 56(84) bytes of data.
64 bytes from vw-in-f106.1e100.net (74.125.113.106): icmp_seq=1 ttl=46 time=43.6 ms
--- www.l.google.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 59ms
rtt min/avg/max/mdev = 43.665/43.665/43.665/0.000 ms
# host www.google.com
www.google.com is an alias for www.l.google.com.
www.l.google.com has address 74.125.113.99
www.l.google.com has address 74.125.113.103
www.l.google.com has address 74.125.113.104
www.l.google.com has address 74.125.113.105
www.l.google.com has address 74.125.113.106
www.l.google.com has address 74.125.113.147
我的 /etc/nsswitch.conf 文件是默认的,包括以下(标准)行:
hosts: files dns
/etc/resolv.conf 由 DHCP 设置:
; generated by /sbin/dhclient-script
nameserver 192.168.1.254
192.168.1.254 是一个正常工作的 DNS 服务器(我的 DSL 调制解调器,与其他机器一起工作多年)
谁知道为什么 ping 可以工作,但 ssh/wget 会失败?
根据 NcA 的建议,我尝试将 /etc/resolv.conf 更改为指向 8.8.8.8。奇怪的是,这确实有效。显然,我的 DSL 调制解调器以 Linux 解析系统的某些部分不喜欢的方式响应 DNS 请求。查看 tcpdump,我无法看出有什么区别。当然,两个服务器都发送相同的地址。
这是将服务器设置为 DSL 调制解调器上的 DNS 服务器时的输出tcpdump -nn -X
。它显然回复了正确的地址,但出于某种原因,ssh/wget 似乎对此不太满意:
15:53:52.133580 IP 192.168.1.254.53 > 192.168.1.2.54836: 33157 7/0/0 CNAME www.l.google.com., A 74.125.115.105, A 74.125.115.106, A 74.125.115.147, A 74.125.115.99, A 74.125.115.103, A 74.125.115.104 (148)
0x0000: 4500 00b0 e33a 0000 ff11 53b1 c0a8 01fe E....:....S.....
0x0010: c0a8 0102 0035 d634 009c 7528 8185 8180 .....5.4..u(....
0x0020: 0001 0007 0000 0000 0377 7777 0667 6f6f .........www.goo
0x0030: 676c 6503 636f 6d00 0001 0001 c00c 0005 gle.com.........
0x0040: 0001 0007 acd0 0008 0377 7777 016c c010 .........www.l..
0x0050: c02c 0001 0001 0000 0001 0004 4a7d 7369 .,..........J}si
0x0060: c02c 0001 0001 0000 0001 0004 4a7d 736a .,..........J}sj
0x0070: c02c 0001 0001 0000 0001 0004 4a7d 7393 .,..........J}s.
0x0080: c02c 0001 0001 0000 0001 0004 4a7d 7363 .,..........J}sc
0x0090: c02c 0001 0001 0000 0001 0004 4a7d 7367 .,..........J}sg
0x00a0: c02c 0001 0001 0000 0001 0004 4a7d 7368 .,..........J}sh
15:53:52.135669 IP 192.168.1.254.53 > 192.168.1.2.54836: 65062- 0/0/0 (32)
0x0000: 4500 003c e33b 0000 ff11 5424 c0a8 01fe E..<.;....T$....
0x0010: c0a8 0102 0035 d634 0028 98f9 fe26 8000 .....5.4.(...&..
0x0020: 0001 0000 0000 0000 0377 7777 0667 6f6f .........www.goo
0x0030: 676c 6503 636f 6d00 001c 0001 gle.com.....
我并不是一名专家,不清楚这是否在某种程度上是畸形的,但 ping 似乎能正确地处理它。
为了进行比较,查询 8.8.8.8 时的结果如下:
15:57:27.990270 IP 8.8.8.8.53 > 192.168.1.2.49028: 59114 7/0/0 CNAME www.l.google.com., A 74.125.113.105, A 74.125.113.103, A 74.125.113.106, A 74.125.113.147, A 74.125.113.104, A 74.125.113.99 (148)
0x0000: 4500 00b0 5530 0000 2f11 6453 0808 0808 E...U0../.dS....
0x0010: c0a8 0102 0035 bf84 009c 39f8 e6ea 8180 .....5....9.....
0x0020: 0001 0007 0000 0000 0377 7777 0667 6f6f .........www.goo
0x0030: 676c 6503 636f 6d00 0001 0001 c00c 0005 gle.com.........
0x0040: 0001 0001 516a 0008 0377 7777 016c c010 ....Qj...www.l..
0x0050: c02c 0001 0001 0000 0116 0004 4a7d 7169 .,..........J}qi
0x0060: c02c 0001 0001 0000 0116 0004 4a7d 7167 .,..........J}qg
0x0070: c02c 0001 0001 0000 0116 0004 4a7d 716a .,..........J}qj
0x0080: c02c 0001 0001 0000 0116 0004 4a7d 7193 .,..........J}q.
0x0090: c02c 0001 0001 0000 0116 0004 4a7d 7168 .,..........J}qh
0x00a0: c02c 0001 0001 0000 0116 0004 4a7d 7163 .,..........J}qc
15:57:28.018909 IP 8.8.8.8.53 > 192.168.1.2.49028: 31984 1/1/0 CNAME www.l.google.com. (102)
0x0000: 4500 0082 7b1b 0000 2f11 3e96 0808 0808 E...{.../.>.....
0x0010: c0a8 0102 0035 bf84 006e c67e 7cf0 8180 .....5...n.~|...
0x0020: 0001 0001 0001 0000 0377 7777 0667 6f6f .........www.goo
0x0030: 676c 6503 636f 6d00 001c 0001 c00c 0005 gle.com.........
0x0040: 0001 0001 517f 0008 0377 7777 016c c010 ....Q....www.l..
0x0050: c030 0006 0001 0000 0258 0026 036e 7334 .0.......X.&.ns4
0x0060: c010 0964 6e73 2d61 646d 696e c010 0016 ...dns-admin....
0x0070: 91f3 0000 0384 0000 0384 0000 0708 0000 ................
0x0080: 003c .<
我仍然不知道为什么服务器的答复对于 ping 来说足够了,但对于 ssh/wget 来说却不够。
如果有人有想法,我很乐意听听。不过现在,我可以参考外部 DNS 服务器,也可以在新机器上设置自己的服务器。这是一个看似不必要的解决方法,但可以让我继续下去。
答案1
使用这个:https://www.centos.org/modules/newbb/viewtopic.php?topic_id=39343
我找到了一个可以帮助我解决问题的关键命令:
[root@localhost ~]# wget -6 URL
-失败的
[root@localhost ~]# wget -4 URL
-工作过
这与默认 ipv6 堆栈有关,导致某些实用程序出现问题。禁用 ipv6 即可解决。
答案2
我有同样的问题,但我已经解决了。
您必须在接口配置文件中添加 DNS /etc/sysconfig/network-scripts/ifcfg-eth0
。添加行
DNS1=xxx.xxx.xxx.xxx
然后您必须重新启动网络服务。
# systemctl restart NetworkManager
答案3
尝试添加订购主机,绑定到/etc/主机.conf。
答案4
根据原始帖子,我添加了 8.8.8.8,/etc/resolv.conf
但/etc/sysconfig/network-scripts/ifcfg-eth0
两种编辑都无法解决我的问题。
然后我编辑/etc/nsswitch.conf
:
原来的
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
已编辑
hosts: files dns mdns4_minimal [NOTFOUND=return] mdns4
现在 DNS 适用于 yum 和 wget。