Comment puis-je remplacer le périphérique réseau par défaut «ens33» par l'ancien «eth0» sur Fedora 19?

22

Je viens d'installer un Fedora 19 sur la station de travail VMware 9. Le périphérique réseau par défaut est "ens33" au lieu de "eth0" sur RHEL.

La raison pour laquelle je dois utiliser "eth0" est que le composant de licence de l'un de nos produits doit être lié à "eth0".

Il y a quelques articles discutant de problèmes similaires, dont la plupart concernent des systèmes d'exploitation plus anciens. Je n'en ai pas trouvé qui correspond exactement à ma situation.

YM Jiang
la source
Fedora 19 est significativement différent de RHEL 5.5 car dans la question, il s'agissait d'un doublon , et la réponse n'est pas la même.
mattdm

Réponses:

31

La façon la plus simple de restaurer l'ancien noyau / modules / udev pour renommer vos interfaces Ethernet est de fournir ces paramètres de noyau à Fedora 19 :

  1. net.ifnames = 0
  2. biosdevname = 0

Pour ce faire, procédez comme suit:

  1. Modifier / etc / default / grub
  2. À la fin de la ligne GRUB_CMDLINE_LINUX , ajoutez " net.ifnames = 0 biosdevname = 0 "
  3. Sauvegardez le fichier
  4. Tapez " grub2-mkconfig -o /boot/grub2/grub.cfg "
  5. Tapez " redémarrer "

Si vous n'avez pas fourni ces paramètres pendant l'installation, vous devrez probablement ajuster et / ou renommer les fichiers d'interface dans / etc / sysconfig / network-scripts / ifcfg- * .

Jusqu'à Fedora 18 , juste biosdevname = 0 était suffisant.

À titre d'exemple, dans une certaine machine, dans une recherche exhaustive, j'ai obtenu:

-Aucun paramètre: NIC identifié comme " enp5s2 ".
-Parameter biosdevname = 0: NIC identifié comme " enp5s2 ".
-Parameter net.ifnames = 0: NIC identifié comme " em1 ".
-Parameter net.ifnames = 0 AND biosdevname = 0: NIC identifié comme " eth0 ".

Guilsson
la source
Merci beaucoup pour les étapes détaillées! Tout ce que MathWorks me fournissait concernait des versions beaucoup plus anciennes de Fedora.
Dr Watson
@ dr-watson: Jusqu'à Fedora 14, ethX était le nom par défaut pour les interfaces Ethernet. Dans Fedora 15, la dénomination cohérente des périphériques réseau a été implémentée. De Fedora 15 à 18, juste biosdevname = 0 était suffisant pour conserver le nom ethX. Je vous en prie.
Guilsson
3
Cette solution fonctionne également sur Fedora 20. Merci.
heuristicus
A également travaillé sur Fedora 21
Eric Grunzke
ubuntu 14.04 également.
sjas
9

Vous pouvez le faire en utilisant une règle udev, comme ceci:

cat > /etc/udev/rules.d/99-rename-to-eth0.rules << EOF
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="$(cat /sys/class/net/ens33/address)", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
EOF
Chris Down
la source
Merci pour l'exemple. Pour d'autres, il convient de noter que le /sys/class/net/ens33peut être différent selon les valeurs renvoyées par le bios et trouvées dans la sortie de lspci -vv | grep -A25 Ethernet. De plus, si l'intention est d'utiliser eth0comme nom, il peut être plus approprié de simplement spécifier les indicateurs de démarrage du noyau pour désactiver la dénomination "prévisible" du périphérique.
Mark Edington
7

Dans Fedora 20, les choses semblent avoir changé un peu plus.

1) Arguments du noyau grub
Oui, "net.ifnames = 0" et "biodevame = 0" semblent nécessaires.

2) / etc / sysconfig / network-scripts / ifcfg-ethX
Oui, ils sont également nécessaires.

3) /etc/udev/rules.d/60-net.rules
Si vous avez plusieurs interfaces et que vous souhaitez contrôler le nommage de chaque périphérique plutôt que de laisser le noyau faire à sa manière, /etc/udev/rules.d/60 -net.rules semble nécessaire pour remplacer /usr/lib/udev/rules.d/60-net.rules comme suit.

# PCI device 0x1011:0x0019 (tulip) {SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:c0:f0:4c:f5:78", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

# PCI device 0x10ec:0x8168 (r8169) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="60:a4:4c:b5:26:48", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

4) yum remove biosdevnamesemble inutile.

hiro
la source
1
Merci d'avoir décomposé les différents facteurs. Il semble que vous ayez une faute de frappe dans le point # 1, devrait être "biosdevname" et non "biodevame".
Mark Edington
2

Ceci est différent dans Fedora 19 que dans les versions précédentes. Il y a deux choses à aborder:

  1. Supprimez biosdevname s'il est installé. ( yum remove biosdevname, ou mettez -biosdevnamevotre kickstart.
  2. Désactivez la règle udev: ln -s /dev/null /etc/udev/rules.d/80-net-name-slot.rules

Plus d'informations peuvent être trouvées à http://fedoraproject.org/wiki/Features/SystemdPredictableNetworkInterfaceNames

mattdm
la source
2

Bien que la réponse acceptée fournisse une solution qui fonctionne, elle n'explique pas pourquoi elle ens33est utilisée. Les liens ci-dessous expliquent pourquoi le périphérique réseau est nommé autrement que eth0et comment il est désormais nommé dans les variantes RHEL 7:

Il convient également de noter que les valeurs telles que "33" qui apparaissent ens33proviennent de la valeur de l'emplacement de l'adaptateur PCI renvoyée par le BIOS. Utilisez cette commande pour voir quelles valeurs votre système a répertoriées pour "Emplacement physique":

lspci -vv | grep -A20 Ethernet

Des informations supplémentaires sur la partie "ens" du nom peuvent être trouvées dans le code source udev .

Mark Edington
la source
1

Pour Fedora-24:

  1. modifier /etc/default/grub

  2. À la fin de la GRUB_CMDLINE_LINUXligne, ajouteznet.ifnames=0 biosdevname=0

  3. Sauvegardez le fichier

  4. Type

    grub2-mkconfig -o /boot/grub2/grub.cfg"
    

    ou tapez

    grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
    
  5. Type reboot

Hafiz
la source
Pourquoi le périphérique réseau disparaît-il complètement du système si j'applique cette méthode à Fedora 26? ifconfigrevient seulement loet virbr0, mais à l'origine enp4s0n'est plus là.
ajeh
Pour me répondre: il faut faire attention à changer tous les scripts réseau à utiliser avec le ethNnommage pour utiliser cette convention. J'étais parti enp4s0dans un script.
ajeh