克隆虛擬機或遷移磁碟後,原網卡 MAC 位址變更,udev 規則將新網卡命名為 eth1,而腳本/配置多寫死 eth0,導致網路不通。
vim /etc/udev/rules.d/70-persistent-net.rules
NAME="eth1" 改為 NAME="eth0"。mv /etc/sysconfig/network-scripts/ifcfg-eth1 /etc/sysconfig/network-scripts/ifcfg-eth0
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth1 改為 DEVICE=eth0。HWADDR 對應新 MAC(可選,若不寫 HWADDR 則由 udev 綁定)。ONBOOT=yes、BOOTPROTO、IPADDR 等參數正確。service network restart
# 或
reboot
ip addr show eth0
# 或
ifconfig eth0
應顯示 eth0 並擁有正確 IP。
CentOS 7 預設採用 ens33、eno1 等新命名規則。若仍想用 eth0,需:
vim /etc/default/grub,在 GRUB_CMDLINE_LINUX 追加 net.ifnames=0 biosdevname=0。grub2-mkconfig -o /boot/grub2/grub.cfg(BIOS)或 grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg(UEFI)。ifcfg-eth0、調整 udev 規則。| 現象 | 原因 | 解決 |
|---|---|---|
| 重啟後仍為 eth1 | udev 規則未生效或 MAC 不符 | 核對 70-persistent-net.rules MAC 位址,確認 udevadm trigger 或重啟 |
| 網路服務啟動失敗 | ifcfg-eth0 參數錯誤 | cat /var/log/messages 查看具體錯誤,修正 IP/NETMASK/GATEWAY |
| 雙網卡順序錯亂 | MAC 對應關係顛倒 | 在 udev 規則中明確指定 SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="xx:xx:xx:xx:xx:xx", NAME="eth0" |
核心邏輯:udev 規則決定核心命名 → ifcfg-eth0,並確保 MAC 位址對應正確,即可徹底解決克隆/遷移後的網卡命名問題。
Linux 新手必知的 10 大基礎觀念:從大小寫敏感到隱藏檔管理
Linux awk 內建函數大全:算術、字串、時間、I/O 與系統操作函數完整參考
安裝 Windows XP 後 Linux 無法啟動?修復 GRUB 引導的完整步驟
Linux平台「爛尾」專有軟體盤點:QQ、Foxit、Picasa、Google Desktop、EVE Online
Linux 終極實驗:執行 rm -rf / 後的「倖存者」與系統重建之路
Linux 核心架構概覽:用戶態/核心態/硬體層分工、代碼樹目錄結構與 Kconfig/Makefile 建置機制