我正在嘗試將一些 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
。