Christophe Nowicki

May 10, 2006

Configuration automatique des interfaces réseaux sous Debian GNU/Linux.

Le Saint Graal de l’informaticien en déplacement consiste en une solution technique pour configurer automatiquement l’ensemble des interfaces réseaux (Ethernet + Wifi) sous Debian GNU/Linux.

Problèmatique

laptop Je dispose d’un portable évoluant parmis plusieurs réseaux informatiques :

  • le travail
  • la maison
  • etc.

La configuration réseau de ses environnements est diffèrente ( type de liaison, routeur par défaut, netmask, etc…) et demande la reconfiguration des interfaces à chaque déplacement.

Il s’agit d’une tâche pénible et laborieuse, c’est pour cela que je me interessé au problème afin de trouver une solution simple, ne nécessitant aucune intervention de ma part.

Celle-ci ne se base pas sur le logiciel NetworkManager, car ce dernier ne permet pas encore de détecter automatiquement sur quel réseau se trouve la machine.

Solution

Ma solution se base sur plusieurs logiciels diffèrents ayant chacun un rôle bien définit :

  • wpasupplicant : daemon prennant en charge le réseau Wifi (détection, configuration, authentification et roaming)
  • ifplugd : système de détection des interfaces réseaux, permettant de détecter le branchement d’un cable rj45 ou l’apparition d’un point d’accés Wifi.
  • guessnet : système de détection réseau basé sur l’utilisation de trames ARP
  • resolvconf : système de gestion des serveurs de noms
  • ifupdown : scripts de configuration réseau de la distribution Debian

Interfaces réseau

Mon portable dispose de deux interfaces réseaux :

  • eth0 : interface ethernet prise en charge par le driver r8169.
  • eth1 : interface wifi prise en charge par le driver ipw2200.

Il vaut mieux disposer de drivers libres (exit ndiswrapper et co … ;0)

Installation

L’installation des pâquets nécessaires est extrêment simple à l’aide de apt-get ou d’aptitude :

#aptitude install wpasupplicant ifplugd guessnet resolvconf

Emplacement des fichiers de configuration

L’ensemble de la configuration réseau se trouve dans deux fichiers :

  • /etc/network/inerfaces : configuration des toutes les interfaces
  • /etc/wpa_supplicant.conf : spécificitées liées aux réseaux sans fils

Configuration

Il faut tout d’abord configurer wpasupplicant afin que celui-ci soit lancé au démarrage de votre machine, la procédure est diffèrente en fonction de la version de votre distribution :

  • Sarge (version 0.3.8)
    Editez le fichier /etc/default/wpasupplicant de la manière suivante :

    # /etc/default/wpasupplicant

    # WARNING! Make sure you have a configuration file!

    ENABLED=1

    # Useful flags:
    # -D Wireless Driver
    # -i Interface (required, unless specified in config)
    # -c Configuration file
    # -d Debugging (-dd for more)
    # -w Wait for interface to come up

    OPTIONS=”-w -i eth1 -D ipw -c /etc/wpa_supplicant.conf”

    Activez le daemon, indiquez le nom de votre interface réseau et le nom du driver (wpa_supplicant -h pour obtenir la liste des drivers disponibles).
    Il faut ensuite configurer les spécificités de vos réseaux Wifi à l’aide du fichier /etc/wpa_supplicant/wpa_supplicant.conf en vous basant sur l’exemple fourni par le paquet Debian:

    # gunzip -c /usr/share/doc/wpasupplicant/examples/wpa_supplicant.conf.gz > /etc/wpa_supplicant.conf

    Une fois la configuration des réseaux Wifi déclarée, il suffit de lancer le programme à partir du script fourni dans /etc/init.d.

  • Autres (version 0.4.8)
    TODO

Nous allons ensuite passer à la configuration de toutes les interfaces dans le fichier /etc/network/interfaces.

Il faut indiquer à ifplugd de prendre en charge les deux interfaces de la manière suivante :

# ifplugd
allow-hotplug eth0 eth1

Puis décrire le mapping des interfaces réseaux avec le script guessnet-ifupdown.

