Bonjour,

Suite � ma question et aux r�ponses que j'ai alors re�ues, je me suis
attel� � l'�valuation des diff�rentes alternatives. J'ai t�ch� d'�tre
exhaustif (installer tous les paquets, voir ce qu'ils fournissent,
lire leur documentation respective et deviner ce qu'ils font et ne
font pas. En revanche, je ne les ai pas tous configur�s et test�s
grandeur nature). Relectures et avis contraires ou compl�mentaires
sont les bienvenus, d'autant qu'on pourrait envisager ajouter une
version relue de ce courriel � la FAQ DUF.


Question : j'ai un ordinateur (typiquement un ordinateur portable)
avec une ou plusieurs interfaces r�seau, se d�placant d'un endroit �
un autre, o� ces interfaces doivent �tre configur�es diff�remment.
Comment faire pour passer le plus automatiquement possible d'une
configuration � une autre ?

Analyse : il y a plusieurs sous-probl�mes. J'ai not� :

- la d�tection d'un changement potentiel. On pense � la suspension et
  � la reprise de l'ordinateur (APM/ACPI), au branchement d'un cable
  r�seau, au branchement sur le secteur ou � une station de dockage,
  et � l'ajout d'une carte r�seau PCMCIA. La succession des outils qui
  suivent ne sera d�clench�e que lorsque l'un de ces �v�nements a eu
  lieu. [t�che 1]

- l'indentification de l'�tat actuel/du r�seau actuel. � cette phase,
  on essaie de contacter des �quipements � permanents � du r�seau qui
  permettraient d'identifier o� l'on se trouve, ou de d�tecter que
  l'on n'est plus connect� � eux. [t�che 2]

- la reconfiguration du syst�me, t�che que l'on peut � son tour
  diviser en deux aspects :
  - la reconfiguration de l'interface r�seau proprement dite. A
    minima, fixer ou obtenir une adresse IP, adapter /etc/resolv.conf
    et les routes. [t�che 3.a]
  - la reconfiguration des services voire des applications, ou comment
    signifier � son agent de transport de courriels (MTA ;-) ou � son
    navigateur d'utiliser un autre mandataire, etc. [t�che 3.b]

Les approches : certains outils se cantonnent � r�soudre un de ces
sous-probl�mes, d'autres tentent d'en cumuler plusieurs, le plus
souvent l'identification du r�seau et la reconfiguration ad�quate.

Une approche Debian ? Debian, par l'interm�diaire de son paquet
��ifupdown�� (priorit� : importante), propose un m�canisme de
��mapping�� (appelons-�a ��sch�ma��) qui permet, lorsque l'on souhaite
configurer une interface (eth0, par exemple) par ��ifup eth0��,
d'appeler un script qui va d�tecter o� l'on se trouve. C'est en
fonction du r�sultat de ce script que ifup va configurer correctement
l'interface (IP fixe ou DHCP, passerelle mais pas /etc/resolv.conf).
De plus, il est possible de pr�ciser des actions � ex�cuter une fois
qu'un sch�ma particulier a �t� mis en place. ifupdown permet donc de
r�aliser la t�che 3.a et fournit le minimum pour nous permettre de
faire ce que l'on veut pour la t�che 3.b.

Je viens de d�couvrir (et d'installer) resolvconf, (qui para�t tr�s
compliqu� et) qui r�soud le probl�me du fichier /etc/resolv.conf en
rajoutant des lignes "dns-search xxx" et "dns-nameservers xxx yyy" au
fichier /etc/network/interfaces. Enfin !


T�che 1 : d�tection d'un changement potentiel

Je ne ma�trise vraiment pas cette partie, alors je fais vite. En gros,
il est conseill� d'utiliser APM ou ACPI (mutuellement exclusifs) et
d'installer apmd ou acpid, afin de pouvoir ex�cuter des scripts
lorsqu'il d�tecte un changement (suspension, reprise, branchement sur
l'alimentation et peut-�tre sur une station de dockage).

