# ifup eth0
SIOCSIFADDR: No such device
eth0: ERROR while getting interface flags: No such device
dmesg | grep eth 顯示核心偵測到新網卡 (如 eth1),但 /etc/network/interfaces 仍設定 eth0。
VMware 遷移/複製虛擬機時,.vmx 設定檔的 ethernet0.generatedAddress (MAC) 會重新產生。客體 OS (Debian/Ubuntu) 透過 udev 將網卡介面名稱綁定 MAC,舊 MAC 對應 eth0,新 MAC 核心命名為 eth1,導致 eth0 消失。
xxx.vmx,複製 ethernet0.generatedAddress = "00:0c:29:xx:xx:xx"
vi /etc/udev/rules.d/70-persistent-net.rules
# 找到舊 MAC 行,替換為新 MAC
# SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:xx:xx:xx", NAME="eth0"
udevadm trigger + systemctl restart networking
vi /etc/netplan/01-netcfg.yaml
network:
version: 2
renderer: networkd
ethernets:
eth0:
match:
macaddress: "00:0c:29:xx:xx:xx" # 新 MAC
dhcp4: true
# netplan apply
vi /etc/systemd/network/10-eth0.link
[Match]
MACAddress=00:0c:29:xx:xx:xx
[Link]
Name=eth0
# systemd-udevd --reload && systemctl restart systemd-networkd
| 發佈版 | 規則檔路徑 |
|---|---|
| RHEL/CentOS 6/7 | /etc/udev/rules.d/70-persistent-net.rules |
| RHEL/CentOS 8/9 (NetworkManager) | /etc/NetworkManager/system-connections/ (以 UUID 綁定,較少發生) |
| openSUSE | /etc/udev/rules.d/70-persistent-net.rules |
| Arch Linux | /etc/udev/rules.d/10-network.rules 或 systemd-link |
虛擬機遷移後網卡消失,核心原因是 MAC 地址變更導致 udev 重新命名。掌握「取得新 MAC → 更新對應發佈版規則檔 → 重啟網路」三步曲,並預先在 VMware 固定 MAC,可徹底根治。