Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

VMware 遷移虛擬機導致 Debian/Ubuntu 網卡啟動失敗:MAC 地址不匹配解決方案

編輯:Linux 教學

現象


# 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 消失。

解決方案:更新 udev 規則檔

Debian / Ubuntu (舊版 ifupdown)

  1. 取得新 MAC:編輯虛擬機目錄 xxx.vmx,複製 ethernet0.generatedAddress = "00:0c:29:xx:xx:xx"
  2. 編輯客體 OS 規則檔:
    
    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"
        
  3. 重啟虛擬機或 udevadm trigger + systemctl restart networking

Ubuntu (Netplan, 17.10+)


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

systemd-networkd (通用)


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

預防措施:VMware 設定保留 MAC

  • 虛擬機設定 → 網路介面卡 → 進階 → 手動輸入 MAC 地址,填入原有 MAC (或固定自訂 MAC)。
  • 或勾選「保留 MAC 地址」(視 VMware 版本)。

其他發佈版對應檔案

發佈版規則檔路徑
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,可徹底根治。

Copyright © Windows教程網 All Rights Reserved