Ich versuche, einige Tap-Schnittstellen-Setups von tunctl
nach zu migrieren systemd-networkd
. Ich verwende systemd Version 215-8. Ich habe also diese test.netdev
Datei:
[Match]
[NetDev]
Name=tap_test
Kind=tap
MACAddress=1:2:3:4:5:6
und eine test.network
Datei:
[Match]
Name=tap_test
[Network]
Description=tap interface
Address=1.2.3.4/24
Dies soll den Befehl ersetzen
ifconfig tap_test \
1.2.3.4 \
netmask 255.255.255.0 \
hw ether 1:2:3:4:5:6 up
das früher nach dem Befehl ausgeführt wurde tunctl
.
Das Ergebnis ist in Ordnung, abgesehen von der Tatsache, dass die MAC-Adresse nicht richtig konfiguriert wurde. In der Dokumentation von systemd (für Version 215.netdev
) heißt es, dass die MAC-Adresse in der Datei im Abschnitt konfiguriert werden soll [NETDEV]
. (Ich weiß, in späteren Versionen systemd
wird die MAC-Adresse in entsprechenden .network
Dateien konfiguriert, aber das ist nicht der Fall)
Antwort1
Zitierensystemd.netdev(5):
Die für das Gerät zu verwendende MAC-Adresse. [...] Dieser Schlüssel wird derzeit für „tun“- oder „tap“-Geräte nicht unterstützt.
Entsprechendsystemd commit e0fbf1fcffe014d5af6767b29f9108c2f2444888war dies nie möglich. Ab systemd v215 ist diese Einschränkungwird nicht erwähntin der Manpage, was offensichtlich ein Dokumentationsfehler in dieser Version war.
Antwort2
Sie können die MAC-Adresse der Tun/Tap-Schnittstelle mit dem IP-Dienstprogramm festlegen:
ip link set address {MAC_ADDR} dev {DEVICE}
Tatsächlich wird im Falle einer Migration auf moderne Kernel die Verwendung iproute2
anstelle von empfohlen net-tools
, da dabei „rare“ ioctl
anstelle von „newer“ verwendet wird netlink
.