Wireless en mode Roaming en Linux

Objectiu:

L’objectiu d’aquest tutorial és molt simple, poder accedir a xarxes sense fils des del nostre portàtil. Per a la configuració s’ha utilitzat un Debian Lenny amb una tarja d’accés WiFi Ralink RT2860. El dispositiu no importa massa, però algun paràmetre pot ser diferent segons el driver utilitzat.

S’accedirà a xarxes protegides amb xifratge WPA. Adaptant la configuració es pot fer que el sistema accedeixi sense massa dificultats a xarxes amb xifratges com ara WEP, o xifratge d’empresa emprant un Radius.

Es considera que el driver està correctament instal·lat i és funcional. No entrarem en temes de modprobe, insmod i similars…

Configuració:

Tenim diverses opcions, i d’altres que no comentarem, per configurar l’accés WiFi de la nostra màquina. El problema és que existeixen un munt de configuracions disponibles i variades i no és l’objectiu d’aquest tutorial explicar-les totes, ni molt menys. Un cop s’entengui el proces bàsic es recomana llegir la documentació especifica del cas que ens pertoqui.

NetworkManager:

La primera opció senzilla que tenim és utilitzar NetworkManager. Aquesta solució funcionarà correctament sempre que la xarxa a la que ens connectem disposi d’assignació d’adreces IP de manera dinàmica (DHCP). En cas de no ser així la xarxa no es configurarà i no tindrem connexió.

Si aquesta és la nostra situació (tenir sempre accés a xarxes amb DHCP) l’única configuració que hem de fer és eliminar les configuracions de les interfícies que volem que NetworkManager gestioni (ethX, raX, wlanX…) del fitxer /etc/network/interfaces.

Aquest quedarà així:

auto lo
iface lo inet loopback

Per instal·lar NetworkManager fem:

$ apt-get install network-manager network-manager-gnome
$ adduser usuari netdev

A l’arrencar de nou l’entorn Gnome tindrem nm-applet carregat i podrem configurar les nostres xarxes de manera senzilla i gràfica.

Si NetworkManager no troba xarxes sense fils pot ser degut a que la interfície està baixada. Això ho podem solucionar amb:

$ ifconfig interfície up

Wicd:

Una altra possibilitat força similar és Wicd. Aquesta encara es troba en fase de desenvolupament però sembla que serà força més versàtil a l’hora de configurar les xarxes, així com el seu adreçament, que NetworkManager. La pàgina web és: wicd.sourceforge.net

Opcions bàsiques de Gnome:

En el menú Sistema > Administració > Xarxa de Gnome hi ha la opció de configurar accessos molt bàsics a xarxes amb xifratge WEP o sense xifratge. Com que no és l’objectiu d’aquest tutorial no comentarem res més al respecte.

Opció “Deixar-se de tonteries i configurar-ho manualment, que per això utilitzem GNU/Linux no?”, també coneguda com a masoquista 🙂 :

Tot i que sembli mentida aquesta és la solució, tot i que la menys intuïtiva, més versàtil i poderosa de totes. Un cop configurada la base la resta surt gairebé sol. Anem per passos.

El primer que hem de configurar és l’arxiu /etc/network/interfaces, que és el que fan servir comandes com ara ifup o ifdown per carregar la configuració de les diferents interfícies de xarxa. La configuració de la interfície ra0 (el nom pot ser diferent segons el driver i la detecció del sistema, ho trobarem amb ifconfig -a, o iwconfig) quedarà així:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

# Xarxa sense fils
allow-hotplug ra0
iface ra0 inet manual
    wpa-driver wext
    wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf

iface default inet dhcp

iface xarxa1 inet dhcp

iface xarxa2 inet static
    address 192.168.1.20
    netmask 255.255.255.0
    gateway 192.168.1.1
    dns-nameservers 192.168.1.1

Com es pot veure estem configurant el roaming per a 3 xarxes, una per defecte (default), una xarxa amb adreçament automàtic (xarxa1) i una altra amb adreçament estàtic (xarxa2). Les dues últimes les associarem a punts d’accés diferents.

Anem a configurar l’arxiu /etc/wpa_supplicant/wpa_supplicant.conf. En el nostre cas és com aquest:

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

network={
    ssid="AccesPoint1"
    key_mgmt=WPA-PSK
    pairwise=TKIP
    psk="contrasenya1"
    id_str="xarxa1"
}

network={
    ssid="AccesPoint2"
    key_mgmt=WPA-PSK
    pairwise=TKIP
    psk="contrasenya2"
    id_str="xarxa2"
}

Aquí veiem que el paràmetre id_str ha de concordar amb el que s’ha configurat en l’arxiu /etc/network/interfaces ja que cada configuració de xarxa dependrà del punt d’accés al que ens connectem.

Això és tot. Quan arranquem el sistema les interficies de xarxa s’aixecaran i es configuraran mitjançant l’arxiu /etc/network/interfaces que, alhora, farà les supliques wpa mitjançant l’arxiu /etc/wpa_supplicant/wpa_supplicant.conf escollint la configuració del punt d’accés que es trobi disponible en aquell moment per mitja de la configuració en id_str.

Com a nota addicional tenim que per aixecar una interfície podem fer:

$ ifup interfície

Per baixar-la podem fer:

$ ifdown interfície

Opcions avançades:

Es pot donar el cas que en un moment donat es trobi disponible més d’un punt d’accés configurat i que ens interessi accedir a un en concret. Per fer això podem utilitzar l’eina wpa_cli.

Aquesta ens permetra llistar les configuracions de wpa_supplicant:

$ wpa_cli list
0	AccesPoint1	any	[CURRENT]
1	AccesPoint2	any

Si en aquest moment ens interessés accedir a l’altre punt d’accés (AccesPoint2) farem el següent:

$ wpa_cli sel 1

L’1 correspon al número de la xarxa que apareix a la llista superior.

Documentació:

Les eines utilitzades en aquesta entrada tenen moltes més opcions, com sempre. És recomana molt llegir la documentació de:

$ man ifconfig
$ man ifup
$ man ifdown
$ man iwconfig
$ man wpa_supplicant
$ man wpa_cli

i sobretot, la que conté mes informació interessant sobre el tema:

$ man wpa_supplicant.conf