CentOS/RHEL 系統執行 service network start 报錯 Bringing up interface eth0: Device does not seem to be present, delaying initialization. [FAILED],核心原因是 **網卡配置文件中的 HWADDR 與實體網卡 MAC 地址不匹配**。常見於虛擬機克隆、網卡硬體更換、遷移雲主機等場景。
# service network restart
Bringing up loopback interface: [ OK ]
Bringing up interface eth0: Device does not seem to be present, delaying initialization. [FAILED]
/etc/sysconfig/network-scripts/ifcfg-eth0 內寫死 HWADDR=XX:XX:XX:XX:XX:XXeth0 → 啟動失敗
# ip link show eth0
# 或
# ifconfig -a | grep eth0 -A 1
# 輸出示例:
# eth0: flags=4163 mtu 1500
# ether 00:16:3e:f2:a0:9c txqueuelen 1000 (Ethernet)
# ↑ 這就是真實 MAC:00:16:3e:f2:a0:9c
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
HWADDR=00:16:3E:F2:A0:9C # ← 改為 Step 1 獲取的真實 MAC (大小寫不敏感)
# UUID=... 若存在建議同時刪除或更新
⚠️ 若為 DHCP,將 BOOTPROTO=dhcp 並刪除 IPADDR/NETMASK/GATEWAY。
# service network restart
# 或 systemctl restart network (CentOS 7+)
# 應輸出 [ OK ]
# ping 測試
ping -c 3 192.168.1.1
# 刪除 ifcfg-eth0 中的 HWADDR 與 UUID 行
# 內核將按總線順序自動命名 (eth0, eth1...),避免 MAC 綁定失敗
# 配合 systemd-networkd 或 NetworkManager 更穩健
# vi /etc/udev/rules.d/70-persistent-net.rules
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:16:3e:f2:a0:9c", NAME="eth0"
# 重載規則
udevadm control --reload-rules && udevadm trigger
ethernet0.addressType = "static" + ethernet0.address = "00:16:3e:f2:a0:9c"virsh edit vmname → <mac address='00:16:3e:f2:a0:9c'/>| 檢查項 | 命令 | 預期結果 |
|---|---|---|
| 網卡掛載 | ip link show eth0 | 狀態 UP、MAC 與配置一致 |
| IP 配置 | ip addr show eth0 | 顯示配置的靜態 IP |
| 路由表 | ip route | 含默認網關 |
| 連通性 | ping -c 3 gateway | 0% 丟包 |
| DNS | cat /etc/resolv.conf | 有效 nameserver |
ifconfig eth0 hw ether NEW_MAC 臨時修改 → 重啟失效ifcfg-eth0 到新機未改 MAC → 啟動失敗UUID 衝突 → NetworkManager 可能拒絕管理網卡啟動失敗 90% 是 HWADDR 與實體 MAC 不符;
ifconfig -a取真 MAC → 寫入ifcfg-eth0→service network restart即愈。
掌握 MAC 綁定修復,讓網路遷移/克隆/遷雲零阻礙。