1. 程式人生 > >CentOS網路配置後無法訪問外網的解決方法

CentOS網路配置後無法訪問外網的解決方法

今天在按照Mitchell部落格之前的CentOS網路配置的文章配置Linux網絡卡之後,發現竟然ping不通外網,但是內網ping卻是正常的。一直很納悶,在網上搜索很久也沒有得到答案.

現象:

ping內網正常
ping外網IP,域名均無法正常,返回錯誤:connect: Network is unreachable

後面在無意中看到Linux網路配置有新增閘道器的命令:

複製程式碼 程式碼如下:
route add default gw 192.168.128.2 dev eth0 

按上面操作,添加了預設的閘道器之後。再次訪問外網一切正常。

有這個現象來看,應該是配置檔案中沒有配置閘道器,但是經過確認/etc/sysconfig/network 中是配置了GATEWAY地址的,而且GATEWAY的地址也是正確的,在多次重啟network之後,只要不手動新增閘道器,就不能訪問外網。

多次仔細確認各個網路配置檔案之後,發現在網絡卡配置檔案中(ifcfg-eth0)有一個NETWORK配置項,對於這個配置項,本身作用不是很清楚,因此到官網查看了一下說明:

複製程式碼 程式碼如下:
NETWORK=<address> 
where <address> is the network address. This directive is deprecated, as the value is calculated automatically with ifcalc.

這節奏是告訴我們這個引數不要設定嘛(deprecate),這個值將會由ifcalc自動計算。既然不用設定,自然去掉。

去掉之後,重啟network服務之後,外網竟然神奇的能夠訪問了。使用route檢視路由表,發現能夠自動新增default這條資訊了,原來可是一直沒有的:

複製程式碼 程式碼如下:
Kernel IP routing table 
Destination Gateway Genmask Flags Metric Ref Use Iface 
192.168.128.0 * 255.255.255.0 U 0 0 0 eth0 
link-local * 255.255.0.0 U 1002 0 0 eth0 
default 192.168.128.2 0.0.0.0 UG 0 0 0 eth0

看來問題正是這個NETWORK引數設定引起的。至於具體為什麼會這樣,這個設定會產生什麼樣的影響還不是很清楚。

TIPs:為了簡單,你也可以將IPADDR,GATEWAY等設定到ifcfg-eth*的檔案中,不用將GATEWAY單獨設定在network中。