Le nom de l'interface réseau change après la mise à jour vers 15.10 - modifications d'udev

46

J'ai mis à jour une machine virtuelle exécutant le serveur Ubuntu 15.04 vers la nouvelle version stable 15.10.

Aucun problème apparent, mais après le redémarrage, la machine a perdu sa connexion réseau. lspci a montré la bonne carte et lsmod a prouvé que le pilote avait été chargé.

Les astuces pour éditer ou supprimer /etc/udev/rules.d/70-persistent-net.rules n’ont pas réussi (toujours pas de réseau, pas de nouveau fichier), le fameux /lib/udev/write_net_rules n’existait même pas.

Je n'ai pas beaucoup d'indices concernant udev et systemd, il m'a donc fallu un certain temps pour trouver dans / sys / class / net que le nom de l'interface réseau a changé. Il est devenu ens32 , qui a été renommé en eth0 . Après avoir modifié /etc/network/interfaces , la communication réseau était à nouveau activée.

Mais - pourquoi cela se produit-il du tout? Et si cela se produit, le fichier d’interface ne devrait-il pas être mis à jour automatiquement?

Maintenant que j'ai supprimé la carte réseau virtuelle et en ai créé une autre, eth0 devient eno16777728 , ce qui est loin d'être sympa.

Ce comportement (au moins celui de la procédure de mise à niveau) doit-il être signalé en tant que bogue?

De plus, /etc/udev/rules.d/70-persistent-net.rules est-il obsolète maintenant? Et (bien que partiellement lié) qu'en est-il de /etc/udev/rules.d/70-persistent-cd.rules ?)

Modifier - question supplémentaire (après réponse acceptée) La dépendance de /etc/network/interfaces du nom de l'interface réelle m'a dérangé. J'ai essayé une nouvelle installation de * ubuntu sur une autre machine virtuelle. À ma grande surprise, /etc/network/interfaces contenait uniquement une référence au périphérique de bouclage. Cependant, avec ma machine virtuelle d'origine, cette modification a empêché le réseau de se déclencher. Alors, que dois-je changer d'autre?

Modifier Eh bien, à partir d'un autre test, j'ai trouvé qu'un nouveau Serveur Ubuntu contient la carte d'interface réseau dans /etc/network/interfaces , contrairement à XUbuntu. Peut-être utilise-t-il network-manager ou autre chose.

    
posée JeffRSon 23.10.2015 - 22:13
la source

6 réponses

49

Dans Ubuntu 15.10 (Wily Werewolf), commencer par systemd / udev affectera automatiquement des noms d'interface réseau prévisibles et stables pour toutes les interfaces Ethernet, Wlan et Wwan locales ( source ).

Les différents schémas de nommage suivants pour les interfaces réseau sont désormais pris en charge par udev en mode natif:

  1. Noms incorporant les numéros d’index fournis par le microprogramme / BIOS pour les périphériques intégrés (exemple: eno1 )
  2. Noms incorporant le micrologiciel / BIOS contenant les numéros d’index PCI Express hotplug (exemple: ens1 )
  3. Noms incorporant l'emplacement physique / géographique du connecteur du matériel (exemple: enp2s0 )
  4. Noms incorporant l'adresse MAC des interfaces (exemple: enx78e7d1ea46da )
  5. Attribution de noms éthiques natifs et imprévisibles au noyau (exemple: eth0 ) - obsolète

Par défaut, systemd nommera désormais les interfaces suivant la stratégie:

  1. si cette information du micrologiciel est applicable et disponible, revenir à
  2. si cette information du micrologiciel est applicable et disponible, revenir à
  3. si applicable, retombant à
  4. n'est pas utilisé par défaut, mais est disponible si l'utilisateur le souhaite.
  5. dans tous les autres cas.

Comment désactivez-vous cela?

Vous avez essentiellement les options suivantes:

  • Créez votre propre schéma de nommage manuel, par exemple en nommant vos interfaces internet0 ou lan0. Pour cela, créez votre propre fichier de règles udev et définissez la propriété name pour les périphériques. Veillez à le commander avant le fichier de stratégie par défaut, par exemple en le nommant /etc/udev/rules.d/70-my-net-names.rules
  • Modifiez le fichier de stratégie par défaut, pour choisir un schéma de dénomination différent, par exemple pour nommer tous les noms d'interface après leur adresse MAC par défaut: cp /lib/udev/rules.d/80-net-setup-link.rules /etc/udev/rules.d/80-net-setup-link.rules , puis modifiez le fichier et modifiez les lignes si nécessaire.
  • Passez le net.ifnames=0 sur la ligne de commande du noyau.
réponse donnée kyodake 24.10.2015 - 01:23
la source
34

La guide du débutant ArchWiki est plus simple.

Commencez par obtenir vos adresses MAC

$ ip link

Le spectacle de sortie par like

3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000     
          link/ether 20:68:9d:xx:xx:xx brd ff:ff:ff:ff:ff:ff

L’adresse MAC de votre appareil est la

20:68:9d:xx:xx:xx

Créez simplement le fichier (ouvrez simplement avec les droits sudo dans un éditeur de texte)

$ nano /etc/udev/rules.d/10-network.rules    

Ajouter la ligne suivante

SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="aa:bb:cc:dd:ee:ff", NAME="net1"

Remplacez le nom par le nom voulu et aa: bb: cc: dd: ee: ff avec l'adresse MAC de votre appareil.

Maintenant, redémarrez simplement votre ordinateur et le nom du périphérique doit avoir changé.

    
réponse donnée JonnyTischbein 27.10.2015 - 14:27
la source
14

Essayez ceci: Modifier votre /etc/default/grub . Changer la ligne de

GRUB_CMDLINE_LINUX=""

à

GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"

et enfin exécuter:

# update-grub

en tant que root et redémarrez votre système.

    
réponse donnée Dênio Robson 12.02.2016 - 02:15
la source
3

Je sais que cela peut être un peu tard et l'ajout de 10-network.rules semble avoir aidé, mais pas complètement. J'ai dû ajouter le nom du noyau de l'appareil à renommer. Voici comment j'ai fait fonctionner le fichier /etc/udev/rules.d/10-network.rules ...

SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="MAC:ADDRESS",KERNEL=="enp4s8", NAME="eth0"

et remplacez le KERNEL == "par ce que votre noyau nomme l’appareil lors de son démarrage.

HTH

K.C.

    
réponse donnée Keith Clinton 07.11.2015 - 03:15
la source
2

Si vous avez une nouvelle installation

apt-get remove biosdevname

Alors

update-initramfs -u

Vérifiez si vous avez le fichier udev net ruels. Si oui, retirez-le.

rm /etc/udev/rules.d/70-persistent-net.rules

Maintenant, éditez / etc / network / interfaces, renommez les interfaces en eth0, eth1, ... etc.

Redémarrer

    
réponse donnée R J 26.11.2015 - 10:41
la source
0

J'ai fait cela en créant un fichier:

[email protected]:~# cat /etc/udev/rules.d/70-persistent-net.rules
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth0", NAME="eth0"
    
réponse donnée Mikael Lepistö 19.08.2016 - 11:44
la source

Lire d'autres questions sur les étiquettes