PROJET AUTOBLOG


Planet-Libre

source: Planet-Libre

⇐ retour index

P3ter : Debian, Ubuntu : eth0 c'est fini

jeudi 25 août 2016 à 13:51

Mon serveur inaccessible par le web, après une migration d'Ubuntu 14.04 vers Ubuntu 16.04, j'ai redécouvert les joies du KVM d'OVH. Et oui, depuis Ubuntu 15.10 les interfaces réseau ne sont plus nommées de la même manière. eth0 est mort, vive enp3s0 !

Je l'ignorais au moment de mettre à jour ma version d'Ubuntu. Ca m'a valu une belle frayeur, au redémarrage du serveur, lorsque celui-ci n'était plus accessible via Internet. Me voila obligé de passer par le KVM d'OVH pour ouvrir une session directement sur la machine. Effectivement, plus aucune connexion réseau n'est active.


Un nouveau nom pour les interfaces réseaux

Je vérifie que le fichier /etc/network/interfaces est bien paramétré. Il l'est. Je lance un ifconfig, rien, aucune interface active (hormis lo). J'essaie ifconfig -a, espérant retrouver mon interface eth0 inactive, et je tombe sur une interface enp3s0.

Après quelques recherche sur le net, je découvre que depuis Ubuntu 15.10, le package udev 220-6ubuntu2 intègre une implémentation du Stateless Persistent Network Interface Names. Puis, avec le passage d'InitV à Systemd, les interfaces réseau sont automatiquement renommées selon cette nouvelle nomenclature.

Une simple modification dans le fichier /etc/network/interfaces (remplacement de eth0 par enp3s0) suivi d'un redémarrage du service réseau (sudo systemctl restart networking.service), m’a permis de retrouver ma connexion au réseau.


Stateless Persistent Net... quoi ?

En cherchant sur le net, je suis tombé sur un message de Martin Pitt, un développeur Debian et Ubuntu, sur la mailing list ubuntu-devel. Martin explique que depuis 2013, udev intègre trois solutions permettant de nommer les interfaces réseau. Depuis, une dizaine d'année c'est la solution appelée mac qui est utilisée. C'est à elle que l'on doit le fameux eth0. Selon Martin cette solution comporte plusieurs inconvénients :

C'est la qu'intervient la solution appelée ifnames. Implémentée dans udev dpeuis 2013, celle-ci permet de donner un nom persistant à un équipement, en se basant sur les informations fournis par le BIOS et/ou le firmware, tel que le numéro d'index, le nom du slot PCI, etc. Cette solution permet également de s'affranchir d'écrire dans un fichier les règles d'associations entre l'équipement physique et son nom (solution mac), ce qui a un fort intérêt pour la version mobile d'Ubuntu.

Ainsi, avec cette solution les noms ressemblent à enp3s0 pour une carte Ethernet, et wlp4s1 pour une carte WiFi. Il s'agit ici d'exemples, ces noms peuvent varier en fonction des machines, mais commenceront toujours de la même façon : "e" pour Ethernet" et "w" pour WiFi.

Cette solution sera également activée par défaut dans Debian 9 ("Stretch"), dont la date de sortie n'est pas encore définie.


Revenir à eth0

Si vous avez des scripts, des applis, des fichiers de conf, etc, qui s'appuient sur le nom "eth0" pour identifier votre interface réseau, afin de vous éviter de les modifier, il est possible de désactiver ifnames et de revenir à l'ancienne nomenclature. Pour cela, il faut :

  1. Récupérer son adresse MAC via la commande ifconfig
     
  2. Créer un fichier de règles : /etc/udev/rules.d/10-network.rules et y ajouter la ligne ci-dessous :
    SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="aa:bb:cc:dd:ee:ff", NAME="eth0"
    Remplacer la valeur du paramètre ATTR par l'adresse MAC récupérée précédemment
     
  3. Désactiver ifnames en éditant le fichier /etc/default/grub et en ajoutant la valeur ci-dessous au paramètre GRUBLINE_LINUX_DEFAULT
    net.ifnames=0
     
  4. Mettre à jour grub avec cette modification, en lançant la commande :
    sudo update-grub2
     
  5. Redémarrer

Il est bien sûr possible d'ajouter d'autres règles dans le fichier /etc/udev/rules.d/10-network.rules, par exemple, si vous avez plusieurs interfaces réseau, et bien entendu vous pouvez les nommer comme bon vous semble en modifiant le paramètre NAME=.

Photo par Clefty (sous licence CC BY-NC v2).


Un article à retrouver sur P3ter.fr

Gravatar de P3ter
Original post of P3ter.Votez pour ce billet sur Planet Libre.