我没有足够的信心去报告错误,但至少会有一些令人困惑/意想不到的结果。
在 Google 上搜索“ubuntu change mac”和“ubuntu change mac netplant”这两个主题的前 20-30 个结果,我发现了以下非常相似的尝试:
ip link set dev wlan0 down
ip link set dev wlan0 address 00:11:22:33:44:55
ip link set dev wlan0 up
或者
apt install net-tools
ifconfig wlan0 down
ifconfig wlan0 hw ether 00:11:22:33:44:55
ifconfig wlan0 up
或者
apt install macchanger
ip link set dev wlan0 down
macchanger --mac=00:11:22:33:44:55 wlan0
ip link set dev wlan0 up
以上所有操作似乎都会更改 wlan0 的 MAC 地址,并且根据我的 WiFi AP,注册的设备具有新的 MAC 地址 00:11:22:33:44:55,但 DHCP 服务器继续从 wlan0 的原始 MAC 地址接收请求。我以前从未见过这样的事情。进行一些简单的 ping 测试会导致连接大量中断,产生高达 50% 的数据包丢失。
看起来更好的方法(希望在重启之间保留更改)应该是编辑 /etc/netplan/50-cloud-init.yaml。它在这里:
network:
ethernets:
eth0:
dhcp4: true
optional: true
version: 2
wifis:
wlan0:
access-points:
"WiFi":
password: "12345678"
dhcp4: true
macaddress: 00:11:22:33:44:55
optional: true
然后做
netplan try
netplan generate
netplay apply
成功更改了接口的 MAC 地址,现在 AP 和 DHCP 服务器正在查看新的 MAC 地址。但再次出现大量数据包丢失。重启后,旧 MAC 地址仍在使用,我必须再次使用 netplay try|generate|apply 来获取新的 MAC 地址。
我的 netplan 配置有问题吗?或者 Raspberry Pi 4 B 驱动程序可能不允许更改 MAC?或者我应该使用不同的渲染器?
答案1
我放弃使用 netplan,并决定直接配置 systemd-networkd 渲染器。这里是解决方案。
vi /etc/systemd/network/00-default.link
[Match]
MACAddress=original MAC
[Link]
MACAddress=spoofed MAC
NamePolicy=kernel database onboard slot path