Généralités système Linux

Nomenclature des interfaces réseau sous Linux (enp0s3, wlo1, ...)

Table des matières
En Anglais : Predictable network interface device names

Introduction



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 ce changement



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.

Revenir comme avant



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 :

Code BASH :
net.ifnames=0 biosdevname=0


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 !


Comprendre les nouveaux noms



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 :

Code BASH :
udevadm info -e  | less


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

Exemples de noms d'interface



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 BASH :
udevadm info -e 

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 BASH :
udevadm info -e 


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
Cette page a été vue 38195 fois