Ifplugd et wpasupplicant

De SeRoM - Wiki
Aller à : navigation, rechercher

Description

Il est possible de ne plus devoir configurer à chaque fois les paramètres réseau de vos cartes, lorsque vous changez de localisation (batiment, etc.) Nous allons donc installer 3 paquets permettant cela, que ce soit en filaire ou pas.

wpasupplicant

permet de se connecter à un AP spécifié dans un fichier de configuration que nous verrons plus tard.

ifplugd

démon qui démarre et arrête les interfaces lorsqu'un câble Ethernet est branché ou débranché. Il sait aussi détecter les associations à un point d'accès ou lorsqu'un nouveau point d'accès devient disponible.

resolvconf

permet de faciliter la maintenance du fichier /etc/resolv.conf

Installation

apt-get install ifplugd wpasupplicant resolvconf guessnet

Configuration

On va commencer par spécifier les AP auxquels on souhaite que wpasupplicant s'associe quand ceux ci sont détectés. Les fichiers de configuration de wpasupplicant se trouvent dans: /etc/default/wpasupplicant /etc/wpa_supplicant.conf (si celui-ci n'existe pas, créez le)

/etc/default/wpasupplicant

 ENABLED=1
 OPTIONS="-i eth2 -D wext -w -c /etc/wpa_supplicant.conf"

Dans mon cas, comme vous pouvez voir, mon wifi se trouve sur eth2, le driver pour ipw2200 est wext (et non ipw, car celui-ci bug), et le fichier de configuration est /etc/wpa_supplicant.conf. N'hésitez donc pas à modifier les OPTIONS en fonction de votre environnement (cfr man wpa_supplicant).

/etc/wpa_supplicant.conf

 ctrl_interface=/var/run/wpa_supplicant
 ctrl_interface_group=0
 eapol_version=1
 ap_scan=1
 fast_reauth=1

 //Specifiez ensuite les AP auxquels vous souhaitez vous connecter
 //Voici un exemple avec une clé WEP

network={
 ssid="monEssid"
 key_mgmt=NONE
 wep_key0=maCle // ou wep_key0="maCle" si texte et non hexa
 wep_tx_keyidx=0
 priority=1
}

dpkg-reconfigure ifplugd

Choisissez auto pour les interfaces à surveiller (les surveillera toutes) et all pour les interfaces hotplug (comme ça on prend aucun risque). Laissez les paramètres par défaut que propose ifplugd pour son lancement.

/etc/network/interfaces

Voici un exemple selon ma configuration:

#The loopback network interface
 auto lo
 iface lo inet loopback

mapping eth0
 script /usr/sbin/guessnet-ifupdown
 map default: default-eth0
 map timeout: 3
 map verbose: true

mapping eth2
 script /usr/sbin/guessnet-ifupdown
 map default: default-eth2
 map timeout: 3
 map verbose: true

#LOCAL ELEC
 iface esi-l504 inet static
 test-peer address 192.168.192.1 mac 00:A0:24:75:95:E6
 dns-nameservers 152.158.16.48 152.158.2.48
 address 192.168.192.12
 netmask 255.255.192.0

#LOCAL MVH
 iface esi-l601 inet static
 test-peer address 172.16.0.4 mac 00:80:5F:F4:9A:7D
 dns-nameservers 172.16.0.4
 address 172.16.0.218
 netmask 255.255.255.0
 gateway 172.16.0.4

#WIFI MAISON
 iface maison inet dhcp
 test-peer address 192.168.2.1 mac 00:C0:49:6D:E0:12

Comme vous pouvez voir, dans mon exemple j'automatise au niveau de 3 réseaux (dont un wifi). En fait on va chercher l'adresse IP du routeur sur le réseau et vérifier son adresse mac (trouvée par la commande arp précédemment). Si IP + mac correspondent, je configure mes paramètres tcp-ip de telle ou telle façon. Comme vous pouvez le remarquer, ici plus de auto eth0 ou autre. Simplement ceci suffit. Et bien sur ce fichier ne s'occupe pas de savoir si on est en wifi ou filaire, il se limite a tester l'ip du routeur + sa mac et va adapter la configuration selon. Donc si wpasupplicant a bien fait son travail, ça ne posera aucun problème.

Maintenant que tout est presque fait, il reste une dernière chose à faire.

wpasupplicant en daemon

cp /usr/share/doc/wpasupplicant/examples/wpa_supplicant.init-daemon /etc/init.d/wparoamd
chmod +x /etc/init.d/wparoamd

vim /etc/init.d/wparoamd
 INTERFACE="eth2" // Dans mon cas du moins eth2 est le wifi
 CONFIG="/etc/wpa_supplicant.conf"
 DRIVER="wext"

update-rc.d wparoamd start 15 2 3 4 5 . stop 90 0 1 6 .
invoke-rc.d wparoamd start

Conclusion

Nous arrivons à la fin de ce how to, j'espère avoir été assez clair dans mes explications. Pour ma part tout fonctionne très bien à l'exception d'une petite chose que je n'étalerai pas ici, mais bien sûr le how to sera mis à jour dès le problème résolu.