systemd-networkd を使用してタップ インターフェースに MAC アドレスを設定できない

systemd-networkd を使用してタップ インターフェースに MAC アドレスを設定できない

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 アドレスを設定する必要があると書かれています。(後のバージョンではMAC アドレスが対応するファイルで設定されている[NETDEV]ことは知っていますが、そうではありません)systemd.network

答え1

引用するsystemd.netdev(5):

デバイスに使用する MAC アドレス。[...] このキーは現在、「tun」または「tap」デバイスではサポートされていません。

によるとsystemd コミット e0fbf1fcffe014d5af6767b29f9108c2f2444888これまでは不可能でした。systemd v215ではこの制限はなくなりました。言及されていないマニュアルページに記載されていましたが、これは明らかにそのバージョンのドキュメントのバグでした。

答え2

tun/tap インターフェースの MAC アドレスは、ip ユーティリティを使用して設定できます。

ip link set address {MAC_ADDR} dev {DEVICE}

実際、最新のカーネルに移行する場合は、iproute2の代わりにを使用することが推奨されます。これは、より新しい ではなくnet-toolsrare を使用するためです。ioctlnetlink

関連情報