Я не уверен, что могу сообщить об ошибке, но, по крайней мере, о некоторых запутанных/неожиданных результатах.
Погуглив первые 20-30 результатов по темам "ubuntu change mac" и "ubuntu change mac netplant", я пришел к следующим довольно похожим попыткам:
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
Похоже, что все вышесказанное изменило MAC-адрес wlan0, и в соответствии с моей точкой доступа WiFi AP зарегистрированное устройство имеет новый MAC-адрес 00:11:22:33:44:55, но DHCP-сервер продолжает получать запросы с оригинального MAC-адреса wlan0. Я никогда не видел ничего подобного. Выполнение некоторых простых 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-адрес интерфейса и теперь точка доступа и DHCP-сервер видят новый MAC-адрес. Но опять же происходит огромная потеря пакетов. И после перезагрузки старый MAC-адрес все еще используется, и снова я должен использовать netplay try|generate|apply, чтобы новый MAC-адрес был на месте.
Что-то не так с конфигурацией моего плана нетто? Или драйвер Raspberry Pi 4 B не позволяет изменять MAC? Или, может быть, мне стоит использовать другой рендер?
Я отказался от использования NetPlan, и я решил напрямую настроить SystemD-Networkd Renderer. здесь - это решение.
vi /etc/systemd/network/00-default.link
[Match]
MACAddress=original MAC
[Link]
MACAddress=spoofed MAC
NamePolicy=kernel database onboard slot path