En Anglais :
Predictable network interface device names
Depuis la version 197 de udev, la nomenclature des interfaces réseau à changé.
Les traditionnels
eth0 eth1 ... wlan0 wlan1 .. ont été remplacés par des noms qui vous semblent barbares comme
enp0s3, eno1, enp1s0f0...
Nous allons voir ici comment les interfaces sont nommées dorénavant.
Pourquoi ? Oui Pourquoi ça a changé ?
Ca marchait bien avant ?
Et bien pas forcément. Voici quelques cas où cela posait problème :
- Les interfaces eth0 et eth1 pouvaient s'inverser en cas de reboot dans certains cas (c'est du vécu avec une Debian Squeeze en tant que Proxy)
- En cas d'ajout de matériel, les interfaces pouvaient se renuméroter (ex: eth0 et eth1, l'ajout d'une carte nouvelle ne s'appelle pas forcément eth2)
- En cas de remplacement d'une carte réseau défectueuse, la renumérotation des interfaces peut se produire.
Les interfaces ont certes un nom plus long, mais ne vont pas bouger dans le temps.
Si vous souhaitez revenir comme avant et que cet article ne vous passionne pas, vous pouvez éditer la ligne de votre chargeur d'amorçage GRUB.
Éditez
/etc/default/grub et dans la ligne
GRUB_CMDLINE_LINUX_DEFAULT ajoutez ceci à la fin :
Ensuite, regénérez le
grub.cfg et rebootez.
Attention, il faut le faire dès le début. Si vous avez une config réseau fixe, vous la perdrez peut être !
Pour comprendre les nouveaux noms des interfaces, on peut consulter le code source d'udev, notamment ce fichier :
src/udev/udev-builtin-net_id.c (
https://cgit.freedesktop.org/systemd/systemd/tree/src/udev/udev-builtin-net_id.c)
Code TEXT :* Two character prefixes based on the type of interface:
* en -- ethernet
* sl -- serial line IP (slip)
* wl -- wlan
* ww -- wwan
*
* Type of names:
* b<number> -- BCMA bus core number
* ccw<name> -- CCW bus group name
* o<index>[d<dev_port>] -- on-board device index number
* s<slot>[f<function>][d<dev_port>] -- hotplug slot index number
* x<MAC> -- MAC address
* [P<domain>]p<bus>s<slot>[f<function>][d<dev_port>]
* -- PCI geographical location
* [P<domain>]p<bus>s<slot>[f<function>][u<port>][..][c<config>][i<interface>]
* -- USB port number chain
Les 2 premiers caractères indiquent le type d'interface. Pour nous, le plus courant sera :
-
en : Ethernet
-
wl : Wireless Lan
Ensuite, le suffixe. Les plus souvent vus sont :
-
oXXX : Les cartes intégrées (onboard)
-
sXXX : Les cartes qui sont branchables à chaud (souvent dans le cadre VM VMWare) -
fN permet pour une carte multifonction de différentier les ports
-
pXXsYY : Les cartes connectées en PCI, avec la localisation matérielle du BUS et du SLOT (en Décimal) -
fN permet pour une carte multifonction de différentier les ports
-
pXXsYYuZ : Les cartes connectées en USB, avec la localisation matérielle du BUS et du SLOT (de la carte USB connectée en PCI, en décimal), et uZZ avec le numéro du périphérique USB -
fN permet pour une carte multifonction de différentier les ports
Il existe bien d'autres cas (comme indiqué dans le code), mais je reste dans le plus courant
Pour ce dernier cas, les XX et YY sont des nombres décimaux, des informations PCI (relevés en hexadécimal par la commande lspci). Pour convertir facilement le décimal en hexadécimal et inversement, vous pouvez consulter mon convertisseur en ligne :
https://www.linuxtricks.fr/wiki/javascript-convertisseur-binaire-hexadecimal-decimal
Afin de voir les informations remontées par udev sur vos périphériques, vous pouvez utiliser la commande :
Des infos sont collectables avec
lspci.
Rappel sur lspci :
Code TEXT :00:19.0 Ethernet controller: Intel Corporation 82567LM-3 Gigabit Network Connection (rev 02)
Ici,
00:19.0 correspond au BUS
0, Device
19, Fonction
0
Voici quelques exemples :
Debian sur OptiPlex 780 :
Code TEXT : 2: enp0s25: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:25:64:b4:44:fe brd ff:ff:ff:ff:ff:ff
inet 192.168.21.20/24 brd 192.168.21.255 scope global dynamic noprefixroute enp0s25
valid_lft 3056sec preferred_lft 3056sec
inet6 fe80::225:64ff:feb4:44fe/64 scope link noprefixroute
valid_lft forever preferred_lft forever
On remarque que l'interface s'appelle
enp0s25.
C'est donc une carte PCI.
Code TEXT :00:19.0 Ethernet controller: Intel Corporation 82567LM-3 Gigabit Network Connection (rev 02)
00:19.0 correspond au BUS
0, Device
19, Fonction
0. A noter 19 en hexa correspond à 25 décimal
CentOS sur VMWare ESXi :
Code TEXT :2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:50:56:9c:47:22 brd ff:ff:ff:ff:ff:ff
inet 192.168.21.237/24 brd 192.168.21.255 scope global noprefixroute ens192
valid_lft forever preferred_lft forever
inet6 fe80::250:56ff:fe9c:4722/64 scope link noprefixroute
valid_lft forever preferred_lft forever
On remarque que l'interface s'appelle
ens192.
C'est donc une carte branchable à chaud.
Code TEXT :E: ID_NET_NAME_PATH=enp11s0
E: ID_NET_NAME_SLOT=ens192
On a plus de détails,
enp11s0.
Code TEXT :0b:00.0 Ethernet controller: VMware VMXNET3 Ethernet Controller (rev 01)
0b:00.0 correspond au BUS
0b, Device
0, Fonction
0. A noter 0b en hexa correspond à 11 décimal
Fedora sur un portable HP Compaq :
Code TEXT :2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 2c:27:d7:01:71:08 brd ff:ff:ff:ff:ff:ff
inet6 fe80::49bb:1d90:3924:ade3/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: wlo1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether d0:df:9a:47:cb:98 brd ff:ff:ff:ff:ff:ff
inet 192.168.21.83/24 brd 192.168.21.255 scope global dynamic noprefixroute wlo1
valid_lft 3546sec preferred_lft 3546sec
inet6 fe80::f3b1:4505:48c9:aadf/64 scope link noprefixroute
valid_lft forever preferred_lft forever
On remarque que les interfaces s'appellent
eno1 et
wlo1
Ce sont donc des cartes intégrées.
Code TEXT :E: ID_NET_NAME_PATH=enp1s0
E: ID_NET_NAME_SLOT=eno1
Code TEXT :E: ID_NET_NAME_PATH=wlp2s0
E: ID_NET_NAME_SLOT=wlo1
Code TEXT :01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL810xE PCI Express Fast Ethernet controller (rev 05)
02:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTL8188CE 802.11b/g/n WiFi Adapter (rev 01)
01:00.0 correspond au BUS
1, Device
0, Fonction
0
02:00.0 correspond au BUS
2, Device
0, Fonction
0
Modem USB de mon Huawei PRA-LX1 :
Code TEXT :6: enp0s11u1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 1000
link/ether a2:bd:09:60:a1:97 brd ff:ff:ff:ff:ff:ff
inet 192.168.42.119/24 brd 192.168.42.255 scope global dynamic noprefixroute enp0s11u1
valid_lft 3487sec preferred_lft 3487sec
inet6 fe80::1b12:e5ac:76aa:402a/64 scope link noprefixroute
valid_lft forever preferred_lft forever
On remarque que l'interface s'appelle
enp0s11u1.
C'est donc une carte USB.
LSPCI :
Code TEXT :00:0b.0 USB controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller
LSUSB :
Code TEXT :Bus 001 Device 002: ID 12d1:108a Huawei Technologies Co., Ltd. PRA-LX1
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
00:0b.0 correspond au BUS
0, Device
11, Fonction
0. Donc, enp0s11 et le
u1 car c'est la première carte USB reliée à cette interface USB