Il y a aussi ifplugd, un d�mon tr�s simple qui (par d�faut) lance
��ifup/ifdown <l'interface>�� lorsqu'un cable vient d'�tre
branch�/d�branch�. laptop-net (�valu� plus bas dans ce document)
int�gre cette fonctionnalit�.

Il faudrait voir si hotplug ne peut pas nous �tre utile. Il me semble
qu'il ne se lance qu'une fois que l'interface r�seau est configur�e,
c'est-�-dire apr�s la bataille, mais un oeil expert pourrait en dire
plus. De m�me, je n'utilise pas les paquets li�s au PCMCIA, mais ils
sont surement capables eux aussi de lancer des scripts lorsqu'une
carte vient d'�tre ajout�e ou retir�e.

Pour moi, apmd et ifplugd suffisent.


T�che 2 : identification de l'�tat actuel/du r�seau actuel
T�che 3 : reconfiguration du syst�me

L�, pas mal de paquets s'offrent � nous, certains ne faisant que l'une
des t�ches, d'autres combinant les deux.

divine - Automatic IP configuration detection for laptops
guessnet - Guess which LAN is connected to a network device
ifscheme - scheme control for network interfaces
intuitively - Automatic IP configuration detection for laptops
laptop-net - Automatically adapt laptop ethernet
laptop-netconf - network detection and configuration program for laptops
netenv - Configure your system for different network environments
switchconf - Change system configuration to one of many predefined
whereami - Automatically reconfigure your (laptop) system for a new location

Allons-y par ordre alphab�tique


divine (Automatic IP configuration detection for laptops)

