Carte réseauDans mon bureau, j’ai trois machines qui me servent de bac à sable bare metal pour tester toutes sortes de configurations. Je viens tout juste de changer la machine qui fait office de serveur dans ce trio, et je me suis retrouvé confronté à un problème assez original.

L’installateur de CentOS 7 a identifié les deux interfaces réseau de la machine en tant que enp2s2 et eth1. Après le redémarrage initial, je n’ai pas pu accéder au réseau local, ce que j’ai trouvé quelque peu curieux. Depuis que Red Hat a décidé de changer la politique de nommage des interfaces réseau et que les bons vieux eth0, eth1, eth2 etc. se sont retrouvés avec des noms à coucher dehors comme enp63s0, enp7s4 ou p3p1, je n’ai pas eu le moindre souci en termes de persistance de l’interface.

Après plusieurs redémarrages successifs, j’ai dû me rendre à l’évidence que quelque chose clochait.

  • Mon interface enp2s2 ne bougeait pas.
  • En revanche, l’autre interface était renommée en eth0 ou eth1 de manière erratique.
  • Mystère et boules de gomme.

Avant de migrer vers CentOS en 2017, je chassais l’ours à mains nues sous Slackware, et j’avais l’habitude de renommer mes interfaces réseau en cas de besoin. J’ai donc entrepris de rectifier le tir manuellement ici.

Dans un premier temps, j’édite /etc/default/grub et j’ajoute deux options de kernel pour désactiver le nouveau schéma de nommage des interfaces réseau.

GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="quiet net.ifnames=0 biosdevname=0"
GRUB_DISABLE_RECOVERY="true"

Je prends en compte les modifications.

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

Ensuite je crée un fichier /etc/udev/rules.d/70-persistent-net.rules comme ceci. Attention, les retours à la ligne figurent uniquement pour des raisons de lisibilité dans le listing. Dans l’original, il s’agit de deux lignes longues qui ne doivent pas comporter la moindre césure.

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1a:a0:10:a7:2f", 
  ATTR{type}=="1", KERNEL=="eth*", NAME="wan0"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:27:19:f1:bc:3a", 
  ATTR{type}=="1", KERNEL=="eth*", NAME="lan0"

Au passage, j’ai pu découvrir un bug mystérieux qui n’est apparemment documenté nulle part.

  • Lorsqu’on prend des valeurs traditionnelles comme eth0 ou eth1, ça ne marche pas.
  • En revanche, ça fonctionne très bien avec eth2, eth3, etc.
  • Tant qu’à faire, j’ai choisi des noms parlants pour ma machine qui fait office de passerelle, et j’ai pris wan0 et lan0.

À partir de là, il m’a suffi d’éditer deux fichiers ifcfg-lan0 et ifcfg-wan0, et le tour est joué.

# /etc/sysconfig/network-scripts/ifcfg-wan0
DEVICE=wan0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.2.5
NETMASK=255.255.255.0

La rédaction de cette documentation demande du temps et des quantités significatives de café espresso. Vous appréciez ce blog ? Offrez un café au rédacteur en cliquant sur la tasse.

 

Catégories : Serveur LAN

3 commentaires

Plopiplop · 10 février 2020 à 9 h 37 min

Salut,

Les noms ethX ne sont pas prédictifs. Le numéro suit l’arrivée du périphérique dans la machine. On avait un hack à partir de l’adresse mac pour stabiliser ça d’un boot à l’autre.

enpXsy est prédictible. pXsY indique où est branché la carte. Donc si on change la carte, le nom de change pas.

Pour l’ordinateur moyen, c’est moins pratique. Parcontre, c’est universel. Il y a certainement des choses à améliorer. On a bien réussi à avoir /dev/sda pour à peu près tout le monde.

    kikinovak · 10 février 2020 à 9 h 39 min

    Je sais bien tout ça. Et le hack avec l’adresse MAC fonctionnait bien, je l’ai utilisé pendant des années.

Quand l’interface réseau devient une cible mouvante – Jhc Info · 10 février 2020 à 10 h 36 min

[…] Source : Quand l’interface réseau devient une cible mouvante […]

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.