Невозможно установить MAC-адрес для интерфейса TAP с помощью systemd-networkd

Невозможно установить MAC-адрес для интерфейса TAP с помощью systemd-networkd

Я пытаюсь перенести некоторые настройки интерфейсов tap из tunctlв systemd-networkd. Я использую systemd версии 215-8. Итак, у меня есть этот test.netdevфайл:

[Match]

[NetDev]
Name=tap_test
Kind=tap
MACAddress=1:2:3:4:5:6

и test.networkфайл:

[Match]
Name=tap_test

[Network]
Description=tap interface
Address=1.2.3.4/24

Это предполагает замену команды

ifconfig tap_test \
1.2.3.4 \
netmask  255.255.255.0 \
hw ether 1:2:3:4:5:6 up

который раньше запускался после tunctlкоманды.

Результат отличный, за исключением того, что MAC-адрес был настроен неправильно. В документации systemd (для версии 215) там написано, что MAC-адрес должен быть настроен в .netdevфайле в [NETDEV]разделе. (Я знаю, в более поздних версиях systemdMAC-адрес настраивается в соответствующих .networkфайлах, но это не так)

решение1

Цитироватьsystemd.netdev(5):

MAC-адрес, который следует использовать для устройства. [...] Этот ключ в настоящее время не поддерживается для устройств «tun» или «tap».

В соответствии сsystemd фиксирует e0fbf1fcffe014d5af6767b29f9108c2f2444888, это никогда не было возможно. Начиная с systemd v215, это ограничениене упоминаетсяв странице руководства, что было явной ошибкой документации в той версии.

решение2

Вы можете установить MAC-адрес интерфейса tun/tap с помощью утилиты ip:

ip link set address {MAC_ADDR} dev {DEVICE}

Действительно, в случае перехода на современные ядра предлагается использовать iproute2вместо net-tools, поскольку он использует rare ioctlвместо newer netlink.

Связанный контент