web-dev-qa-db-ja.com

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

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

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

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

~> 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についての言及はありません。私は何を間違っていますか?

9
Igor Bukanov

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

起動時にinitramfsから*.link内の/etc/systemd/networkファイルが利用可能になる前に、そしてインターフェースの名前が一度変更されたら(/sys/class/net/*/name_assign_type=4 )、その後、 udev-builtin-net_setup_link はなくなります emit ID_NET_NAMEbecauseshould_renamefalse を返します。

8
Tero Marttila

使っていますか systemd-networkd?私は思います .linkファイルは、(デフォルトのNetworkManagerまたはレガシーinitscriptsの代わりに)関係がある場合にのみ関連します。 (ただし、まだ詳しく調べていません。)

あなたが欲しいのは.rulesファイル/etc/udev/rules.d、 何かのようなもの

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

(どこ mac-addressはもちろん、実際の16進数のMACアドレスです。

このファイルは順序付けする必要がありますbefore/usr/lib/udev/rules.d/80-net-setup-link.rules、つまり pstream docs を提案/etc/udev/rules.d/70-my-net-names.rules

3
mattdm

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

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

結果:/etc/systemd/network/*.linkルールが受け入れられます

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

2
Anthony Hunt