■ 枝江市職業(yè)教育中心 楊華 梅瀚林
編者按:很多人在使用Linux虛擬機(jī)進(jìn)行網(wǎng)絡(luò)配置時(shí)會(huì)出現(xiàn)各種各樣的錯(cuò)誤,筆者以Centos-6.5版本為例,對(duì)一些常見的Linux虛擬機(jī)網(wǎng)絡(luò)配置故障進(jìn)行了詳細(xì)說明。
由 于Linux相對(duì)于Windows是開源的,而且在安全上要優(yōu)于后者,現(xiàn)在各行各業(yè)應(yīng)用很廣泛,越來越多的人也在學(xué)習(xí)Linux。但是有些時(shí)候單獨(dú)裝它來學(xué)習(xí),實(shí)在是很浪費(fèi),虛擬機(jī)就成了最好的選擇。
但在使用虛擬機(jī)軟件的時(shí)候,很多初學(xué)者都會(huì)遇到很多問題,其中網(wǎng)絡(luò)連接問題是大家遇到最多問題之一。
對(duì)于Windwos下的網(wǎng)絡(luò)配置,因?yàn)槭菆D形化的界面,操作起來非常方便。但在Linux(本 文 以 Centos-6.5版本為例)虛擬機(jī)下配置就不是那么輕松了。
因?yàn)樗且蕾囋谔摂M機(jī)下配置,首先要保證服務(wù)正常啟動(dòng),再就是網(wǎng)絡(luò)的配置文件有多個(gè),需要手工配置。稍不注意就可能導(dǎo)致網(wǎng)絡(luò)配置不成功。
下面以常見幾例故障來分析。
首先需要簡(jiǎn)要弄清虛擬機(jī)中的三種網(wǎng)絡(luò)工作模式,它們分別是:Bridged(橋接模式)、NAT(網(wǎng)絡(luò)地址轉(zhuǎn)換模式)、Host-Only(僅主機(jī)模式)。系統(tǒng)會(huì)為這三種工種模式分別虛擬出三種虛擬網(wǎng) 卡 即 VMnet0、VMnet8和VMnet1。
在此模式下,虛擬機(jī)和主機(jī)就好比插在同一臺(tái)交換機(jī)上的兩臺(tái)電腦。如果主機(jī)連接在開啟了DHCP服務(wù)的(無線)路由器上,這時(shí)虛擬機(jī)能夠自動(dòng)獲得IP地址。如果局域網(wǎng)內(nèi)沒有提供DHCP服務(wù)的設(shè)備,那就需要手動(dòng)配置IP地址,只需仿照主機(jī)網(wǎng)卡的IP地址,設(shè)置一個(gè)同網(wǎng)段的不同的IP地址即可。
注 意 :VMnet0其實(shí)是物理網(wǎng)卡上的VMware bridge protocol橋接協(xié)議,它是不會(huì)出現(xiàn)在本地網(wǎng)絡(luò)連接上,打開本地連接或其他無線網(wǎng)卡的屬性,看下是否有這個(gè)協(xié)議,有的話就有橋接模式!
【網(wǎng)卡無法正常啟動(dòng)】
1.克隆系統(tǒng)網(wǎng)卡配置信息不對(duì)稱
【故障現(xiàn)象】
Device eth0 does not seem to be present,delaying initialization.
【故障分析】
Linux(Centos-6.5)虛擬機(jī)克隆后,啟動(dòng)系統(tǒng)發(fā)現(xiàn)網(wǎng)卡無法啟動(dòng),然后輸入命令“ifup eth0”會(huì)提 示“Device eth0 does not seem to be present,delaying initialization”,翻譯過來即設(shè)備eth0似乎不存在,延遲初始化。原因是系統(tǒng)克隆后保留了之前的網(wǎng)絡(luò)配置信息,其中重要一個(gè)參數(shù)就是網(wǎng)上的物理地址即MAC,而克隆的系統(tǒng)在啟動(dòng)時(shí)會(huì)隨機(jī)生產(chǎn)一個(gè)新的網(wǎng)卡MAC,與配置文件不匹配,導(dǎo)致網(wǎng)卡初始化失敗。
【故障排除】
在“虛擬機(jī)設(shè)置”對(duì)話框的“網(wǎng)絡(luò)適配器→高級(jí)配置”選項(xiàng)中(如圖1所示),查看克隆系統(tǒng)網(wǎng)卡初始化的MAC,然后在網(wǎng)絡(luò)配置文件中進(jìn)行相應(yīng)修改。
[root@yum ~]# vim /etc/sysconfig/networkscripts/ifcfg-eth0
將 DEVICE=”eth0″ 改成 DEVICE=”eth1″ ,
將 HWADDR=”08:00:27:7e: 8c:e7″改成上面的MAC地址
HWADDR=” 00:0C:29:14:F7:39″
重新啟動(dòng)網(wǎng)絡(luò):service network restart
2.NetworkManager和network沖突
【故障現(xiàn)象】
重啟網(wǎng)絡(luò)服務(wù)時(shí),[root@HBZJ /]# service network restart
圖1 網(wǎng)絡(luò)適配器高級(jí)設(shè)置
Error: Device not managed by NetworkManager or unavailable
或者重啟網(wǎng)卡設(shè)備時(shí),[root@HBZJ /]# ifup eth1
Error: Connection activation failed: The connection is not for this device.
【故障分析】
對(duì)于初學(xué)者來講,一般是采用系統(tǒng)的默認(rèn)配置,在LINUX中,之前的網(wǎng)絡(luò)連接配置是能過ifcfg配置文件的編輯來進(jìn)行,當(dāng)然系統(tǒng)也提供了一個(gè)SETUP程序來進(jìn)行簡(jiǎn)單圖形化的操作,不管是哪種方式都是配置文件的修改,讓它生效。
現(xiàn)在Linux為了加強(qiáng)網(wǎng)絡(luò)連接的管理,方便用戶(特別是習(xí)慣了Windows操作)對(duì)各種網(wǎng)絡(luò)配置又增加了NetworkManager軟件,它也支持傳統(tǒng)的ifcfg 類型配置文件。核心是 NetworkManager守護(hù)進(jìn)程,還提供了命令行工具 nmcli,以及圖形界面配置工具。
我們用戶最直觀的感受如果啟用了NetworkManager服 務(wù),在系統(tǒng)右上角就會(huì)出現(xiàn)像Windows一樣的網(wǎng)絡(luò)連接圖標(biāo),然后可以直接利用圖形界面進(jìn)行網(wǎng)絡(luò)各種配置。ifcfg類型配置文件中有一個(gè)重要參數(shù)“NM_CONTROLLED="yes"”, 這 決定是否可以由NNetwork Manager托管,意味著通過軟件可以直接修改ifcfg配置文件。
但是對(duì)于極度依賴網(wǎng)絡(luò)、經(jīng)常進(jìn)行遠(yuǎn)程管理的系統(tǒng)管理員來說,這東西就是一個(gè)災(zāi)難。當(dāng)系統(tǒng)管理員按以前的習(xí)慣,在遠(yuǎn)程連接的終端上,修改ifcfg配置文件時(shí),如果內(nèi)容不完全正確,有很大概率導(dǎo)致網(wǎng)絡(luò)中斷(重要原因是當(dāng)前配置文件是實(shí)時(shí)生效的),導(dǎo)致遠(yuǎn)程連接死機(jī),無法進(jìn)行任何操作,管理員只能到機(jī)房去(如果幸運(yùn),離機(jī)房比較近的話),到服務(wù)器的Console終端來進(jìn)行修改。
【故障排除】
關(guān)閉NetworkManager服務(wù)
# chkconfig NetworkManager off --永久關(guān)閉服務(wù),需要重啟
# service NetworkManager stop --立即關(guān)閉服務(wù),不需要重啟
注意:配置linux網(wǎng)絡(luò)IP的時(shí)候,設(shè)置ifcfg-eh0文件就行了,這是系統(tǒng)級(jí)別的,而在圖形界面手工配置的IP設(shè)置,是用戶級(jí)別的,且重啟后,系統(tǒng)會(huì)優(yōu)先加載系統(tǒng)級(jí)別的配置,建議關(guān)掉圖形界面配置,即關(guān)閉NetworkManager服務(wù)。
【網(wǎng)卡能正常啟動(dòng),但無法獲取IP地址】
1.橋接網(wǎng)卡選擇錯(cuò)誤;
【故障現(xiàn)象】
圖2 系統(tǒng)網(wǎng)絡(luò)服務(wù)啟動(dòng)
圖3 橋接模式網(wǎng)卡選擇
圖4 NAT模式拓樸圖
能夠通過ifconfig命令顯示網(wǎng)卡的基本信息,但唯獨(dú)沒有IP 地址相關(guān)信息,進(jìn)行網(wǎng)絡(luò)服務(wù)重新啟動(dòng),如圖2所示,系統(tǒng)一直在獲取網(wǎng)卡的IP配置信息。
【故障分析】
根據(jù)經(jīng)驗(yàn),應(yīng)該是DHCP服務(wù)的問題,查看系統(tǒng)日志(/var/messages)發(fā)現(xiàn)提示“NO DHCPOFFERS received”,然后獲取IP都是失敗。但檢測(cè)物理機(jī)上的IP地址是可以正常獲取的,分析很有可能就是在橋接模式配置上了。進(jìn)入到虛擬機(jī)的橋接配置界面一看真相大白,如圖3所示??赡苡捎谌藶檎`操作,導(dǎo)致橋接網(wǎng)卡配置到了虛擬網(wǎng)卡上了。
【問題探討】
橋接模式不是跟直接通過物理網(wǎng)卡模擬一臺(tái)真實(shí)的設(shè)備,為什么還要設(shè)計(jì)這樣一個(gè)網(wǎng)卡的選項(xiàng),還容易出錯(cuò)?其實(shí)這樣設(shè)計(jì)是為了應(yīng)對(duì)物理機(jī)上可能安裝多塊網(wǎng)卡,連接到不同的網(wǎng)絡(luò),這種情況下就要根據(jù)實(shí)際情況下橋接到不同的網(wǎng)卡了。
【故障排除】
只要選擇橋接到物理網(wǎng)卡上,然后重新啟動(dòng)網(wǎng)絡(luò)服務(wù)即可。
NAT模式與VMnet8虛擬網(wǎng)卡進(jìn)行通信,從主機(jī)的“VMWare Virtual Ethernet Adapter for VMnet8”虛擬網(wǎng)卡出來,連接到VMnet8虛擬交換機(jī),虛擬交換機(jī)的另外的口連接到虛擬的NAT服務(wù)器(這也是一個(gè)VMware組件),還有一個(gè)口連接到虛擬DHCP服務(wù)器,其他的口連虛擬機(jī),虛擬機(jī)的網(wǎng)關(guān)即是“VMWare Virtual Ethernet Adapter for VMnet8”網(wǎng)卡所在的機(jī)器,就是你的Host機(jī)器(如圖4所示)。
同 樣,用ipconfig也可以看出來,你的虛擬機(jī)的默認(rèn)網(wǎng)關(guān)也指向了你的“VMWare Virtual Ethernet Adapter for VMnet8”虛擬網(wǎng)卡地址。
【故障現(xiàn)象】
VMnet8虛擬網(wǎng)卡沒有啟動(dòng)。
【分析排錯(cuò)】
這個(gè)需要在虛擬機(jī)里作配置才有的,在虛擬網(wǎng)絡(luò)配置器里將 VMnet8進(jìn)行NAT模式配置,要“將主機(jī)虛擬適配器連接到此網(wǎng)絡(luò)”和“使用本地DHCP服務(wù)將IP地址分配給虛擬機(jī)”兩項(xiàng)全部選中,這樣才會(huì)在本地網(wǎng)絡(luò)配置中出現(xiàn)VMnet8虛擬網(wǎng)卡。
【故障現(xiàn)象】
VMnet8虛擬網(wǎng)卡能正常配置啟動(dòng)。但系統(tǒng)啟動(dòng)后無法獲取IP。
【分析排錯(cuò)】
Windows系統(tǒng)服務(wù)中的VMware DHCP Service服務(wù)項(xiàng)沒有正常啟動(dòng),從而導(dǎo)致虛擬機(jī)客戶端無法正常獲取IP,重新啟動(dòng)該服務(wù)即可。
【故障現(xiàn)象】
能夠正常獲取IP,但無法訪問外網(wǎng)。
【分析排錯(cuò)】
Windows系統(tǒng)服務(wù)中的VMware NAT Service服務(wù)項(xiàng)沒有正常啟動(dòng),從而導(dǎo)致虛擬機(jī)客戶端沒有與外網(wǎng)連接的路徑,重新啟動(dòng)該服務(wù)即可。
【故障現(xiàn)象】
能夠通過IP訪問外網(wǎng),不能進(jìn)行域名解析訪問。
【分析排錯(cuò)】
這是虛擬機(jī)系統(tǒng)上DNS配置錯(cuò)誤引起的,ifcfg類型配置文件中有一項(xiàng)關(guān)于的DNS配置,默認(rèn)情況下是沒有配置,它會(huì)根據(jù)DHCP自動(dòng)獲取相關(guān)DNS,如果人為修改造成一個(gè)錯(cuò)誤的DNS服務(wù)地址,這就將導(dǎo)致域名解析錯(cuò)誤。
有的用戶認(rèn)為可以修改/etc/resolv.conf配置文件來配置本的DNS服務(wù),其實(shí)這個(gè)選項(xiàng)是根據(jù)網(wǎng)卡配置文件來,所以會(huì)發(fā)現(xiàn)配置完重新啟動(dòng)會(huì)丟失,又回到之前的配置。這主要是系統(tǒng)域名解析的優(yōu)先級(jí)是“hosts文件”→“網(wǎng)卡配置文件”→ “/etc/resolv.conf”,所 以 如果網(wǎng)卡配置文件的DNS選擇沒有更改過來,始終不會(huì)更改成功。
要么更改網(wǎng)卡配置文件中DNS選項(xiàng)為正確的IP指向,或者直接注釋掉該選項(xiàng),系統(tǒng)會(huì)用默認(rèn)網(wǎng)關(guān)作為DNS,雖然在配置文件中看不到,但 在“/etc/resolv.conf”配置文件中會(huì)發(fā)現(xiàn)DNS已經(jīng)同步到默認(rèn)網(wǎng)關(guān)了。