我正在尝试将一些 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版本.netdev
)它表示应该在 部分的文件中配置 MAC 地址[NETDEV]
。 (我知道,在更高版本中,systemd
MAC地址是在匹配.network
文件中配置的,但事实并非如此)
答案1
用于设备的 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
。