Пост

Изменение 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.

Авторский пост защищен лицензией CC BY 4.0 .

© evdokimoff. Некоторые права защищены.

Использует тему Chirpy для Jekyll