2 votes

Comment configurer les périphériques ethernet pour un matériel spécifique sur Centos 7

J'ai un système Centos 7 sur lequel j'ai désactivé le nouveau système de dénomination des réseaux et suis revenu à l'ancien système (eth0, eth1, etc.). J'ai fait cela parce que je l'utilise dans une configuration RDO Openstack, et cela nécessite les mêmes noms de périphériques Ethernet sur quelques hôtes différents. Certains de ces hôtes sont des virts sous kvm et utilisent le système de dénomination eth.

Depuis que j'ai fait cela, à chaque redémarrage, mes périphériques Ethernet sont inversés.

Sur une botte saine, je vois

[11.172339] tg3 0000:03:00.0 eth0 : Tigon3 [partno(BCM95723) rev 5784100] (PCI Express) Adresse MAC 68:b5:99:72:d8:02
[11.269599] e1000e 0000:02:00.0 eth1 : (PCI Express:2.5GT/s:Width x1) 68:05:ca:04:90:16

Lors d'un "mauvais démarrage", ils seront inversés et l'e1000e sera eth0 tandis que le tg3 sera eth1.

Jusqu'à présent, j'ai fait ce qui suit :

  • Ajout de "net.ifnames=0 biosdevname=0" à la ligne GRUB_CMDLINE_LINUX dans /etc/default/Grub.
  • grub2-mkconfig -o /boot/grub2/Grub.cfg
  • création de /etc/udev/rules.d/70-persistent-net.rules

Après avoir lancé grub2-mkconfig, je vois ce qui suit dans /boot/grub2/Grub.cfg (ce qui implique que mon changement ci-dessus prend effet)

linux16 /boot/vmlinuz-3.10.0-123.el7.x86_64 root=UUID=eabee081-85f8-4f33-b72a-fbbdc575e010 ro vconsole.keymap=uk crashkernel=auto vconsole.font=latarcyrheb-sun16 rhgb net.ifnames=0 biosdevname=0 quiet

Le contenu de 70-persistent-net.rules est le suivant :

SUBSYSTEM=="net", ACTION=="ajouter", DRIVERS==" ? ", ATTR{adresse}=="68:B5:99:72:D8:02", ATTR{type}=="1", KERNEL=="eth ", NAME="eth0"
SUBSYSTEM=="net", ACTION=="ajouter", DRIVERS==" ? ", ATTR{adresse}=="68:05:CA:04:90:16", ATTR{type}=="1", KERNEL=="eth ", NAME="eth1"

J'ai également essayé de changer les lettres des adresses MAC de ce fichier en minuscules pour qu'elles correspondent à la sortie de dmesg. Cela ne fait aucune différence.

NetworkManager est désactivé et l'entrée HWADDR se trouve dans le fichier /etc/sysconfig/network-scripts/ifcfg-eth*.

Sous ubuntu et les versions antérieures de Centos, ce qui précède fonctionne parfaitement et de manière fiable.

Cependant, rien de tout cela ne conduit à des dispositifs prévisibles sur cette boîte avec Centos 7.

Tout conseil sur la façon d'épingler ces dispositifs aux noms eth serait très apprécié !

2voto

Christoph Gröver Points 36

J'ai poursuivi mes recherches et j'ai trouvé d'autres détails.
La raison de ce comportement défavorable était des conditions de course entre le noyau et le logiciel udev (les développeurs l'ont indiqué dans un rapport de bogue).
Les développeurs de udev ont donc décidé de supprimer la dénomination fiable des cartes réseau en tant que ethX et d'imposer une dénomination moins prévisible.
Ils ont supprimé le code qui permettait à l'administrateur d'utiliser un ordre fiable des interfaces ethX et ont également ajouté un code qui refuse d'utiliser tout nom ethX qui a déjà été utilisé par le noyau comme nom interne de la carte réseau.

Il semble donc que vous ne puissiez plus recevoir de commandes fiables si vous souhaitez utiliser les noms eth0, eth1 et autres.
Certains suggèrent d'utiliser plutôt des noms comme netX.
Cela peut également fonctionner si vous configurez ethX avec X plus grand que le nombre réel d'interfaces.


Je suis l'auteur de l'affiche initiale qui pensait avoir trouvé la solution, alors qu'il s'agissait en fait d'une solution temporaire. Après quelques tests de démarrage, j'ai constaté que les périphériques Ethernet étaient nommés de manière aléatoire et non de la manière définie dans le fichier 60-net.rules.

J'avais posté la réponse originale de manière anonyme, puis j'ai décidé de m'inscrire pour pouvoir participer davantage. Je suis donc désolée. La réponse postée ci-dessous NE résout PAS le problème posé à l'origine. Elle le fait pour quelques bottes, mais ne fonctionne pas de manière fiable.


J'ai eu du succès avec le Minimal-CD de CentOS 7 et la stratégie suivante :

J'ai fait beaucoup de choses qui n'ont pas aidé, j'ai donc dû en changer quelques-unes.

J'ai réinstallé biosdevname (je l'avais enlevé).

J'ai édité /etc/default/Grub et ajouté biosdevname=0 ET ifnames=0 à la CMDLINE.

J'ai refait la configuration de Grub avec : grub2-mkconfig -o /boot/grub2/Grub.cfg

J'ai également importé les deux fichiers suivants d'une installation CentOS 6.5 :

/lib/udev/rules.d/75-persistent-net-generator.rules

/lib/udev/write_net_rules

(mais il est possible qu'elles n'aient eu aucun effet)

J'ai ensuite créé un fichier appelé 60-net.rules dans /etc/udev/rules.d/ avec une ligne pour chaque NIC que j'ai :

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{adresse}=="aa:bb:cc:dd:ee:ff", ATTR{dev_id}=="0x0", ATTR{type}=="1", NAME="eth1".

(Bien entendu, l'adresse MAC "aa:bb :..." doit être correcte).

Après cela, j'ai démarré et cela a fonctionné.

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