解決:connect Network is unreachable 和 ping unknown host www.baidu.com
- 問題:
在虛擬機器上載入了兩個linux系統,一個Ubuntu,一個TD-EXPRESS。很納悶,Ubuntu那邊的網路順暢,ping外面的主機,ping www.baidu.com 都可以ping通,而TD-EXPRESS 那邊只能ping 同一個網段內的,ping 其他ip 像 8.8.8.8就出現了connect Network is unreachable錯誤,ping 其他主機像 www.baidu.com 就出現了 ping unknown host www.baidu.com 錯誤。
問題分析
- 只能ping通內網: 說明閘道器沒有設定好,不能通過閘道器將請求轉發到路由器
- ping其他遠端主機出現unknown host:說明DNS伺服器有問題,不能將主機名解析成ip地址,所以更不用說訪問了
問題解決
虛擬機器上的網路配置
開啟虛擬網路編輯器
做如下設定,選用NAT方式共享主機IP,記住,我們的子網號是192.168.8.0,那麼子網下面的主機,理論上應該從192.168.8.1~192.168.8.254 這個範圍裡面選 (因為192.168.8.0表示網路號,而192.168.8.255表示廣播地址,不可以用做子網主機的ip)
點選“NAT設定”,設定閘道器為192.168.8.2 ,後面需要用到
列表內容
兩個主機的IP設定
第一個主機(Ubuntu)ip的設定
ubuntu配置的資訊主要在/etc/network/interfaces這個檔案下,具體配置方法這裡省略,可參考其他部落格
下面展示配置好的結果:
重要的一點是:其ip必須滿足我們之前的說的那個子網的範圍內,我們設定為192.168.8.130第二臺主機(TD_EXPRESS)ip的設定
編輯這個 /etc/sysconfig/network/ifcfg-eth0 檔案,將ip設定為192.168.8.143,子網號設定為255.255.255.0
連通性測試
使用ping命令測試連通結果,發現Ubuntu正常訪問外部主機,而TD-EXPRESS出現以上談及的兩個錯誤,即:connect Network is unreachable 和 ping unknown host www.baidu.com- route命令檢視兩個主機的路由表,發現問題主機缺少預設的路由器,即圖片中的default那一條
按照個人理解:預設閘道器/路由就是,當主機想訪問某個網路是,就去路由表尋找對應的閘道器,主機把資料交給閘道器,閘道器代為把請求轉發給對應的路由器。
像第二個路由表中的第一條,192.168.8.0 * 255.255.255.0 U 0 0 eth0 ,表示的就是在訪問192.168.8.0 這個網路時,需要把它提交給閘道器*,而*表示就是在本網路內訪問,可以直接訪問,不需要路由器代為轉發。
而像第一個路由表中的第一條 ,表示主機在路由表中查詢不到其相想要訪問的網路是,就採用這個閘道器,即先把資料交給192.168.8.2這個閘道器,其代為轉發到路由器,這樣子才能訪問外網。只有通過路由器的轉發才可以訪問外網。
在第二主機中之所以出現只能ping通內網的主機,而訪問外網失敗,就是因為主機在路由表中找不到對應的網路,比如8.8.8.8就不在其路由表內容,拿它找不到,它就不知道怎麼做了。而有了一條default之後,它找不到對應的閘道器時,就會預設提交給default後面的閘道器!
有關路由的知識可參見部落格,寫得很詳細:
http://blog.csdn.net/chenlycly/article/details/52141854- 新增預設路由/閘道器
route add default gw 192.168.8.2
新增完成後,我們再次檢視路由表:
發現多了一條預設路由。
ping 8.8.8.8
可以成功ping通
但是值得注意的是,這樣子新增路由之後,重啟之後又會沒有的。所以採用如下這個方法在機器啟動時自動新增路由:
http://www.phpernote.com/linux/1247.html
這個部落格將到的是3種開機啟動的方法,我用的是第二種:
將寫好的指令碼(.sh檔案)放到目錄 /etc/profile.d/ 下,系統啟動後就會自動執行該目錄下的所有shell指令碼。
指令碼的內容很簡單,主要就是剛才那條命令:
寫完儲存就可以了,之後重啟就好自動新增預設路由!
- 解決unknown host www.baidu.com 問題
之前測試了ping 8.8.8.8 可以ping通,但是ping www.baidu.com 卻出現了unknown host的問題
在網上查詢相關的問題解決方法,大同小異,基本上都是在/etc/resolv.conf 下加入常見的域名伺服器
nameserver 202.98.96.68
nameserver 61.139.2.69
但是依舊不能解決問題……
最後在某度知道 裡面找到了一個問答,居然把問題解決了。
在那個檔案中第一行加上
nameserver 192.168.8.2
這個192.168.8.2 也就是跟我們剛剛設定的預設閘道器相同
最後最後,所有問題都解決了!