- T�ches 2 et 3.a, laisse une possibilit� de faire 3.b � la main
- Ne teste que l'IP d'une machine distante (pas l'adresse MAC)
- Pas int�gr� du tout � ifupdown (ne renseigne pas /etc/network/interfaces)
- Ne supporte pas le DHCP
- Format du fichier de configuration d�bile
- Se d�finit lui-m�me comme un ��quick hack��, posant des probl�mes de s�curit�
=> Pas de raisons de l'installer


guessnet (Guess which LAN is connected to a network device)

- T�che 2 uniquement
- Teste l'IP et optionnellement la MAC d'une machine distante, peut
  aussi tester la pr�sence d'un concentrateur d'acc�s (via un modem
  pppoe) (fonctionnalit� qui reste � �prouver) ou lancer tout script
  ext�rieur. Aussi, inclut un test de pr�sence de cable r�seau.
- Con�u pour les ��sch�mas�� d'ifupdown (compl�tement int�gr� � lui),
  donc supporte tout ce que ifupdown supporte (IP statique, DHCP, ...).
  Penser au paquet resolvconf pour le fichier /etc/resolv.conf.
- A recourt � des ruses pour se passer des options dans le fichier
  /etc/network/interfaces. Lisibilit� correcte, sans plus.
- Laisse ifup remplir la t�che 3.a et repose sur le m�canisme de ifup
  pour la t�che 3.b (scripts lanc�s par ifup apr�s que l'interface
  soit configur�e)
- Fournit des scripts prometteurs (test-dhcp, test-wifi-ap, etc...) mais
  documentation incompl�te
=> Bien, mais ne convient que pour une seule interface � la fois


ifscheme (scheme control for network interfaces)

- Int�gr� � ifupdown (permet d'activer un sch�ma particulier)
- Ne fait rien (suppose la localisation d�j� connue, repose sur
  ifupdown pour reconfigurer le syst�me), si ce n'est qu'il active
  un sch�ma d�crit dans /etc/network/interfaces.
=> Pour ceux qui veulent manuellement, mais proprement (� la Debian)
   reconfigurer leur r�seau. Tout le monde ici est joueur, donc pas de
   raisons de l'installer


intuitively (Automatic IP configuration detection for laptops)

- Semblable � divine, en plus propre
- T�ches 2 et 3.a, avec de quoi lancer ce que l'on veut pour la t�che 3.b
- Teste l'IP et optionnellement la MAC d'une machine distante
- Fichier de conf clair
- Pages de manuel et fichier README
- Utilise des liens symboliques rang�s dans une sous-arborescence par sch�ma :
  /etc/intuitively/boulot/etc/resolv.conf -> /etc/resolv.conf
- Ne supporte pas le DHCP
- Ignore ifupdown
=> Mieux que divine, mais toujours tr�s incomplet


laptop-net (Automatically adapt laptop ethernet)

- Le tout-en-un : t�ches 1, 2 et 3
- S'int�gre � /etc/apm et d�tecte les changements d'�tat du lien r�seau
  (cable branch� ou d�branch�, � la mii-tools)
- Ne teste que les adresses IP (pas MAC)
- Supporte le DHCP
- Ignore ifupdown
- Pas de page de manuel, pas de README, pas de temps � perdre � deviner.
- Bonus : laisse des liens symboliques morts a sa desinstallation
=> Sans doute uniquement utilis� par son auteur, et c'est normal


laptop-netconf (network detection and configuration program for laptops)

- T�che 2, laisse la possibilit� de faire 3.a (et 3.b) � la main
- Ne teste que sur un couple IP+MAC
- Execute un script �crit par l'utilisateur lorsqu'une machine
  distance est identifi�e
- Ne fonctionne que sur une seule interface (!)
- Se dit �tre encore en d�veloppement
- Peu de documentation : courte page de manuel et la doc dans les
  fichiers de conf
- Propose d'utiliser des liens symboliques, il faut �crire son script
  pour les utiliser
- Propose d'utiliser/truander ifupdown (remplacer /etc/network/interfaces)
=> Moins mature et moins complet que guessnet


netenv (Configure your system for different network environments)

- T�che 3.a, laisse la possibilit� de faire 3.b � la main
- Montre une bo�te de dialogue (mode texte) au d�marrage pour faire
  choisir la configuration r�seau (!) Elle peut �tre �vit�e.
- Permet de faire ce que les ��sch�mas�� de /etc/network/interfaces
  permettent d�j� de faire. Inutile pour Debian � part pour la bo�te
  de dialogue de choix et (� v�rifier) l'interface pour d�finir les
  configurations (comme si etherconf supportait plusieurs sch�mas)
- Page de manuel et documentation HTML
=> Pas de raisons de l'installer (voir plut�t ifscheme)


switchconf (Change system configuration to one of many predefined)

- T�che 3.a, pas �vident de faire ce que l'on veut en 3.b
- Utilise des liens symboliques ��de fa�on �l�gante�� (comme intuitively)
- Propose ainsi de truander ifupdown (remplacer /etc/network/interfaces)
- Utilise deux r�pertoires (after.d et before.d) pour ranger des
  scripts (� �crire soi-m�me) que l'on veut lancer avant et apr�s
  chaque changement de configuration. Peu pratique pour lancer
  certains scripts seulement dans certaines configuration : on
  utilisera plut�t des lignes ��up�� dans /etc/network/interfaces
=> Pas de raisons de l'installer


whereami (Automatically reconfigure your (laptop) system for a new location)

- T�ches 2, 3.a et propose plusieurs scripts pour 3.b
- Impressionnant pour la d�tection de la situation : permet de tester
  la pr�sence d'une adresse IP et/ou MAC, la r�ponse � une requ�te
  DHCP, la pr�sence d'un cable r�seau, d'un concentrateur d'acces
  PPPOE, d'un motif dans la sortie de ��lspci -v�� (pour d�tecter une
  station de dockage), d'un module charg� (lsmod), d'un point d'acc�s
  WiFi, et enfin de tester si l'on a re�u des octets sur l'interface.
- Permet de cascader les tests, de tester successivement plusieurs
  interfaces : les fichiers de conf d'exemple sont atrocement
  compliqu�s mais montrent que pratiquement toutes les situation
  peuvent �tre d�crites et g�r�es.
- Ignore /etc/network/interface, typiquement. Reconfiguration de l'IP
  � la main, apparemment (!)
- Permet d'ex�cuter tout script quand on arrive, quand on part ou
  simplement quand on est dans une situation d�termin�e.
- Fournit des scripts pour adapter bins, masqmail, le fichier de conf
  de Netscape (il y a un kill-netscape, aussi ;-), le fichier
  /etc/resolv.conf, le smarthost d'exim4, d'exim, de postfix et de
  qmail, la timezone, ...
- Optionnellement int�gr� � APM
- Pages de manuel et documentation au format HTML (pas parfaitement � jour)
- Au final, impressionnant pour la t�che 2, un peu faible pour la
  t�che 3.a (ai-je rat� quelque chose ?) et extr�mement flexible et
  pratique, grace � ses scripts, pour la t�che 3.b.
=> Si whereami ne peut pas r�soudre votre probl�me de configuration,
   aucun autre paquet ne pourra le faire. Maintenant, vous pouvez
   peut-�tre vous en tirez avec quelque chose de plus simple que
   whereami...


Et le gagnant est :

Mon cas �tait suffisamment simple pour �tre d�crit par deux sch�mas
dans /etc/network/interfaces (une seule interface r�seau, qui oscille
entre deux r�seaux). Par ailleurs, lorsqu'il s'agit du fonctionnement
du syst�me, je suis attach� � la ��philosophie Unix�� : une t�che par
outil. Aussi, j'utilise :
- T�che 1 (d�tection d'un changement potentiel) : paquets apmd et ifplugd
- T�che 2 (identification de l'�tat actuel) : guessnet
- T�che 3.a (reconfiguration de l'interface r�seau) : ifupdown et ses
  mappings, et le paquet resolvconf pour g�rer /etc/resolv.conf
- T�che 3.b (adaptation des d�mons/serveurs/applis) : pas encore fait,
  mais je pr�vois d'utiliser des scripts persos et d'autres vol�s �
  whereami.

Je n'ai pas eu � modifier la configuration d'apm, d'ifplugd ou de
resolvconf. Voici la partie int�ressante de mon /etc/network/interfaces
(r�dig� � la main). Remarquez les lignes dns-* et test-*.

mapping eth0
        script /usr/sbin/guessnet-ifupdown
        map default: none
        map verbose: true
        
iface eth0-limsi inet static
        address 192.44.78.186
        netmask 255.255.255.0
        broadcast 192.44.78.0
        gateway 192.44.78.22
        dns-search limsi.fr
        dns-nameservers 192.44.78.7 192.44.78.53 192.175.152.129
        test-peer address 192.44.78.22 mac 00:04:23:08:FD:55

iface eth0-famille inet static
        address 192.168.2.26
        netmask 255.255.255.0
        broadcast 192.168.2.255
        gateway 192.168.2.22
        dns-search famille
        dns-nameservers 194.117.200.10 194.117.200.15
        test-peer address 192.168.2.1 mac 00:04:E2:2A:67:28


Je recommande guessnet parce que c'est la m�thode la plus int�gr�e �
Debian : elle permet de d�tecter la localisation et de reconfigurer le
syst�me de fa�on assez �l�gante. En revanche, elle ne pourra pas
cascader les tests comme en est capable whereami (si je n'ai pas le
r�seau filaire, je teste le WiFi, et si par ailleurs telle condition
est remplie, je fais �a en plus). � vous de d�terminer ce qui convient
le mieux � vos exigences ; j'esp�re que ce passage en revue des
diff�rentes approches vous y aidera.

(Daniel D�chelotte (c) 2004 GNU Free Documentation License)
(Ah non c'est pas assez libre)
(Bof on s'en fout)

;-)

-- 
Daniel D�chelotte
                  http://yo.dan.free.fr/

Répondre à