WiFi console

De Cliss XXI
Sauter à la navigation Sauter à la recherche

Dépannage d'une liaison Wifi

Test physique

Avant de foncer tête baissée sur l'écran, la première chose est de vérifier l'environnement. Le Wifi c'est avant tout de la radio et elle a ses règles. En pratique:

  • Est ce que le(s) point(s) d'accès sont en hauteur c'est à dire au moins à 2m du sol (statistiquement il y a moins d'obstacle en hauteur)
  • Est ce que l'antenne côté station est dégagée (l'unique antenne d'une carte PCI dans une machine posée au sol contre un mur est un bon contre-exemple)
  • Est ce que la distance est acceptable (en intérieur le maximum -indicatif- est entre 15 et 50 mètres)
  • Il y a t'il des obstacles radio
    • métal (armoire/étagère métal, grillage, béton armé, cloison contenant de la tôle)
    • mur brique épais (20 à 50 cm), mur béton
    • verre (double vitrage, laine de verre dans les cloison)
    • eau, liquide (aquarium, fontaine, humain)
  • Il y a t'il des sources de perturbation
    • 5m autour d'un four à micro onde allumé
    • détecteur de présence (alarme, allumage automatique des lumières), certain fonctionnent en 2.4GHz

Que voit la machine

Un connection wifi c'est 3 éléments:

  • ifconfig / ip (gérer l'interface, up/down, adresse mac)
  • iwconfig / iw (configurer la radio, le canal, la puissance)
  • wpa_supplicant (pour le cryptage wpa/wpa2 psk ou 802.1x)

un quatrième qui permet de faire le lien avec le bouton radio on/off souvent présent sur un portable:

  • rfkill, permet de lister l'état des différents périphériques radio et leur état. Certain ne

sont pas modifiable par la console et nécessite une action physique.

force du signal et protocole

  • audit de la liason actuelle
rfkill list
iwconfig <dev>

ou

iw dev <dev> link

La valeur (négative) en dBm varie en fonction de l'antenne, du constructeur, de la fréquence, des pilotes et de la charge de la batterie ne vous attendez donc pas à une mesure extrêmement précise et identique entre 2 appareils. Néanmoins voici quelques repères:

    • de 0 à -30 dBm vous êtes tellement près que je me demande pourquoi vous n'utilisez pas un câble.
    • de -30 à -65 dBm pas de problème
    • de -65 à -75 dBm assez variable selon les cartes et le protocole utilisé (a/b/g/n)
    • de -75 à -90 dBm liaison difficile (web, mail, mais video ou voip quasiment impossible)
    • en dessous de -90 dBm si la liaison passe, vous avez au mieux un port serie avec latence aléatoire...
  • scan de l'environnement:
iwlist <dev> scan

ou

iw dev <dev> scan

D'autre part, le scan vous renseigne sur le canal (certaine vieille carte 802.11b/g ne voit pas les canaux 12 à 14) et le protocole annoncé par le point d'accès, pas de cryptage, WEP, WPA (PSK ou 802.1x). Si l'absence de SSID vous renseigne sur fait que celui ci est caché, rien ne peut vous renseigner directement sur le filtrage d'adresse MAC (en tout cas dans les "beacons" envoyé par le point d'accès).

espionnage d'une tentative de connexion

  1. lancer
    iw event -t -f
    dans un termial
  2. essayez de vous connecter en utilisant votre chemin habituel (l'applet réseau de gnome ou consort)

iw event devrait vous renseigner sur ce qui bloque.

Test d'une connexion manuelle

passer en mode manuel

Les 3/4 du temps, wpa_supplicant est déjà lancé et vous allez avoir besoin de le tuer mais il est relancé automatiquement par network-manager...

Désactiver la prise en charge des interfaces wifi par network manager (permet de garder la main en ssh lorsqu'on passe par l'interface filaire):

nmcli nm wifi off

on tue wpa_supplicant et on vérifie qu'il n'est plus la.

killall wpa_supplicant ; pidof wpa_supplicant

On se fabrique un petit fichier de conf wpa (il y a des exemples dans /usr/share/doc/wpasupplicant/example) et on lance wpa_supplicant en console avec un mode debug:

wpa_supplicant -i <dev> -c <mon_fichier_de_conf> -d

Example de fichier de conf:

ctrl_interface=/var/run/wpa_supplicant

network={
        ssid="example wpa-psk network"
        key_mgmt=WPA-PSK
        proto=WPA
        pairwise=TKIP
        group=TKIP
        psk="secret passphrase"
}

Le même en WPA2:

ctrl_interface=/var/run/wpa_supplicant

network={
        ssid="example wpa-psk network"
        key_mgmt=WPA-PSK
        proto=RSN
        pairwise=CCMP
        group=CCMP
        psk="secret passphrase"
}