歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

解決Ubuntu或Fedora虛擬機重啟網絡時報錯問題

如何解決Ubuntu或Fedora虛擬機重啟網絡時出現的“No such device eth0”或“Job failed”錯誤。

首先聲明:下面是出現在Ubuntu和Fedora下面的問題,如果其它虛擬機也出現這樣的問題,也可參看這些方法解決。

1. 錯誤症狀

(1)Ubuntu下

用命令service networking restart重啟網絡或ifconfig eth0 up重啟網卡時出現下面錯誤:

eth0: ERROR while getting interface flags: No such device

(2)Fedora下

用命令systemctl restart network.service重啟網絡時出現下面錯誤:

Job failed. See system journal and 'systemctl status' for details.

2. 探究原因

在本地為用VMware為Linux創建虛擬機後,可能有兩個原因導致網卡啟動無效,從而顯示上面的錯誤:

(1)創建一個新的克隆鏡像,將該虛擬機拷貝到別的機器上使用

(2)你本地機後來重裝了主機系統(我是這種情形)

這是什麼原因呢?

其實原因就在於:新克隆的或重裝主機系統後的虛擬機鏡像的網卡MAC地址已經變更。

打開虛擬機的.vmx文件,ethernet0.generatedAddress項記錄了該虛擬機的mac地址。

(1)Ubuntu下

用ifconfig -a查看所有適配器信息,發現原來的eth0已經沒了(有的),Ubuntu已經將新網卡重新命名為eth7(也可能命名為其它),怪不得出現“No such device eth0”錯誤了,eth0的確已經不在了。怎麼解決?首先我們需要知道跟MAC地址相關的配置文件在哪?

a. Ubuntu保存網卡mac地址和設備名的配置文件在

/etc/udev/rules.d/70-persistent-net.rules

b. 網卡的網絡配置文件大家都知道,在

/etc/network/interfaces

該配置文件中只有原來eth0的配置信息。

參考文獻裡給出了三種解決方案:

   解決方案1 — 移動/刪除rules文件

sudo mv /etc/udev/rules.d/70-persistent-net.rules  /etc/udev/rules.d/70-persistent-net.rules.bak

重啟後Ubuntu會創建新的rules文件,將新網卡辨認為eth0,沿用原eth0的網絡配置。 如果網絡配置是自動獲取IP,則無需做其他修改。

   解決方案2 — 修改rules文件

sudo vi /etc/udev/rules.d/70-persistent-net.rules

原內容如下:

# PCI device 0x1022:0x2000 (pcnet32)

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*",     ATTR{address}=="00:0c:29:36:xx:xx", ATTR{type}=="1", NAME="eth7"

修改eth7的配置,將其改為eth0,如果原來已經有eth0,則刪除eth7配置,用eth7的mac地址替代eth0的mac地址。

# PCI device 0x1022:0x2000 (pcnet32)

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*",

   ATTR{address}=="00:0c:29:36:xx:xx", ATTR{type}=="1", NAME="eth0"

重啟後Ubuntu同樣會將新網卡辨認為eth0,沿用原eth0的網絡配置。 如果網絡配置是自動獲取IP,則無需做其他修改。

   解決方案3 — 修改interfaces文件

sudo vi /etc/network/interfaces

將所有的eth0替換為eth7。 如果是靜態地址則同時修改相應設置。

(2)Fedora下

根據錯誤信息,我們可以看下具體的錯誤提示是什麼?

cat /var/log/messages | grep network

從錯誤提示“Device eth0 has different MAC address than expected, ignoring”可以確定的確是MAC地址變更的原因。

進一步驗證,發現ifconfig顯示的MAC地址與ifcfg-eth0裡顯示的的確不一樣(這次eth0沒有被重命名),如下:

解決方案也很簡單,就是將ifcfg-eth0裡的HWADDR變量值改為ifconfig命令裡顯示的MAC地址即可,再重啟網絡就沒有錯誤了。

本欄目更多精彩內容:http://www.bianceng.cn/OS/Linux/

Copyright © Linux教程網 All Rights Reserved