web-dev-qa-db-fra.com

renommer une interface réseau dans Ubuntu 16.04 avec systemd échoue

J'utilise un serveur sans tête Ubuntu 16.04 LTS avec deux cartes réseau physiques, nommées enp5s0f0 et enp5s0f1.

Je voudrais renommer ces interfaces, et suivi cet exemple . J'ai donc créé le fichier /lib/systemd/network/70-myinterface.link (la source d'origine ne semble pas fonctionner) comme ceci (j'ai défini l'adresse MAC correcte):

[Match]
MACAddress=12:34:56:78:9a:bc

[Link]
Name=dmz0

et redémarré le serveur. Malheureusement, l'interface n'a pas été renommée, même si udevadm indique que mon fichier de configuration est utilisé:

$ udevadm info /sys/class/net/enp5s0f1
P: /devices/pci0000:00/0000:00:02.0/0000:01:00.0/0000:02:02.0/0000:05:00.1/net/enp5s0f1
E: DEVPATH=/devices/pci0000:00/0000:00:02.0/0000:01:00.0/0000:02:02.0/0000:05:00.1/net/enp5s0f1
E: ID_BUS=pci
E: ID_MODEL_FROM_DATABASE=80003ES2LAN Gigabit Ethernet Controller (Copper)
E: ID_MODEL_ID=0x1096
E: ID_NET_DRIVER=e1000e
E: ID_NET_LINK_FILE=/lib/systemd/network/70-myinterface.link  <-- my file
E: ID_NET_NAME_MAC=enx123456789abc
E: ID_NET_NAME_PATH=enp5s0f1
E: ID_OUI_FROM_DATABASE=Intel Corporation
E: ID_PATH=pci-0000:05:00.1
E: ID_PATH_TAG=pci-0000_05_00_1
E: ID_PCI_CLASS_FROM_DATABASE=Network controller
E: ID_PCI_SUBCLASS_FROM_DATABASE=Ethernet controller
E: ID_VENDOR_FROM_DATABASE=Intel Corporation
E: ID_VENDOR_ID=0x8086
E: IFINDEX=3
E: INTERFACE=enp5s0f1
E: SUBSYSTEM=net
E: SYSTEMD_ALIAS=/sys/subsystem/net/devices/enp5s0f1
E: TAGS=:systemd:
E: USEC_INITIALIZED=1900192

Avez-vous une idée pourquoi le changement de nom n'a pas fonctionné?

13
muffel

Cela peut ou ne peut pas aider .. Je vérifierais /etc/udev/rules.d et verrais si vous avez 70-persistent-net.rules. Vous devriez pouvoir les renommer en utilisant ce fichier

Le mien ressemble à ceci:

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="e0:cb:ee:d7:ff:9a", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

Si vous avez les entrées pour vos cartes dans ce fichier, vous pouvez changer le nom comme vous le souhaitez en changeant le "NOM = TheNameYouWant"

6
John Orion
  • Les trois méthodes de dénomination personnalisées, expliquées systemd: noms d'interface réseau prévisibles , sont liées aux règles udev.

    les règles de systemd .link & udev ont une priorité de dossier. /etc remplace /run remplace /lib.

    Alors vérifiez la configuration actuelle.

    # links
    ls -l /*/systemd/network/
    
    # rule that read links
    ls -l /*/udev/rules.d/80-net-setup-link.rules
    
    # rule that check for /etc/.../80-net-setup-link.rules & net.ifnames
    ls -l /*/udev/rules.d/73-usb-net-by-mac.rules
    

    Après toute modification de ces règles udev (ajout/suppression de fichiers de substitution) pour être effective, le disque de démarrage RAM doit être mis à jour:

    Sudo update-initramfs -u
    

    Par défaut, ce sont les seuls fichiers que vous pouvez trouver

    ~$ ls -l /*/systemd/network/
    /etc/systemd/network/:
    total 0
    
    /lib/systemd/network/:
    total 12
    -rw-r--r-- 1 root root 404 Jul 12 17:28 80-container-Host0.network ##(virtual-interface)
    -rw-r--r-- 1 root root 482 Jul 12 17:28 80-container-ve.network ##(virtual-interface)
    -rw-r--r-- 1 root root  80 Jul 12 17:28 99-default.link
    
    
    ~$ ls -l /*/udev/rules.d/80-net-setup-link.rules
    -rw-r--r-- 1 root root 292 Jul 12 17:28 /lib/udev/rules.d/80-net-setup-link.rules
    
    ~$ ls -l /*/udev/rules.d/73-usb-net-by-mac.rules
    -rw-r--r-- 1 root root 551 Jul 12 16:37 /lib/udev/rules.d/73-usb-net-by-mac.rules
    

    Je les ai tous testés dans VBox fresh 16.04 installer comme indiqué dans le lien ci-dessous, toutes les méthodes fonctionnent comme prévu:

    Noms d'interface compliquée Ubuntu 16.04

  • /etc/udev/rules.d/70-persistent-net-rules est d'anciennes versions remplacées par celles de systemd (mais elles ne sont pas créées automatiquement), je l'ai ajouté ici pour vérifier son existence pour des problèmes spécifiques, mais pas pour le cas de AnttiHaapala .

