linux unknown host 问题【转】
如果某台Linux(CentOS)服务器ping域名, 如下提示:
# ping www.sina.com
ping: unknown host www.sina.com
确认网络没问题的情况下, 可以通过如下步骤寻找解决办法:
1) 确认设置了域名服务器
没有的话, 建议设置Google的公共DNS服务, 它应该不会出问题的
# cat /etc/resolv.conf nameserver 8.8.8.8 nameserver 8.8.4.4 # 如果不是以上配置,则使用vi /etc/resolv.conf 追加配置
2) 查看IP 和 mac (hwAddr) 地址
[root@izbp1itlw36onzg6dw8fotz upload]# ifconfig docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 inet 172.17.0.1 netmask 255.255.0.0 broadcast 0.0.0.0 ether 02:42:ef:6c:f5:71 txqueuelen 0 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 10.245.75.1 netmask 255.255.255.0 broadcast 10.245.75.255 ether 00:16:3e:09:2d:42 txqueuelen 1000 (Ethernet) RX packets 509208 bytes 91876057 (87.6 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 420034 bytes 499159157 (476.0 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
3) 确认网关已设置/确认路由表正常
# netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 10.10.10.1 0.0.0.0 UG 0 0 0 eth0
如果未设置, 则通过如下方式增加网关:
# route add default gw 10.245.75.1
# grep GATEWAY /etc/sysconfig/network-scripts/ifcfg* /etc/sysconfig/network-scripts/ifcfg-eth0:GATEWAY=10.245.75.1
4) 确认可用dns解析
# grep hosts /etc/nsswitch.conf hosts: files dns
5) 以上的1) 2) 3) 点只是确认问题,个人喜欢手工编写配置文件,一次解决问题
配置/etc/sysconfig/network-scripts/ifcfg-eth0文件后,重启network服务:
# vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE="eth0" NM_CONTROLLED="yes" ONBOOT=yes TYPE=Ethernet BOOTPROTO=static IPADDR=10.245.75.240 #PREFIX=24 GATEWAY=10.245.75.1 DNS1=8.8.8.8 DNS2=8.8.4.4 DEFROUTE=yes IPV4_FAILURE_FATAL=yes IPV6INIT=yes NAME="System eth0" UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx # uuid HWADDR=00:16:3e:09:2d:42 # hwaddr和原网卡保持一致 NETWORKING=yes
# service network restart
我的测试环境样例
[root@ggg]# cat ifcfg-eno16780032 NM_CONTROLLED=no HWADDR=11:22:33:44:55:66 TYPE=Ethernet BOOTPROTO=static DEFROUTE=yes PEERDNS=yes PEERROUTES=yes IPV4_FAILURE_FATAL=yes IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_PEERDNS=yes IPV6_PEERROUTES=yes IPV6_FAILURE_FATAL=no NAME=SystemEno16780032 UUID=4e37ca3b-4c13-41cf-8c4e-b5a240f2bbbb ONBOOT=yes IPADDR=10.16.99.145 NETMASK=255.255.255.0
引用自:
修改/etc/resolv.conf又恢复到原来的状态?
新装一台机器环境为服务器主板,双网卡,系统为CentOS5.4 ,eth0为内网ip,eth1为公网ip。但是由于在本地测试,设置的内网ip,域名服务器同样使用的是上海本地的域名解析,没有问题,可以上网,可以解析。
放到外地公网上去,ip地址已经设好了。使用setup更改了一下外地公网的dns,保存退出。重启service network restart后发现不能解析了。用ip地址可以连,但是不能ping www.sina.com.cn
总是这样,设置一次可以,过一会或者重启一下服务器,重启一下network都不能解析了。发现/etc/resolv.conf又恢复到原来的状态,里面什么都没有了。手动加入nameserver也不行。
后来到网上查找,发现有人与我同样的问题。原来在CentOS5.4下面直接修改/etc/resolv.conf不行。必须要在/etc /sysconfig/network-scripts/ifcfg-eth0里面最后加上dns的设置。要不然,重启后,肯定使用eth0设置中没有设 dns的相关信息,使/etc/resolv.conf恢复到原来的状态。
打开/etc/sysconfig/network-scripts/ifcfg-eth0,为了保险起见,可以同样修改eth1的设置
DEVICE=eth0
BOOTPROTO=none
HWADDR=00:xx:19:xx:xx:xx
ONBOOT=yes
TYPE=Ethernet
USERCTL=no
IPV6INIT=no
PEERDNS=yes
NETMASK=255.255.255.0
IPADDR=xxx.xxx.xxx.xxx
GATEWAY=xxx.xxx.xxx.xxx
DNS1=202.96.209.5 #上海dns,根据实际情况更换 (一定要带上数字)
DNS2=202.96.209.133 #上海dns,根据实际情况更换
这样设置后,/etc/resolv.conf里面根本就不需要设置。service network restart 后,可以发现/etc/resolv.conf里面就有两个dns的解析ip了。配置好以后重启网络,cat /etc/resolv.conf,可以看到如下参数:
# Generated by NetworkManager
nameserver 202.96.209.5
nameserver 202.96.209.133
search localdomain
DNS解析设置成功。
在此要强调一点的是,直接修改/etc/resolv.conf这个文件是没用的,网络服务重启以后会根据/etc/sysconfig /network-scripts/ifcfg-eth0来重载配置,如果ifcfg-eth0没有配置DNS,那么resolv.conf会被冲掉,重 新变成空值。
不过对于其他的CentOS系统是否也是这样的,要是遇到同样的问题。就这样设一下试试
参考: https://www.cnblogs.com/mswangblog/p/6668186.html
https://blog.csdn.net/buguoerer/article/details/89076977