Configuration wifi en WPA sous Debian

Pour les explications, on part du fait que l'AP est propement configuré en WPA(2)-PSK. Voici les infos à connaître sur l'AP:

  • SSID du WLAN
  • Clé WPA (PSK Key)

Pour se connecter au réseau WLAN du routeur on a besoin de wpasupplicant et des wireless-tools :

# aptitude install wpasupplicant wireless-tools

La documentation importante à lire est /usr/share/doc/wpasupplicant/README.Debian.gz, qui explique la configuration spécifique du fichier /etc/network/interfaces pour le wifi.

Configuration en ligne de commande

La première chose à faire de trouver le nom de l'interface réseau de la carte wifi, un simple iwconfig sans argument :

# iwconfig
...
eth0      no wireless extensions.

eth1      unassociated  ESSID:off/any
          Mode:Managed  Channel=0  Access Point: Not-Associated
          Bit Rate:0 kb/s   Tx-Power=20 dBm   Sensitivity=8/0
          Retry limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:off
          Link Quality:0  Signal level:0  Noise level:0
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

...

iwconfig est l'équivalent de ifconfig pour les paramètres particuliers des interfaces wifi, il ne le remplace pas mais le complète.

On scanne les réseaux disponibles avec iwlist :

# iwlist eth1 scanning
eth1      Scan completed :
          Cell 01 - Address: 00:21:29:B5:D7:6F
                    ESSID:"mon_ssid"
                    Protocol:IEEE 802.11bg
                    Mode:Master
                    Frequency:2.462 GHz (Channel 11)
                    Encryption key:on
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 6 Mb/s; 9 Mb/s
                              11 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
                              48 Mb/s; 54 Mb/s
                    Quality=92/100  Signal level=-36 dBm
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK
                    Extra: Last beacon: 4ms ago

Ces informations permettent de configurer pour se connecter au point d'accès :

  • Le SSID
  • Le mode
  • Le canal

On règle donc ces paramètres avec “iwconfig” :

# iwconfig eth1 essid mon_ssid
# iwconfig eth1 mode managed
# iwconfig eth1 channel 11

Ensuite, on va créer une entrée pour le réseau auquel se connecter dans le fichier /etc/wpa_supplicant.conf, on utilise la commande wpa_passphrase pour encoder la clé :

# wpa_passphrase mon_ssid ma_passphrase_compliquee
network={
        ssid="mon_ssid"
        #psk="ma_passphrase_compliquee"

        psk=d2d0935c07414ec7c9360e6b0a60aea41d916935408e615f79e58fbc201ba8f8
}

Il faut copier coller le résultat dans /etc/wpa_supplicant.conf, on ajoute au passage quelques configurations adaptées au point d'accès (group et pairwise donnés par iwlist) :

network={
        ssid="mon_ssid"
        key_mgmt=WPA-PSK
        pairwise=CCMP
        group=CCMP
        #psk="ma_passphrase_compliquee"

        psk=d2d0935c07414ec7c9360e6b0a60aea41d916935408e615f79e58fbc201ba8f8
}

Dès que la configuration fonctionne, il faut rééditer le fichier pour supprimer la clé en clair (commentée de toute façon)

Enfin, on peut se connecter au point d'accès en lançant wpa_supplicant :

# wpa_supplicant -ieth1 -c/etc/wpa_supplicant.conf -Dwext
CTRL-EVENT-SCAN-RESULTS
Trying to associate with 00:21:29:b5:d7:6f (SSID='mon_ssid' freq=2462 MHz)
Associated with 00:21:29:b5:d7:6f
WPA: Key negotiation completed with 00:21:29:b5:d7:6f [PTK=CCMP GTK=CCMP]
CTRL-EVENT-CONNECTED - Connection to 00:21:29:b5:d7:6f completed (auth) [id=0 id_str=]

Normalement, wpa_supplicant tourne en tant que daemon. Il faut ajouter les options -B, -f et -P, pour avoir un truc propre avec pidfile et fichier de log :

# wpa_supplicant -B -ieth1 -c/etc/wpa_supplicant.conf -Dwext -P/var/run/wpa_supplicant.eth1.pid -f/var/log/wpa_supplicant.eth1.log

La dernière chose à faire est de configurer l'adresse IP et la route par défaut :

# ifconfig eth1 192.168.0.100 up
# route add default gw 192.168.0.1

ou en DHCP :

# dhclient3 eth1

Configuration du fichier "interfaces"

On peut indiquer un certain nombre d'options supplémentaires pour le WPA dans un bloc de configuration du fichier /etc/network/interfaces :

iface eth1 inet static
        wpa-ssid mon_ssid
        # plaintext passphrase
        wpa-psk ma_passphrase_compliquee
        wpa-key-mgmt WPA-PSK
        wpa-pairwise TKIP CCMP
        wpa-group TKIP CCMP
        wpa-proto WPA
        # static ip settings
        address 192.168.0.100
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.1

On peut aussi utiliser le fichier de configuration de wpa_supplicant :

iface eth1 inet static
        wpa-conf /etc/wpa_supplicant.conf
        # static ip settings
        address 192.168.0.100
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.1

Conclusion

La configuration du wifi sous Debian s'est bien simplifiée au cours temps, fini les scripts pre-up et compagnie.