萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 電腦基礎知識 >  >> 電腦基本常識

VMware 虛擬機修改 Linux MAC 位址三大法:vmx 設定、系統配置檔、rc.local 腳本

在 VMware Workstation/Fusion/Player 中運行 Linux 虛擬機,因授權綁定、網路衝突、測試需求等原因需修改 MAC 位址。本文提供三種層級不同的修改方案,按推薦程度排序。

方法一:修改 .vmx 設定檔 (最底層、最乾淨、推薦首選)

關閉虛擬機 → 用文字編輯器開啟 虛擬機名稱.vmx → 依下列兩種模式二擇一修改 → 儲存 → 開機。

情況 A:靜態 MAC (addressType = "static")

ethernet0.addressType = "static"
ethernet0.address = "00:50:56:0A:0B:0C"   # 必須以 00:50:56 開頭 (VMware OUI)
# 開機若詢問 UUID 衝突,選擇 "Keep Always" (保留此 MAC)

優點:相當於在虛擬網卡 ROM 燒錄新 MAC,Linux 核心啟動即識別為永久硬體地址,無需任何系統層面設定。

情況 B:自動產生 MAC (addressType = "generated")

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"   # 後 6 碼可自訂,前綴 00:0C:29 為 VMware OUI
# 修改 uuid.bios 最後 6 位元組與 generatedAddress 最後 6 位元組為相同值,可固定產出特定 MAC

優點:符合 VMware 自動產生邏輯,避免 UUID 衝突提示。

方法二:修改 Linux 系統網路腳本 (/etc/sysconfig/network-scripts/ifcfg-eth0) (RedHat/CentOS/Fedora/RHEL 系)

vi /etc/sysconfig/network-scripts/ifcfg-eth0
# 新增/修改行
MACADDR=00:0C:29:AA:BB:CC   # 目標 MAC
# 若有 HWADDR 行,建議同步修改或註解掉
# HWADDR=00:0C:29:AA:BB:CC
:wq
reboot

適用:基於 RedHat 的發行版。Debian/Ubuntu 系請見方法三。

方法三:修改 rc.local 或 systemd 服務 (通用 Linux、開機自動套用)

傳統 rc.local 法 (需啟用 rc-local 服務)

vi /etc/rc.local
# 在 exit 0 前加入
ifconfig eth0 down
ifconfig eth0 hw ether 00:0C:29:AA:BB:CC
ifconfig eth0 up
# 或使用 ip 指令 (現代)
ip link set dev eth0 down
ip link set dev eth0 address 00:0C:29:AA:BB:CC
ip link set dev eth0 up
# 確保 rc.local 有執行權限
chmod +x /etc/rc.local
systemctl enable rc-local
systemctl start rc-local

Systemd 服務法 (現代、穩健)

# 建立服務單元
cat > /etc/systemd/system/macspoof@.service <<'EOF'
[Unit]
Description=MAC address change for %i
Before=network-pre.target
Wants=network-pre.target

[Service]
Type=oneshot
ExecStart=/sbin/ip link set dev %i down
ExecStart=/sbin/ip link set dev %i address 00:0C:29:AA:BB:CC
ExecStart=/sbin/ip link set dev %i up

[Install]
WantedBy=network-pre.target
EOF

# 啟用 (以 eth0 為例)
systemctl enable macspoof@eth0
systemctl start macspoof@eth0

方法四:NetworkManager 永久修改 (桌面版 Ubuntu/Fedora/RHEL 8+ 適用)

# 圖形介面:設定 → 網路 → 選擇連線 → 齒輪圖示 → 身分識別 → MAC 位址 → 輸入 → 套用
# 命令列:
nmcli connection modify "Wired connection 1" 802-3-ethernet.cloned-mac-address 00:0C:29:AA:BB:CC
nmcli connection up "Wired connection 1"

驗證與注意事項

  • 驗證:ip link show eth0 / ifconfig eth0 → 確認 link/ether 為目標 MAC。
  • MAC 位址格式:00:0C:29:XX:XX:XX (VMware OUI) 或 00:50:56:XX:XX:XX,其他廠商 OUI 可能導致 VMware 網路橋接/NAT 异常。
  • 橋接模式下,修改後需在宿主機網路介面重新獲取 DHCP 或重設靜態 IP。
  • 授權綁定 MAC 的軟體 (如某些防火牆、資料庫) 需同步更新授權檔。

建議優先採用 方法一 (.vmx),一次設定、永久生效、跨作業系統可攜,最符合基礎設施即代碼 (IaC) 精神。

copyright © 萬盛學電腦網 all rights reserved