Изменение MAC-адреса на Raspberry Pi
Изменение MAC-адреса на Raspberry Pi может потребоваться для решения проблем с сетью, тестирования сетевой инфраструктуры или обеспечения дополнительной конфиденциальности. В этом руководстве рассмотрены различные методы изменения MAC-адреса для проводного (eth0) и беспроводного (wlan0) интерфейсов.
Изменение MAC-адреса на Raspberry Pi
Описание/Введение
Изменение MAC-адреса на Raspberry Pi может потребоваться для решения проблем с сетью, тестирования сетевой инфраструктуры или обеспечения дополнительной конфиденциальности. В этом руководстве рассмотрены различные методы изменения MAC-адреса для проводного (eth0) и беспроводного (wlan0) интерфейсов.
Временное изменение MAC-адреса
Для временного изменения MAC-адреса, которое действует до перезагрузки, используйте команды ip link. Этот метод подходит для быстрого тестирования. Сначала определите имя сетевого интерфейса с помощью команды:
1
ip link show
Затем выполните следующие команды для изменения MAC-адреса. Для интерфейса eth0:
1
2
3
sudo ip link set dev eth0 down
sudo ip link set dev eth0 address XX:XX:XX:XX:XX:XX
sudo ip link set dev eth0 up
Для интерфейса wlan0:
1
2
3
sudo ip link set dev wlan0 down
sudo ip link set dev wlan0 address XX:XX:XX:XX:XX:XX
sudo ip link set dev wlan0 up
Проверьте изменение командой:
1
ip link show eth0
Постоянное изменение через systemd network
Для постоянного изменения MAC-адреса, которое сохраняется после перезагрузки, создайте файл конфигурации systemd. Этот метод рекомендуется для последних версий Raspberry Pi OS. Сначала узнайте текущий MAC-адрес:
1
ip link show eth0
Создайте файл конфигурации:
1
sudo nano /etc/systemd/network/00-eth0.link
Добавьте содержимое, заменив значения на актуальные:
1
2
3
4
5
6
7
[Match]
MACAddress=текущий_мак_адрес_eth0
Name=eth0
[Link]
MACAddress=новый_мак_адрес
NamePolicy=kernel database onboard slot path
Активируйте службу и перезагрузите:
1
2
sudo systemctl enable systemd-networkd
sudo reboot
Изменение через udev rules
Альтернативный метод использования правил udev также обеспечивает постоянное изменение. Создайте файл правила:
1
sudo nano /etc/udev/rules.d/70-mac-change.rules
Добавьте следующее содержание:
1
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="текущий_мак", NAME="eth0", RUN+="/usr/bin/ip link set dev eth0 address новый_мак"
Примените изменения и перезагрузите систему:
1
2
3
sudo udevadm control --reload-rules
sudo udevadm trigger
sudo reboot
Использование утилиты macchanger
Для удобного изменения MAC-адресов установите специализированную утилиту:
1
2
sudo apt update
sudo apt install macchanger
Используйте macchanger для установки случайного MAC-адреса:
1
sudo macchanger -r eth0
Или задайте конкретный MAC-адрес:
1
sudo macchanger -m XX:XX:XX:XX:XX:XX eth0
Типичные проблемы и решения
Проблема: Изменения в /etc/dhcpcd.conf не влияют на MAC-адрес Решение: Опция env clientid в dhcpcd.conf не изменяет физический MAC-адрес, а только влияет на DHCP client identifier. Используйте методы через systemd network или udev rules.
Проблема: MAC-адрес сбрасывается после перезагрузки Решение: Временные методы через ip link действуют только до перезагрузки. Для постоянного изменения используйте systemd network или udev rules.
Проблема: Сетевой интерфейс не поднимается после изменения MAC Решение: Проверьте корректность формата MAC-адреса и убедитесь, что используете локально-администрируемый адрес (второй бит первого октета должен быть 1).
Проблема: Не применяются изменения через systemd network Решение: Убедитесь, что служба systemd-networkd включена и активна:
1
sudo systemctl status systemd-networkd
Для генерации корректного локально-администрируемого MAC-адреса используйте:
1
printf '02:%02x:%02x:%02x:%02x:%02x\n' $((RANDOM%256)) $((RANDOM%256)) $((RANDOM%256)) $((RANDOM%256)) $((RANDOM%256))
Все представленные методы проверены на актуальных версиях Raspberry Pi OS и используют современные пути конфигурации. Для большинства случаев рекомендуется метод через systemd network как наиболее надежный и соответствующий современным стандартам управления сетью в Raspberry Pi OS.