LINUX:Renommage du nom de l'interface réseau

De WIKI sur Linux (ADB)
Aller à la navigation Aller à la recherche

retour aux Notions de réseau


But

Le nommage d'un interface réseau se base sur le type de matériel et sa situation relative matérielle. Dans certains cas, il est souhaitable de le renommer dans un soucis uniformisation.

J'ai rencontré cette nécessité dans les approches de FailOver et de LoadBalancing. Dans ces configurations, le matériel est au minimum dupliqué et certains paramètres de configurations doivent être identiques de part et d'autre. Ce soucis peut aussi porter sur une plus grande standardisation.


Situation initiale

Nous avons une machine comportant deux interfaces réseaux. Nous avons besoin de connaitre le nom de l'interface réseau et son adresse MAC.

Nous pouvons avoir une vue avec la commande:

ifconfig

qui donne par exemple:


enp0s25: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
       inet 192.168.1.71  netmask 255.255.255.0  broadcast 192.168.1.255
       ether 00:1c:c0:92:a2:08  txqueuelen 1000  (Ethernet)
       RX packets 244890  bytes 44210599 (42.1 MiB)
       RX errors 0  dropped 0  overruns 0  frame 0
       TX packets 300043  bytes 73055221 (69.6 MiB)
       TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
       device interrupt 20  memory 0xd3300000-d3320000
 
enp4s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
       inet 192.168.2.71  netmask 255.255.255.0  broadcast 192.168.2.255
       ether 00:1b:21:3b:b6:ea  txqueuelen 1000  (Ethernet)
       RX packets 2578  bytes 215585 (210.5 KiB)
       RX errors 0  dropped 0  overruns 0  frame 0
       TX packets 5064  bytes 379577 (370.6 KiB)
       TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
 
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
       inet 127.0.0.1  netmask 255.0.0.0
       inet6 ::1  prefixlen 128  scopeid 0x10<host>
       loop  txqueuelen 1000  (Boucle locale)
       RX packets 764  bytes 231198 (225.7 KiB)
       RX errors 0  dropped 0  overruns 0  frame 0
       TX packets 764  bytes 231198 (225.7 KiB)
       TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Le nom des interfaces et leur adresse MAC sont mises en gras.


Une autre méthode consiste à afficher l'ensemble du matériel et d'y repérer la partie "network" avec la commande:

lshw

ou

hwinfo

Voici un extrait pour la commande "lshw":


       *-network
            description: Ethernet interface
            product: 82567V-2 Gigabit Network Connection
            vendor: Intel Corporation
            physical id: 19
            bus info: pci@0000:00:19.0
            logical name: enp0s25
            version: 00
            serial: 00:1c:c0:92:a2:08
            size: 100Mbit/s
            capacity: 1Gbit/s
            width: 32 bits
            clock: 33MHz
            capabilities: pm msi bus_master cap_list ethernet physical tp 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
            configuration: autonegotiation=on broadcast=yes driver=e1000e driverversion=6.1.8-200.fc37.x86_64 duplex=full firmware=1.8-5 ip=192.168.3.71 latency=0 link=yes multicast=yes port=twisted pair speed=100Mbit/s
            resources: irq:27 memory:d3300000-d331ffff memory:d3320000-d3320fff ioport:f0c0(size=32)

          *-network
               description: Ethernet interface
               product: 82541PI Gigabit Ethernet Controller
               vendor: Intel Corporation
               physical id: 0
               bus info: pci@0000:04:00.0
               logical name: enp4s0
               version: 05
               serial: 00:1b:21:3b:b6:ea
               size: 1Gbit/s
               capacity: 1Gbit/s
               width: 32 bits
               clock: 66MHz
               capabilities: pm pcix bus_master cap_list rom ethernet physical tp 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
               configuration: autonegotiation=on broadcast=yes driver=e1000 driverversion=6.1.8-200.fc37.x86_64 duplex=full ip=192.168.2.71 latency=32 link=yes mingnt=255 multicast=yes port=twisted pair speed=1Gbit/s
               resources: irq:20 memory:d3140000-d315ffff memory:d3120000-d313ffff ioport:c000(size=64) memory:d3100000-d311ffff

et pour "hwinfo":





Le but est de renommer le nom de l'interface réseau ("interface-name"):

  • enp0s25 deviendra eth1
  • enp4s0 deviendra eth2


Nous utilisons maintenant NetworkManager. La configuration de ces cartes réseaux se trouvent dans le répertoire "/etc/NetworkManager/system-connections". Dans ce répertoire, nous y retrouvons deux fichiers, un par interface réseau dont voici leur contenu:

  • "enp0s25.nmconnection"

[connection]
id=enp0s25
uuid=fe6dcd15-bfbb-366e-8cfe-a8f51c4420bb
type=ethernet
autoconnect-priority=-999
interface-name=enp0s25
timestamp=1673904860
 
[ethernet]
 
[ipv4]
address1=192.168.1.71/24,192.168.1.1
dns=192.168.1.1;
dns-search=home.dom;
may-fail=false
method=manual
 
[ipv6]
addr-gen-mode=eui64
method=disabled
 
[proxy]


  • "enp4s0.nmconnection"

[connection]
id=enp4s0
uuid=f9fe5eaf-e746-497b-bb75-cf6215560794
type=ethernet
interface-name=enp4s0
timestamp=1673954652
 
