interfaces réseau nommage classique

adaptateur Wifi USB ne fonctionne pas

solution

introduction rapide

Depuis la version 197 systemd/udev a introduit un nouveau schéma de nommage: Predictable Network Interface Names sensé stabiliser le nommage des interfaces réseau. Il fait disparaître les classiques noms ("eth0", "wlan0", ...). Il s’appuie sur le nommage du noyau pour lui appliquer des règles, qui par défaut se trouvent dans /lib/systemd/network/99-default.link, avec notamment la règle NamePolicy=kernel database onboard slot path. Plus d'infos sur freedesktop (En)

Ce nommage ne fonctionne pas (ou pas toujours) pour les périphériques USB, au moins sur debian, le nom d'interface se retrouve sous la forme wlx00c0ca3f3f23

Ceci est peut-être dû à à une lenteur d'initialisation de l'adaptateur USB (hypothèse personnelle), mais normalement, une règle udev devrait se rabattre sur l'adresse MAC MAC (ID_NET_NAME_MAC) pour construire le nom (voir /lib/udev/rules.d/73-usb-net-by-mac.rules)

J'ai été personnellement confronté au souci en voulant utiliser ma vieille alfa network, sur debian 9.2. Je n'ai pas envie de revenir aux vieux nommages pour toutes les interfaces. Donc en fouinant un peu, de ce que j'ai compris ou testé (j'ai pas trouvé les bonnes docs détaillées)

tous les commandes qui suivent doivent être faites en root

pour vérifier le nom d'interface

ip -o add 

nouveau nommage sur usb dans l'esprit systemd: wlp...

cible usb

unlink /etc/udev/rules.d/80-net-setup-link.rules 2>/dev/null
mv /etc/udev/rules.d/80-net-setup-link.rules  /etc/udev/rules.d/80-net-setup-link.bak  2>/dev/null

ln -s /lib/udev/rules.d/80-net-setup-link.rules  /etc/udev/rules.d/80-net-setup-link.rules 

(ls -l /etc/udev/rules.d/80-net-setup-link.rules -> /dev/null)

(*) j'espère que ce nom à la con, est seulement dû à l'échec initial du nommage et un fallback basé sur la MAC

ancien nommage sur usb, wlan pour USB

cible usb

unlink /etc/udev/rules.d/80-net-setup-link.rules  2>/dev/null
mv /etc/udev/rules.d/80-net-setup-link.rules  /etc/udev/rules.d/80-net-setup-link.bak  2>/dev/null

ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules

(ls -l /etc/udev/rules.d/80-net-setup-link.rules -> /dev/null)

cerise sur le gateau, l'adresse MAC change automatiquent(spoofing), pas besoin de configurer NetworkManager

ancien nommage, via règles Udev

cible usb et pci

unlink /etc/systemd/network/99-default.link 2>/dev/null
mv /etc/systemd/network/99-default.link /etc/systemd/network/99-default.bak  2>/dev/null

ln -s /dev/null /etc/systemd/network/99-default.link

relancer udev (normalement suffisant)

systemctl restart udev

pour les interfaces ethernet, qui sont dans devfs du noyau, il faut reconstruire le initramfs

update-initramfs -u
reboot

ancien nommage, via Grub

cible usb et pci

pas testé, mais indiqué par freedesktop et vu sur une ArchLinux

    #GRUB_CMDLINE_LINUX_DEFAULT="quiet"
GRUB_CMDLINE_LINUX_DEFAULT="quiet net.ifnames=0 biosdevname=0"

puis

update-grub
reboot

retour en arrière

règles Udev

unlink  /etc/udev/rules.d/80-net-setup-link.rules 2>/dev/null
mv /etc/udev/rules.d/80-net-setup-link.bak  /etc/udev/rules.d/80-net-setup-link.rules   2>/dev/null
unlink /etc/systemd/network/99-default.link 2>/dev/null
mv /etc/systemd/network/99-default.bak  /etc/systemd/network/99-default.link   2>/dev/null
unlink /etc/systemd/network/99-default.link 2>/dev/null
mv /etc/systemd/network/99-default.bak  /etc/systemd/network/99-default.link   2>/dev/null

vieux bidouillage

pour ceux qui auraient suivis mes premières élucubrations (fonctionnelles mais pas dans les clous (difficile de tester à distance;))

unlink /lib/systemd/network/99-default.link 2>/dev/null
mv /lib/systemd/network/99-default.link.bak /lib/systemd/network/99-default.link   2>/dev/null
update-initramfs -u
reboot

grub

GRUB_CMDLINE_LINUX_DEFAULT="quiet"

puis

update-grub
reboot