Linux不能上外网的问题解决

时间:2025-03-27 19:05:05

Linux不能上外网的问题解决

原文地址:http://blog./danshiming@126/blog/static/10941274820148935851786/   作者:danshiming

问题的提出:

         最近用VMware 9.0虚拟机装了一个linux系统,但奇怪的是:linux能ping通网关、能ping通局域网内的所有windows机器,但就是ping不同DNS地址、不能ping通任何外网,例如:执行如下命令时

           ping   

则始终弹出:

           unknown  host 

       从网上搜到如下解决方案,并按其操作,依然不行,如下红色字体为网上提供的解决方案(转自:/xionglang7/article/details/7341653):

解决linux ping: unknown host  
ping: unknown host " 
解决方案: 
   如果某台Linux服务器ping不通域名, 如下提示: 
[root@localhost ~]# ping
ping: unknown host

首先确定已经连接上路由器,并且路由器能够访问外网,可以通过访问网关进行确定

[root@localhost ~]# ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=2.96 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=1.75 ms

如果确定网络没问题的情况下, 可以通过如下步骤寻找解决办法: 
1) 确定设置了域名服务器, 没有的话, 建议设置Google的公共DNS服务, 它应该不会出问题的 
[root@localhost ~]# cat /etc/

search localdomain

因为我的DNS没有设置所以导致了ping外网ping不通。将dns添加到该文件中

[root@localhost ~]# vi /etc/

search localdomain
nameserver 202.98.96.68
nameserver 61.139.2.69
~

2) 确保网关已设置 
# grep GATEWAY /etc/sysconfig/network-scripts/ifcfg* 
------------------------------------------------------------------- 
/etc/sysconfig/network-scripts/ifcfg-eth0:GATEWAY=192.168.40.1 
------------------------------------------------------------------- 
如果未设置, 则通过如下方式增加网关: 
# route add default gw 192.168.40.1 
或者手工编写/etc/sysconfig/network-scripts/ifcfg*文件后, 重启network服务: 
# service network restart 
3) 确保可用dns解析 
# grep hosts /etc/ 
------------------------------------------------------------------- 
hosts:      files dns 
------------------------------------------------------------------- 
如果以上哪个有问题, 修正后, 再测试, 应该就没问题了: 
#ping -c 3  
PING (220.181.6.175) 56(84) bytes of data. 
64 bytes from 220.181.6.175: icmp_seq=0 ttl=50 time=9.51 ms 
64 bytes from 220.181.6.175: icmp_seq=1 ttl=50 time=8.45 ms 
64 bytes from 220.181.6.175: icmp_seq=2 ttl=50 time=8.97 ms 
--- ping statistics --- 
3 packets transmitted, 3 received, 0% packet loss, time 2002ms 
rtt min/avg/max/mdev = 8.450/8.977/9.511/0.446 ms, pipe 2 
--End--  
        按照上述红色字体一步一步操作完成后依然ping不通外网,经过艰苦排查,最后发现是/etc/sysconfig/network-scripts/ifcfg-eth0中GATEWAY中的地址和/etc/sysconfig/network中GATEWAY中的地址不一致导致,/etc/sysconfig/network-scripts/ifcfg-eth0中GATEWAY中的地址为网关的IP,但/etc/sysconfig/network中GATEWAY中的地址则不是网关的IP,将
/etc/sysconfig/network-scripts/ifcfg-eth0中GATEWAY中的地址和/etc/sysconfig/network中GATEWAY中的地址都设置为网关的IP,重启Linux或执行service network restart命令后再执行 ping   ,此时发现才能联通外网了