3
user.dz

Une option qui ne nécessite pas de règles udev (une alternative aux fichiers .link systemd-networkd) qui fonctionne avec Ubuntu 16.04 ainsi que de nombreuses autres versions de Linux est

Exemple:

ifconfig peth0 down  
ip link set peth0 name eth0  
ifconfig eth0 up 

Dans l'exemple ci-dessus, peth0 correspond au nom de l'interface d'origine et eth0 au nom souhaité. Branchez le nom que vous avez actuellement où peth0 est et le nom que vous voulez où eth0 est. Aucun redémarrage n'est requis ou suggéré. Répétez le processus pour la deuxième carte d'interface

Testé sur Ubuntu 16.04 avec le noyau 4.4.0-36-generic # 55-Ubuntu

Edit: Si vous recherchez une solution persistante qui survit au redémarrage, voir Modification du nom des interfaces réseau Ubuntu 16.04

Sources: https://www.freedesktop.org/software/systemd/man/systemd.link.html

http://kernelpanik.net/rename-a-linux-network-interface-without-udev/

Essai.

Remarque: étant donné que la méthode @ antti-haapala fonctionnait auparavant et que vous vous êtes soudainement arrêtée, sachez que "Dans ce cas particulier, un fichier vide (taille du fichier 0) ou un lien symbolique portant le même nom et pointant vers/dev/null désactive le fichier de configuration. entièrement (il est "masqué") ". <- Source

3
Elder Geek

Vous devez mettre à jour votre initrd avec quelque chose comme update-initramfs -k all -c, car udev applique déjà ces configurations lors de l'exécution de initrd.

Ubuntu 16.04 n'a plus le fichier 70-persistent-net-rules.

1
Jani Jaakkola

Je n'ai pas assez de réputation pour commenter, mais juste pour ajouter à la réponse marquée, les installations propres d'Ubuntu 16.04 n'auront pas le fichier /etc/udev/rules.d/70-persistent-net.rules. Toutefois, si vous le créez manuellement, vous pouvez ajouter une ligne comme indiqué dans la réponse ci-dessous. Elle devrait fonctionner comme dans les versions antérieures, à une différence notable: le paramètre KERNEL doit être spécifié comme nom attribué à la interface par défaut. Par exemple, si le système a nommé l'interface comme "ens160" et que vous souhaitez la remplacer par "eth0", la ligne pourrait ressembler à ceci:

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="xx:xx:xx:xx:xx:xx", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="ens160", NAME="eth0"

Cela indique à la règle de ne correspondre que sur une interface correspondant au MAC spécifié (dans le paramètre ATTR {adresse}) et à un nom de noyau correspondant au paramètre KERNEL. Sinon, vous pouvez probablement omettre le paramètre KERNEL et cela devrait également fonctionner.

EDIT: Et comme déjà mentionné, si vous voulez utiliser la méthode du fichier .link, vous devrez mettre à jour initramfs pour que cela prenne effet. Notez également que le fichier .link personnalisé doit être créé dans/etc/systemd/network et non dans/lib/systemd/network (cela fonctionnera mais la meilleure pratique consiste à utiliser/etc/systemd/network car c’est sa raison d'être. autoriser les fichiers .link personnalisés qui remplacent les valeurs par défaut dans/lib/systemd/network).

0
dwillis77