14 votes

renommer une interface réseau avec systemd

Je souhaite renommer sur Fedora 22 une interface réseau gérée par systemd-networkd (version 219) à partir du nom attribué par le système. enp2s0 en wan . Pour cela, j'ai créé le fichier suivant /etc/systemd/network/80-wan.link :

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

Cependant, cela n'a aucun effet sur le système. Après le redémarrage, le nom est toujours enp2s0 . Je vois avec udevadm que udev a récupéré le fichier de configuration mais a ignoré le nom fourni :

~> 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

Il n'y a pas non plus de mention du nouveau nom. wan dans les journaux, même après avoir activé la sortie de débogage d'udev. Qu'est-ce que je fais de mal ?

12voto

Tero Marttila Points 191

Au moins sur Debian stretch, il semble que vous ayez besoin de update-initramfs -u && reboot para *.link fichiers dans /etc/systemd/network/ pour prendre effet pour les interfaces existantes.

Il semble que les interfaces réseau soient renommées très tôt au cours du démarrage, à l'intérieur de l'initramfs, avant que la fonction *.link fichiers dans /etc/systemd/network sont disponibles... et une fois que l'interface a été renommée une fois ( /sys/class/net/*/name_assign_type=4 ), alors la udev-builtin-net_setup_link ne sera plus émettent ID_NET_NAME parce que should_rename renvoie à false .

6voto

mattdm Points 2638

Utilisez-vous systemd-networkd ? Je pense que le .link ne sont pertinents que si vous le faites (au lieu du NetworkManager par défaut ou des initscripts hérités). (J'admets que je n'ai pas encore regardé profondément dans ce domaine, cependant).

Je pense que ce que vous voulez est un .rules dans /etc/udev/rules.d quelque chose comme

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

(où mac-address est votre adresse MAC hexagonale réelle, bien sûr).

Ce dossier doit être commandé avant /usr/lib/udev/rules.d/80-net-setup-link.rules donc le documents en amont suggérer /etc/udev/rules.d/70-my-net-names.rules .

2voto

user412798 Points 11

Pour certaines mauvaises raisons, il semble que networkmanager ait la priorité sur networkd (qui pourrait imaginer cela ?). Vous pouvez tester cela comme suit :

  • systemctl stop NetworkManager
  • débrancher l'interface réseau
  • ip addr

Résultat : Les règles de /etc/systemd/network/*.link sont respectées.

Si vous démarrez NetworkManager et répétez le test, /etc/systemd/network/*.link n'est plus honoré. J'ai testé cela avec le MACAddressPolicy=random directive

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X