Comment renommer une carte ethernet sous Linux?
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:
- eth0 avec l’adresse MAC 00:50:56:96:00:13
- 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:
- Sous Rhel:
$ service udev restart Stopping the hotplug events dispatcher: udevd. Starting the hotplug events dispatcher: udevd.
$ 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:
- Sous Rhel:
$ /etc/init.d/networking restart
$ 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)


18 octobre 2011 à 16 h 35 min
Merci pour cette petite astuce. Elle peut se révéler bien utile
19 octobre 2011 à 19 h 07 min
Sous Linux ou sous Debian/Ubuntu ?
19 octobre 2011 à 19 h 47 min
Sur système Linux doté du gestionnaire de périphérique Udev.
Lors de la rédaction de cet article j’ai utilisé plusieurs distribution à base de kernel linux (si on veut être exact): Debian Lenny, Ubuntu Natty, Redhat Entreprise Linux 5.2, Rhedhat Entreprise Linux 6.1.
23 février 2012 à 14 h 20 min
Merci, ça m’a permis de remettre d’aplomb une VM VirtualBox OpenSuse 12.1 : j’ai supprimé l’entrée eth0 et renommé la eth1 en eth0. J’ai rebooté et ça a fonctionné.