[ethernet]
 
[ipv4]
address1=192.168.2.71/24
method=manual
 
[ipv6]
addr-gen-mode=eui64
method=disabled
 
[proxy]


Procédure

Il ne suffit pas de modifier l'option "interface-name" pour atteindre notre but.

Ce renommage passe par trois étapes:

  • Renommage matériel
  • Adaptation de la configuration de NetworkManager
  • Redémarrage de la machine


Renommage matériel

Il existe deux méthodes présentées ci-dessous. On prend une des deux; pas les deux.


Modification de la règle de nommage

Au niveau du système, il existe un ensemble de règles qui lors du démarrage de la machine, nomme toute pièce matérielle.

L'approche présentée ici consiste de surcharger ces règles par des règles personnelles qui ont la préséance. Cette manière est ancienne.

Les nouvelles règles sont à mettre dans le répertoire "/etc/udev/rules.d" et pour notre cas, elles doivent être placées dans le fichier "70-custom-ifnames.rules". Une carte réseau est identifiable par son adresse MAC qu'il faut lier à son nouveau nom d'interface mais la syntaxe est stricte. Ces adresses MAC sont affichées avec la commande "ifconfig" pour autant que la carte réseau soit activée.

Voici le contenu de ce fichier pour notre exemple:


SUBSYSTEM=="net",ACTION=="add",ATTR{address}=="00:1c:c0:92:a2:08",ATTR{type}=="1",NAME="eth1"
SUBSYSTEM=="net",ACTION=="add",ATTR{address}=="00:1b:21:3b:b6:ea",ATTR{type}=="1",NAME="eth2"


Intervention au niveau de Systemd

L'autre méthode passe par les processus de Systemd.

Cette surcharge se passe en ajoutant deux fichiers dans le répertoire de Systemd "/etc/systemd/network", un par interface. Comme ci-dessus, une carte réseau est identifiable par son adresse MAC qu'il faut lier à son nouveau nom d'interface; la syntaxe est stricte.

Voici le contenu de ces deux fichiers pour notre exemple:

  • "10-persistent-net.link"

[Match]
MACAddress=00:1c:c0:92:a2:08
 
[Link]
Name=eth1


  • "11-persistent-net.link"

[Match]
MACAddress=00:1b:21:3b:b6:ea
 
[Link]
Name=eth2


Adaptation des fichiers de configuration de NetworkManager

Ci-dessus, nous avions présenté le contenu des fichiers de configuration de nos deux cartes réseaux dans NetworkManager.

Maintenant que nous avons adapté le nom au niveau matériel, il faut adapter ce nom dans ces fichiers au niveau de l'option "interface-name" qui deviennent:

  • "enp0s25.nmconnection"

[connection]
id=enp0s25
uuid=fe6dcd15-bfbb-366e-8cfe-a8f51c4420bb
type=ethernet
autoconnect-priority=-999
interface-name=eth1
timestamp=1673904860
 
[ethernet]
 
[ipv4]
address1=192.168.1.71/24,192.168.1.1
dns=192.168.1.1;
dns-search=home.dom;
may-fail=false
method=manual
 
[ipv6]
addr-gen-mode=eui64
method=disabled
 
[proxy]


  • "enp4s0.nmconnection"

[connection]
id=enp4s0
uuid=f9fe5eaf-e746-497b-bb75-cf6215560794
type=ethernet
interface-name=eth2
timestamp=1673954652
 
[ethernet]
 
[ipv4]
address1=192.168.2.71/24
method=manual
 
[ipv6]
addr-gen-mode=eui64
method=disabled
 
[proxy]


Redémarrage

Enfin il faut redémarrer la machine. Si vous n'êtes pas sûr de votre fait, soyez devant la console de l'ordinateur car s'il y a une erreur, vous n'aurez plus de connexion réseau.


Vérification

Nous pouvons vérifier ce changement avec la commande:

ifconfig

qui donne par exemple:


eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
       inet 192.168.1.71  netmask 255.255.255.0  broadcast 192.168.1.255
       ether 00:1c:c0:92:a2:08  txqueuelen 1000  (Ethernet)
       RX packets 244890  bytes 44210599 (42.1 MiB)
       RX errors 0  dropped 0  overruns 0  frame 0
       TX packets 300043  bytes 73055221 (69.6 MiB)
       TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
       device interrupt 20  memory 0xd3300000-d3320000
 
eth2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
       inet 192.168.2.71  netmask 255.255.255.0  broadcast 192.168.2.255
       ether 00:1b:21:3b:b6:ea  txqueuelen 1000  (Ethernet)
       RX packets 2578  bytes 215585 (210.5 KiB)
       RX errors 0  dropped 0  overruns 0  frame 0
       TX packets 5064  bytes 379577 (370.6 KiB)
       TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
 
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
       inet 127.0.0.1  netmask 255.0.0.0
       inet6 ::1  prefixlen 128  scopeid 0x10<host>
       loop  txqueuelen 1000  (Boucle locale)
       RX packets 764  bytes 231198 (225.7 KiB)
       RX errors 0  dropped 0  overruns 0  frame 0
       TX packets 764  bytes 231198 (225.7 KiB)
       TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0




retour aux Notions de réseau