systemd でネットワークインターフェースの名前を変更する

systemd でネットワークインターフェースの名前を変更する

Fedora 22 で、systemd-networkd (バージョン 219) によって管理されるネットワーク インターフェイスの名前を、システム割り当て名から に変更したいと考えていますenp2s0wanそのために、次のファイルを作成しました/etc/systemd/network/80-wan.link

[Match]
MACAddress=mac-address
[Link]
Name=wan

ただし、システムには影響しません。再起動後も名前は のままです。udevは設定用のファイルを取得したが、指定された名前は無視したenp2s0ことがわかります。udevadm

~> udevadm info /sys/class/net/enp2s0 
P: /devices/pci0000:00/0000:00:1c.1/0000:02:00.0/net/enp2s0
E: DEVPATH=/devices/pci0000:00/0000:00:1c.1/0000:02:00.0/net/enp2s0
E: ID_BUS=pci
E: ID_MM_CANDIDATE=1
E: ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
E: ID_MODEL_ID=0x8168
E: ID_NET_DRIVER=r8169
E: ID_NET_LINK_FILE=/etc/systemd/network/80-wan.link
E: ID_NET_NAME_MAC=enxMacAddress
E: ID_NET_NAME_PATH=enp2s0
E: ID_OUI_FROM_DATABASE=Shuttle Inc.
E: ID_PATH=pci-0000:02:00.0
E: ID_PATH_TAG=pci-0000_02_00_0
E: ID_PCI_CLASS_FROM_DATABASE=Network controller
E: ID_PCI_SUBCLASS_FROM_DATABASE=Ethernet controller
E: ID_VENDOR_FROM_DATABASE=Realtek Semiconductor Co., Ltd.
E: ID_VENDOR_ID=0x10ec
E: IFINDEX=2
E: INTERFACE=enp2s0
E: SUBSYSTEM=net
E: SYSTEMD_ALIAS=/sys/subsystem/net/devices/enp2s0
E: TAGS=:systemd:
E: USEC_INITIALIZED=24183

また、udev デバッグ出力を有効にした後でも、どのログにも新しい名前は記載されませんwan。何が間違っているのでしょうか?

答え1

少なくとも Debian Stretch では、既存のインターフェースを有効にするには、ファイルupdate-initramfs -u && rebootを読み込む必要があるようです。*.link/etc/systemd/network/

*.linkネットワークインターフェースは、initramfs内のファイルが利用可能になる前に、起動時に非常に早い段階で名前が変更されるようです/etc/systemd/network...そしてインターフェースが一度名前変更されると(/sys/class/net/*/name_assign_type=4)、udev-builtin-net_setup_linkもう放出するID_NET_NAME なぜなら should_rename戻り値false

答え2

を使用していますかsystemd-networkd? 使用している場合にのみ、これらのファイルが関係すると思います.link(デフォルトの NetworkManager または従来の initscripts ではなく)。 (ただし、まだ詳しく調べていないことは認めます。)

必要なのは、次のような.rulesファイルだと思います。/etc/udev/rules.d

SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="mac-address", NAME="wan"

(mac-addressもちろん、実際の 16 進 MAC アドレスはどこにありますか)。

このファイルは注文が必要です前に /usr/lib/udev/rules.d/80-net-setup-link.rules、だからアップストリームドキュメント提案する/etc/udev/rules.d/70-my-net-names.rules

答え3

何らかの悪い理由により、networkmanager が networkd よりも優先されるようです (誰がそんなことを想像できたでしょうか?)。次のようにしてこれをテストできます。

  • systemctl stop NetworkManager
  • ネットワークインターフェースを外す
  • ip addr

結果: /etc/systemd/network/*.link ルールが尊重される

NetworkManagerを起動してテストを繰り返すと、/etc/systemd/network/*.linkは無視されます。私はこれを次のMACAddressPolicy=randomディレクティブでテストしました。

関連情報