Sous Debian, comment activer la configuration du réseau seulement s’il est disponible.
But de ce document
Ce document donne les modifications à effectuer dans une configuration réseau classique (avec carte ethernet) pour activer ce dernier seulement si le câble réseau est connecté.
En effet, si la configuration réseau est activée alors que le réseau n’est pas disponible, de nombreux services peuvent fonctionner difficilement. De plus, cela augmente de façon importante le temps de démarrage ou d’arrêt de l’ordinateur ainsi que le lancement de certains programmes.
Ce problème de configuration du réseau apparaît notamment avec les portables connectés au réseau lorsqu’ils sont en entreprise et qui se retrouvent ensuite sans réseau à la maison.
Pré-requis
Avoir installé une Debian de Base :
Rappel rapide sur le fonctionnement du réseau sous Debian
Sous Debian, le principal fichier de configuration du réseau est « /etc/network/interfaces »
Voici un premier exemple de ce qu’il peut contenir pour une configuration statique :
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.0.1
netmask 255.255.255.0
gateway 192.168.0.100
Voici un autre exemple avec une configuration automatiquement avec DHCP
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
Dans ces deux exemples, les deux premières lignes servent à configurer le réseau interne du système Linux (loopback ou 127.0.0.1). Ces deux lignes sont nécessaire au fonctionnement de nombreux services sous Linux même si celui-ci n’est jamais connecté à un réseau.
Les lignes suivantes, permettent de configurer la première interface réseau du système (eth0).
Les lignes « auto lo » et « auto eth0 » indiquent qu’il faut démarrer automatiquement les interfaces loopback et eth0 au démarrage du système.
La commande « ifconfig » permet de voir ou de modifier les interfaces disponibles :
# ifconfig
eth0 Lien encap:Ethernet HWaddr 00:0B:DB:02:59:0D
adr inet6: fe80::20b:dbff:fe02:590d/64 Scope:Lien
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:5877 errors:0 dropped:0 overruns:0 frame:0
TX packets:230 errors:0 dropped:0 overruns:0 carrier:39
collisions:0 lg file transmission:1000
RX bytes:457197 (446.4 KiB) TX bytes:23816 (23.2 KiB)
Interruption:11 Adresse de base:0xec80
lo Lien encap:Boucle locale
inet adr:127.0.0.1 Masque:255.0.0.0
adr inet6: ::1/128 Scope:Hôte
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:107 errors:0 dropped:0 overruns:0 frame:0
TX packets:107 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:0
RX bytes:8771 (8.5 KiB) TX bytes:8771 (8.5 KiB)
La commande « route » permet de vérifier si le réseau est correctement configuré en affichant les routes disponibles :
# route
Table de routage IP du noyau
Destination Passerelle Genmask Indic Metric Ref Use Iface
localnet * 255.255.255.0 U 0 0 0 eth0
default 192.168.0.100 0.0.0.0 UG 0 0 0 eth0
La commande « ping » permet de vérifier si un autre élément du réseau est accessible :
# ping 192.168.0.100
PING 192.168.0.100 (192.168.0.100) 56(84) bytes of data.
64 bytes from 192.168.0.100: icmp_seq=1 ttl=255 time=1.78 ms
64 bytes from 192.168.0.100: icmp_seq=2 ttl=255 time=0.970 ms
64 bytes from 192.168.0.100: icmp_seq=3 ttl=255 time=0.998 ms
La commande « ifdown eth0 » permet de désactiver la configuration de l’interface réseau « eth0 »
# ifdown eth0
Après cette commande, la table de routage doit être vide :
# route
Table de routage IP du noyau
Destination Passerelle Genmask Indic Metric Ref Use Iface
La commande « ifup eth0 » permet d’activer la configuration de l’interface réseau « eth0 »
# ifup eth0
Après cette commande, la table de routage apparaît de nouveau :
# route
Table de routage IP du noyau
Destination Passerelle Genmask Indic Metric Ref Use Iface
localnet * 255.255.255.0 U 0 0 0 eth0
default 192.168.0.100 0.0.0.0 UG 0 0 0 eth0
Les commandes « ifdown -a » et « ifup -a » permettent de désactiver ou d’activer toutes les interfaces marquées « auto » dans le fichier « /etc/network/interfaces »
Exemple de problème quand le réseau n’est pas disponible
Si le câble réseau est débranché alors que le réseau est toujours actif certains temps de réponses seront très longs.
Par exemple, la commande « route » mettra plusieurs secondes pour afficher le résultat alors que celui-ci devrait être instantané.
La commande « ping » en utilisant un nom (ex : ping monserveur) et non pas une adresse IP, mettra également de longues secondes avant d’afficher le résultat suivant :
# ping monserveur
ping: unknown host pglinux
De plus l’arrêt et le démarrage de l’ordinateur seront également très longs surtout si de nombreux services ont besoins de la résolution de noms pour fonctionner correctement.
Par contre si vous désactivez la configuration réseau avec la commande « ifdown eth0 », les réponses aux commandes précédentes deviennent immédiates.
Il faut donc trouver une solution pour activer ou désactiver la configuration du réseau automatiquement si le câble réseau est branché ou pas.
ifplugd -> La solution
ifplugd est un démon qui détecte la présence du câble et va exécuter automatiquement les commandes « ifdown » et « ifup ».
Il faut commencer par installer le paquet :
# apt-get install ifplugd
Ensuite, il faut indiquer dans son fichier de configuration « /etc/default/ifplugd » l’interface à gérer :
INTERFACES="eth0"
Et démarrer ou redémarrer le démon :
/etc/init.d/ifplugd restart
Ensuite, il est possible d’aller voir dans les logs ce qui se passe quand le câble réseau est déconnecté puis reconnecté :
# tail -f /var/log/syslog
May 13 10:54:38 pgcoagul ifplugd(eth0)[4193]: Link beat lost.
May 13 10:54:45 pgcoagul ifplugd(eth0)[4193]: Link beat detected.
Normalement les commandes « ifup eth0 » et « ifdown eth0 » sont exécutées automatiquement par le démon « ifplugd ».
Et le temps de réponse des commandes « route » et « ping monserveur » doit être instantané.
ATTENTION : Il faut attendre environ 10s après avoir débranché le câble pour que la configuration de l’interface soit désactivée.
Problème au démarrage
La configuration précédente fonctionne parfaitement tant que l’ordinateur est allumé. Mais au démarrage de l’ordinateur, l’interface réseau est démarrée même si le câble est débranché. Cela peut allonger considérablement le temps de démarrage de l’ordinateur.
Pour corriger ce problème, il faut simplement indiquer que l’interface réseau ne doit pas être activée automatiquement au démarrage de l’ordinateur. Dans ce cas, c’est le démon « ifplugd » qui déterminera s’il faut activer ou pas l’interface.
Pour cela, il faut simplement supprimer ou commenter la ligne suivante du fichier « /etc/network/interfaces » :
#auto eth0
Liens pour avoir plus d’informations
La documentation Debian est très bien faite, complète et en français sur le sujet :
Historique des modifications
| Version | Date | Commentaire |
|---|---|---|
| 0.1 | 16/05/05 | Création par Tony GALMICHE |

Commentaires
> Bravo Sous Debian, comment activer la configuration du réseau
j’avais trouvé une parade en désactivant par défaut le réseau et en l’activant à la demande avec ifup mais là c’est super. j’ai dévoré l’article et suis en train de tester. réponse, demain...