nmcli 配置物理网卡 mac 随机化需通过 networkmanager 的 cloned-mac-address 机制实现,支持全局或单连接设置 random/stable 模式,并须确保网卡由 networkmanager 管理且配置无冲突。

nmcli 配置物理网卡 MAC 随机化,核心是启用 NetworkManager 的克隆 MAC 机制,让每次连接使用新 MAC 或稳定假 MAC,从而削弱局域网中基于 MAC 的长期追踪与嗅探关联能力。这不是临时改地址,而是让系统在连接建立阶段自动干预,配合 DHCP、ARP 行为变化,降低设备可识别性。
确认网卡由 NetworkManager 管理
只有受 NetworkManager 控制的有线网卡才能通过 nmcli 生效:
- 运行 nmcli device status,检查目标接口(如 enp0s3、eth0)状态是否为 connected 或 disconnected
- 若显示 unmanaged,说明被 systemd-networkd、netplan 或 ifupdown 接管,需先停用对应服务并重启 NetworkManager
- 临时验证:执行 sudo systemctl restart NetworkManager 后再查状态
全局启用有线网卡 MAC 随机化
适用于所有有线连接,统一控制最稳妥:
- 创建配置文件:sudo nano /etc/NetworkManager/conf.d/00-mac-randomize.conf
- 填入以下内容(注意缩进和大小写):
[device]
wifi.scan-rand-mac-address=yes
[connection]
ethernet.cloned-mac-address=random
wifi.cloned-mac-address=stable
connection.stable-id=${CONNECTION}/${BOOT}
- ethernet.cloned-mac-address=random:每次有线连接激活都生成全新随机 MAC(防长期追踪)
- 若需保持同一网络下 MAC 稳定(利于 DHCP 续租),可改为 stable
- 保存后执行 sudo systemctl reload NetworkManager
对单个有线连接单独设置
适合只对特定网络(如办公网)启用,不影响其他连接:
- 列出连接名:nmcli connection show
- 设为随机模式:nmcli connection modify "Wired connection 1" ethernet.cloned-mac-address random
- 禁用还原真实 MAC:nmcli connection modify "Wired connection 1" ethernet.mac-address ""(留空即可)
- 重启连接生效:nmcli connection down "Wired connection 1" && nmcli connection up "Wired connection 1"
验证是否真正生效
避免配置被覆盖或未触发:
- 连接后立即运行:ip link show eth0 | grep ether(替换 eth0 为实际接口)
- 断开再重连,对比两次输出是否不同(random 模式下应变化)
- 若仍显示原始 MAC,检查是否有冲突配置:grep -r "mac-address\|cloned-mac" /etc/NetworkManager/system-connections/
- 也可查看连接详情:nmcli connection show "Wired connection 1" | grep -i mac