# Interface Mapping
mapping eth0 eth1
        script guessnet-ifupdown
        map default: unknown 

Ensuite indiquer les spécificités de chaque réseau :

iface home inet static
        address 192.168.42.42
        netmask 255.255.255.0
        gateway 192.168.42.254

        dns-search csquad.lan
        dns-nameservers 192.168.42.3 192.168.17

        test1 peer address 192.168.42.253 00:12:17:07:C2:C9

iface work inet static
        address 10.0.0.101
        netmask 255.255.255.0
        gateway 10.0.0.1

        dns-search easter-eggs.fr
        dns-nameservers 10.0.0.2 10.0.0.20

        test1 peer address 10.0.0.1 00:50:22:8b:9c:d2

# DHCP par défaut
iface unknown inet dhcp

Les directives intéressantes sont :

  • dns-* : la configuration des serveurs DNS via resolvconf.
  • test* : les conditions permettant à guessnet d’identifier le réseau. La plupart du temps, il s’agit de l’adresse MAC du routeur par défaut.

Test de fonctionnement

Après la configuration, il ne vous reste plus qu’a tester l’ensemble en :

  • Branchant/Débranchant le câble réseau.
  • Activant/Désactivant le point d’accès Wifi.

Si tout se passe bien, vos interfaces réseaux seront configurées automatiquement. Dans le cas contraire, vous trouverez de nombreuses informations dans syslog, vous permettant d’identifier le problème.

Filed under: Debian,Network — Tags: — cscm @ 21:21

3 responses to “Configuration automatique des interfaces réseaux sous Debian GNU/Linux.”

  1. Philippe says:

    Ma copine aimerait que je lui installe linux sur son laptop mais est-ce une bonne idée ?

    Apres avoir fait un état des lieux de ce qui existe, j’ai opté pour la solution KDE qui répond le mieux aux besoins:
    – Quantité importante de logiciels développés pour KDE (kopete pour msn, etc…)
    – Intégration forte de ces logiciels dans l’environement KDE.
    – Qualité graphique

    Cependant, beaucoup de problèmes se posent quant à l’utilisation nomade du wifi (tous les lieux où elle ira et pour lesquels je ne lui aurai pas configuré la connexion sans fil).

    Pour résoudre ces problèmes, il faudrait un système intégré à KDE comportant les fonctionalités suivantes:
    – Notification à l’utilisateur de la perte du réseau
    – Listing automatique des réseaux existant (connus et inconnus)
    – Autoconfiguration + popup informant de l’état du résau
    – Wizard SIMPLE pour la configuration de nouveaux réseaux (choix du réseau dans une liste + passphrase, et c’est tout).

    En gros un système à la Windows lui permettant de s’en sortir toute seule.

    Au niveau des outils bas-niveau à utliser, je suis venu à la même conclusion que cet article (wpasupplicant, ifplugd, etc…) mais cette solution n’est toujours pas user friendly et les solutions existantes (kwifimanager, kwlan, …) ne le sont pas vraiment plus..

    Est ce qu’il existe un projet utilisant ces outils et proposant une interface graphique intégrée à KDE ?

  2. cscm says:

    Bonjour,

    Pour ma part ma copine et ma mère utilisent Linux sur leur machine de travail ;0)
    Donc c’est toujours une bonne idée de l’installer sur le portable de votre copine.

    Pour ma part, je pense que la solution la plus avancer pour configuer un réseau sans fil,
    est Network Manager ( http://www.gnome.org/projects/NetworkManager/ ).

    C’est une application gnome, mais elle s’intégre parfaitement dans un environnement KDE.

    Voila

  3. tibo says:

    Excellent, c’est pile ce que je recherchais.

    J’aurais encore deux demandes d’info supplémentaires :
    – Si je suis en dhcp, je mets :
    iface home inet dhcp
    test1 peer address 192.168.42.253 00:12:17:07:C2:C9

    – Je dois pouvoir configurer dynamiquement le proxy utilisé (pour apt ainsi que pour mon browser).
    Comment puis-je faire ?

Powered by WordPress