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

Powered by WordPress