無法使用 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

相關內容