Я пытаюсь перенести некоторые настройки интерфейсов 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]
разделе. (Я знаю, в более поздних версиях systemd
MAC-адрес настраивается в соответствующих .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
.