无法使用 systemd-networkd 将 MAC 地址设置为 Tap 接口

无法使用 systemd-networkd 将 MAC 地址设置为 Tap 接口

我正在尝试将一些 Tap 接口设置从 迁移tunctlsystemd-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版本.netdev)它表示应该在 部分的文件中配置 MAC 地址[NETDEV]。 (我知道,在更高版本中,systemdMAC地址是在匹配.network文件中配置的,但事实并非如此)

答案1

去引用systemd.netdev(5):

用于设备的 MAC 地址。 [...] 目前“tun”或“tap”设备不支持此键。

根据systemd 提交 e0fbf1fcffe014d5af6767b29f9108c2f2444888,这是不可能的。从 systemd v215 开始,此限制没有提到在联机帮助页中,这是该版本中明显的文档错误。

答案2

您可以使用 ip 实用程序设置 tun/tap 接口 MAC 地址:

ip link set address {MAC_ADDR} dev {DEVICE}

事实上,在迁移到现代内核的情况下,建议使用iproute2而不是net-tools,因为它使用稀有ioctl而不是较新的netlink

相关内容