MAC 地址作為網卡唯一標識,在虛擬機克隆、網絡隔離、軟件授權綁定等場景需修改。本文對比三種修改方法,推薦通過 .vmx 文件從虛擬硬件層面修改,效果等同「重新燒錄網卡 ROM」。
| 方法 | 層級 | 持久性 | 推薦指數 | 適用場景 |
|---|---|---|---|---|
| 修改 .vmx 文件 | 虛擬硬件 | ✅ 永久、遷移保持 | ⭐⭐⭐⭐⭐ | 克隆後、模板化、授權綁定 |
| 修改客戶機網絡腳本 | 作業系統 | ⚠️ 重啟後可能失效 | ⭐⭐ | 臨時測試、無宿主機權限 |
| 修改 rc.local 啟動腳本 | 作業系統 | ⚠️ 依賴腳本執行順序 | ⭐⭐ | 無宿主機權限、快速驗證 |
關閉虛擬機,編輯 vmname.vmx:
ethernet0.addressType = "static"
ethernet0.address = "00:50:56:0A:0B:0C"
# 00:50:56 為 VMware OUI 前綴,後綴自定義
# 啟動時提示 UUID 衝突選擇 "Keep Always"
ethernet0.addressType = "generated"
uuid.location = "56 4d dc f1 ff aa 75 ea-f1 b9 ee 0d 68 9c 65 5c"
uuid.bios = "56 4d ed 23 13 8c 96 91-7c 68 b2 09 8b aa bb cc"
ethernet0.generatedAddress = "00:0C:29:AA:BB:CC"
# 修改 uuid.bios 最後 6 字節 + generatedAddress 最後 6 字節
# 保持一致,前綴 00:0C:29 為 VMware OUI
vim /etc/sysconfig/network-scripts/ifcfg-eth0
# 添加/修改
MACADDR=00:0C:29:AA:BB:CC
# 重啟網絡或重啟系統
systemctl restart network
# 或
reboot
vim /etc/rc.local
# 添加在 exit 0 之前
ip link set dev eth0 down
ip link set dev eth0 address 00:0C:29:AA:BB:CC
ip link set dev eth0 up
# 賦權
chmod +x /etc/rc.local
# 查看當前 MAC
ip link show eth0
# 或
cat /sys/class/net/eth0/address
# 修改 .vmx 後需完全關機 (非重啟) 再開機
# 宿主機操作:虛擬機 → 電源 → 關機 → 開機
00:50:56、00:0C:29、00:1C:14XX:XX:XX:XX:XX:XX (十六進制,冒號分隔)/etc/udev/rules.d/70-persistent-net.rules 是否自動更新#!/bin/bash
# batch_change_mac.sh
VMX_FILE="$1"
NEW_MAC="$2" # 格式: 00:0C:29:AA:BB:CC
if [ ! -f "$VMX_FILE" ]; then
echo "VMX file not found"
exit 1
fi
# 靜態 MAC 模式
sed -i 's/ethernet0.addressType = ".*"/ethernet0.addressType = "static"/' "$VMX_FILE"
sed -i "s/ethernet0.address = \".*\"/ethernet0.address = \"$NEW_MAC\"/" "$VMX_FILE"
echo "Updated $VMX_FILE with MAC $NEW_MAC"
echo "Power off/on VM to take effect"
掌握 .vmx 修改法,從虛擬硬件層面徹底解決 MAC 地址管理需求。
Linux 系統版本與核心版本查看指令大全(適用 RedHat、Debian、SUSE 等)
CentOS 5.5 无法识别 Atheros AR8151 网卡:下载编译 atl1e 驱动解决
Linux 執行程式提示 error while loading shared libraries 解決方案
Debian 系統網絡配置全指南:靜態 IP、網關、DNS、持久化
Linux which 指令完整用法:尋找可執行檔路徑、繞過 alias、判斷內建指令
Linux 前景/背景程序切換實戰:&、jobs、fg、bg、nohup 與 disown 完整指南