linux複製,網路報錯

2022-07-30 14:48:18 字數 2500 閱讀 7501

我拷貝了過來的linux虛擬機器無法上網,我用ifconfig命令查詢了一下發現只有eth1和lo裝置,沒有eth0。於是我在google上搜尋了一下, 《vmware轉殖或複製linux虛擬機器後eth0找不到的解決方案》

現象描述:

最近裝了虛擬機器系統是 centos,為了以後使用方便對虛擬機器進行轉殖或複製。當使用轉殖後的虛擬機器時發現原來在基本系統中的網絡卡eth0到了新系統卻沒有了,使用ifconfig -a會發現只有eth1。因為基本系統的網路相關配置都是基於eth0的,eth1沒有網路相關的配置,此時要正常該虛擬機器中的網路,只有新增eth1的網路配置,這樣每次都要修改網絡卡配置在做多linux系統測試的時候很不方便。更進一步,如果基於此轉殖虛擬機器繼續轉殖或複製新的虛擬機器,網絡卡的標識每一次都會自動加1(第二次轉殖會變成eth2),dmesg卻顯示核心只識別到網絡卡eth0。

原因分析:

很多linux distribution使用udev動態管理裝置檔案,並根據裝置的資訊對其進行持久化命名。例如在debian etch中,udev會在系統引導的過程中識別網絡卡,將mac位址和網絡卡名稱對應起來記錄在udev的規則指令碼中。而vmware會自動生成虛擬機器的mac位址。這樣,由於基本系統的虛擬機器已經記錄了該虛擬機器的網絡卡mac位址對應於網絡卡eth0,在轉殖出的虛擬機器中由於mac位址發生改變,udev會自動將該mac對應於網絡卡eth1。以此類推,udev會記錄所有已經識別的mac與網絡卡名的關係,所以每次轉殖網絡卡名稱會自動加1,而其實kernel僅僅只識別到一張網絡卡,跟網絡卡名相關的網路配置也未發生任何變化。

解決方案:

網路搜尋發現在debian etch下,udev將mac與網絡卡名稱的對應關係儲存在/etc/udev/rules.d/z25_persistent-net.rules中,在轉殖出的虛擬機器中只要刪除跟name="eth0"相關的行並重啟系統即可。例如在debian etch中刪除如下兩行:

# pci device 0x1022:0x2000(pcnet32)subsystem=="net",drivers=="?*",attrs=="00:0c:29:4c:46:01",name="eth0"

在我的fedora9 下修改/etc/udev/rules.d 下的 70-persistent-net.rules 檔案 刪除

# advanced micro devices [amd] 79c970 [pcnet32 lance] (rule written by anaconda)

subsystem=="net", action=="add", drivers=="?*", attr=="00:0c:29:ad:06:2a", attr=="1", kernel=="eth*", name="eth0"

然後把eth1對應的哪一行的"eth1"修改為"eth0"即可。

另外一種方法是:把裡面的內容都刪除,然後重新啟動,系統也會重新發現網絡卡硬體,重新產生該檔案。

這裡補充一點: 

用下面命令來實現上述第二種方法也是一樣的:

cd /etc/udev/rules.d

sudo rm *-net.rules    //刪除

sudo reboot

本人在用上述方法操作之後,再用ifconfig檢視,確實找到了eth0裝置,但沒有ip位址。

ifconfig eth0 192.168.0.10 將採用預設子網掩碼

ifconfig eth0 192.168.0.10 netmask 255.255.255.252 (手動定義子網掩碼)(重啟後無效)

ifconfig eth0 down(停用網絡卡)

ifconfig eth0 up(啟用網絡卡)

service network restart(重啟網路服務)

/etc/rc.d/init.d/network restart(同上)

我用ifconfig eth0 192.168.0.10 netmask 255.255.255.252 設定完ip,然後執行service network restart。

因為網絡卡配置資訊儲存在/etc/sysconfig/network-scripts/ifcfg-eth0配置檔案中,所以就去看看它吧。

檔案的基本內容如下:

device=eth0(哪張網絡卡)

onboot=yes

bootproto=static(靜態ip狀態設定)

bootproto=dhcp(dhcp獲取)

ipaddr=192.168.1.8(靜態ip位址)

netmask=255.255.255.0

gateway=192.168.1.1(閘道器)

hwaddr=00:0c:29:96:38:f8(修改mac位址)(永久有效)

我把檔案的內容進行了刪減,只留下

device=eth0

bootproto=dhcp

hwaddr=00:0c:29:96:38:f8(修改為提示資訊中指出的系統期望賦給eth0的mac)

onboot=yes

重啟linux後可以正常上網了。

linux網路啟動報錯

本來好好的虛擬機器突然有一天不能用了,真是傷心 正在開啟環迴介面 無法載入檔案 etc sysconfig network scripts ifcfg lo systemctl stop networkmanager 停止網路守護程序 systemctl disable networkmanager...

解決Linux下網路重啟報錯

虛擬機器裡的 centos 7 出於使用需求,需要再加一塊網絡卡。關閉虛擬機器,新增硬體,重啟。進入系統後預設就是啟動狀態,但是看了下系統檔案發現並沒有該網絡卡的配置檔案,於是手動寫了乙個。完成之後使用 systemctl restart network 結果報錯 job for network.s...

網路常見報錯

cannot assign requested address client頻繁連線server,每次都在很短時間內結束,產生大量time wait,導致埠耗盡,新的連線無法繫結埠,出現 cannot assign requested address 解決方案 sysctl write net.ip...