Le but de cet article est de décrire la marche à suivre pour renommer une interface ethernet sur un système Linux disposant de Udev.

Toutes les actions réalisées dans cet article sont faites dans le contexte « root » ou travers de « sudo » et en connexion console directe.

Description:

Lorsqu’on rajoute une nouvelle interface réseau sur un serveur celle-ci est nommée ethN où N correspond à un chiffre incrémental.
Il en est de même lorsqu’on remplace la carte réseau existante car le système connaît eth0 avec son adresse MAC personnelle (et unique) de ce fait s’il détecte une nouvelle adresse MAC il va créer une nouvelle interface même si la première n’existe plus.

NB: Cela s’applique également lors d’un clone VMWare

Mais pourquoi cela?

Tout simplement car le gestionnaire de périphérique Udev garde la configuration des périphériques dans des fichiers de configurations.
Pour les cartes réseaux il s’agit du fichier « /etc/udev/rules.d/70-persistent-net.rules »:

# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.
 
 
# PCI device 0x8086:0x100f (e1000) (custom name provided by external tool)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:50:56:96:00:13", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:50:56:96:01:19", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

Ici on voit que le système connaît deux interfaces réseaux:

  1. eth0 avec l’adresse MAC 00:50:56:96:00:13
  2. eth1 avec l’adresse MAC 00:50:56:96:01:19

Mode opératoire

Si l’on souhaite que la carte réseau avec l’adresse MAC 00:50:56:96:01:19 se nomme eth0 il faut modifier le champs « NAME » et modifier également le champs « NAME » de l’interface se nommant, à l’instant T, eth0 ou carrément supprimer la ligne correspondante:

# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.
 
 
# PCI device 0x8086:0x100f (e1000) (custom name provided by external tool)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:50:56:96:01:19", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

Une fois notre fichier de configuration modifier il faut redémarrer le daemon « udevd »:

  • Sur un système Debian:
  • $ service udev restart
    Stopping the hotplug events dispatcher: udevd.
    Starting the hotplug events dispatcher: udevd.
  • Sous Rhel:
  • $ start_udev
    Starting udev:                                             [  OK  ]

A cet instant notre configuration des périphériques est bonne mais la machine n’est pas sur le réseau!!!
Pour cela il faut modifier le fichier de configuration de l’interface réseau « /etc/sysconfig/network-scripts/ifcfg-eth0″ en mettant à jour l’adresse MAC (champs HWADDR) avec celle ce la nouvelle interface:

DEVICE=eth0
NM_CONTROLLED=yes
ONBOOT=yes
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
IPADDR=192.168.1.10
NETMASK=255.255.255.0
DNS2=192.168.1.2
GATEWAY=192.168.1.254
DNS1=192.168.1.1
USERCTL=no
HWADDR=00:50:56:96:00:13

Devient:

DEVICE=eth0
NM_CONTROLLED=yes
ONBOOT=yes
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
IPADDR=192.168.1.10
NETMASK=255.255.255.0
DNS2=192.168.1.2
GATEWAY=192.168.1.254
DNS1=192.168.1.1
USERCTL=no
HWADDR=00:50:56:96:01:19

Une fois fait, on redémarre le service réseau:

  • Sur un système Debian:
  • $ /etc/init.d/networking restart
  • Sous Rhel:
  • $ service network restart

    Notre serveur est à présent à nouveau sur le réseau avec la nouvelle interface réseau:

    $ ifconfig eth0
    eth0      Link encap:Ethernet  HWaddr 00:50:56:96:01:19
              inet addr:192.168.1.10  Bcast:192.168.1.255  Mask:255.255.255.0
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:617 errors:0 dropped:0 overruns:0 frame:0
              TX packets:518 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000
              RX bytes:55550 (54.2 KiB)  TX bytes:90797 (88.6 KiB)