Configuración manual wpa_supplicant

Índice

1 - Instalación paquete wpa_supplicant
2 - Modificación /etc/network/interfaces
3 - Archivo wpa_supplicant.conf
4 - wpa_passphrase (PSK cifrado)
5 - Otra posible configuración
6 - Wpa_Cli y sus posibilidades
7 - Fuentes de referencia


1- Instalación paquete wpa_supplicant

Inicialmente hace falta tener instalado el paquete wpasupplicant. Para ello debemos asegurarnos de lo tenemos instalado, por ejemplo con:

# aptitude search wpasupplicant

p   wpagui           - GUI for wpa_supplicant
i   wpasupplicant  - cliente para poder usar WPA y WPA2 (IEEE 802.11i)

La i indica que el paquete está instalado. La otra opción que aparece es la misma aplicación pero con entorno gráfico. En caso de que no esté instalado, utilizamos:

aptitude install wpasupplicant

2- Modificación /etc/network/interfaces

Una vez instalado, debemos modificar el archivo /etc/network/interfaces, para que quede algo mas o menos como:

iface wlan0 inet static
....
wpa-driver wext
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

El campo wpa_driver hace referencia al driver de la tarjeta que tengamos instalados, por lo que deberemos asegurarnos e informarnos para no andar dando palos de ciego. En esta pequeña lista aparecen los drivers mas comunes:

  • hostap --- Host AP driver (Intersil Prism2/2.5/3)
  • madwifi --- MADWIFI 802.11 support (Atheros...)
  • wext --- Linux wireless extensions (generic)
  • atmel --- ATMEL AT76C5XXx (USB, PCMCIA...)
  • ndiswrapper --- Linux ndiswrapper
  • ipw --- Intel ipw2100/2200 driver
  • wired --- Wired Ethernet driver
  • b43 --- Broadcom Corporation BCM43XX

3- Archivo wpa_supplicant.conf

Una vez hecho esto, debemos configurar el archivo /etc/wpa_supplicant/wpa_supplicant.conf, si no existe lo creamos necesariamente. Este archivo puede estar en varios lugares, por lo que hay que fijarse bien donde está situado y lo configuramos tal que asi:

ctrl_interface=/var/run/wpa_supplicant
network={
   ssid=”essid”
   scan_ssid=1
   proto=WPA
   key_mgmt=WPA-PSK
   psk=”contraseña”
}

Deberemos cambiar las líneas que hacen referencia a nuestro ssid (nombre de nuestra red) y a pks (contraseña secreta).

4- wpa_passphrase (PSK cifrado)

La configuración anterior muestra en texto plano la contraseña que utilizaremos a la hora de conectarnos al AP, mientras que si utilizamos wpa_passphrase, ésta quedará cifrada. Para ello haremos algo como:

# wpa_passphrase essid contraseña

network={
        ssid="essid"
        #psk="contraseña"
        psk=4ccf926798d5302bec3921f5116989511bf430308b0384eca60debd23ae4ab45
}

Después copiamos la salida de psk= y la pegamos en la línea psk=”contraseña” del archivo /etc/wpa_supplicant/wpa_supplicant.conf, de manera que quede:

ctrl_interface=/var/run/wpa_supplicant
network={
   ssid=”essid”
   scan_ssid=1
   proto=WPA
   key_mgmt=WPA-PSK
   psk=”4ccf926798d5302bec3921f5116989511bf430308b0384eca60debd23ae4ab45"
}

Se pueden añadir todas las configuraciones WPA que nos haga falta, siempre y cuando lo hagamos en bloques network{...}

Para lanzar el demonio wpa_supplicant, debemos escribir en una shell:

wpa_suppplicant -B -w -c /etc/wpa_supplicant.conf -D wext -i wlan0

Explicación:
-B (Background): arranca el demonio en segundo plano.
-w (Wait): espera a que la interfaz esté levantada para correr el demonio.
-c ruta: indica la ruta donde está wpa:supplicant.conff
-D driver: especifica el driver de nuestra tarjeta wifi.
-i interfaz: especifica la interfaz que se va a utilizar.

5- Otra posible configuración

Para que el demonio sea lanzado cuando se levanta la interfaz, debemos insertar en el archivo /etc/network/interfaces las líneas:

pre-up wpa_supplicant -B -ieth2 -Dwext -c/etc/wpa_supplicant /wpa_supplicant.conf
post-down killall -q wpa_supplicant

También podemos probar a cambiar el archivo wpa_supplicant.conf con la siguiente configuración. Las líneas indicadas con -> no están en la configuración anterior:

ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
ap_scan=1
network={
        ssid="xxxx"
        scan_ssid=1
        proto=WPA
        key_mgmt=WPA-PSK
   ->   group=TKIP CCMP WEP104 WEP40
   ->   pairwise=TKIP CCMP
   ->   group=TKIP
        psk="xxxxxxxxx"

Wpa_Cli y sus posibilidades

Wpa_cli es un poderoso frontend con el que podemos escanear la red, conectarnos, comprobar el estado, depurar la conexión e introducir los parámetros para nuestras conexiones... Entre otras tantas opciones...

Para el caso que nos ocupa, podemos utilizar varios comandos, entre ellos:

-wpa_cli list_networks con el que podemos listar las redes que están accesibles.

# wpa_cli list_networks

Selected interface 'wlan0'
network id / ssid / bssid / flags
0       essid   any     [CURRENT]

-wpa_cli scan Escanea la red en busca de resultados

# wpa_cli scan

Selected interface 'wlan0'
OK

-wpa_cli scan_results Muestra los resultados obtenido con wpa_cli scan

# wpa_cli scan_results

Selected interface 'wlan0'
bssid / frequency / signal level / flags / ssid
XX:XX:XX:XX:XX:XX       2412    206     [WPA-PSK-TKIP+CCMP][WPA2-PSK-TKIP+CCMP-preauth] essid

-wpa_cli status Muestra datos y el estado de la conexión.

# wpa_cli status

Selected interface 'wlan0'
bssid=XX:XX:XX:XX:XX:XX
ssid=essid
id=0
pairwise_cipher=CCMP
group_cipher=TKIP
key_mgmt=WPA-PSK
wpa_state=COMPLETED
ip_address=XX.XX.XX.XX

Para lanzar el demonio wpa_supplicant, se debe utillizar el comando wpa_cli -B interface wlan0:

# wpa_cli -B interface wlan0

Selected interface 'wlan0'
Deb:/# wpa_cli status
Selected interface 'wlan0'
bssid=XX:XX:XX:XX:XX:XX
ssid=essid
id=0
pairwise_cipher=CCMP
group_cipher=TKIP
key_mgmt=WPA-PSK
wpa_state=COMPLETED
ip_address=XX.XX.XX.XX

7- Fuentes de referencia

- http://www.esdebian.org
- http://ftp.cl.debian.org/man-es/wlan.html
- http://linux.die.net/man/8/wpa_supplicant
- http://linux.die.net/man/8/wpa_cli