Skip to Content

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 :

  •  cf mon autre document sur ce sujet : http://www.coagul.org/article.php3 ?id_article=158

    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 :

  •  http://www.debian.org/doc/manuals/reference/ch-gateway.fr.html

    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...