RT61 en GNU/Linux y WPA

Aprovechando que me han pedido que escriba un HOWTO sobre cómo configurar WPA-RADIUS con PEAP para la red de la universidad y que nos han traído nuevas tarjetas Ralink RT61 (en concreto unas Conceptronic C54Ri PCI), aquí tenéis un pequeño compendio de enlaces y configuraciones para quienes tengáis que instalar una tarjeta con este chipset. Yo de momento sigo prefiriendo las tarjetas con chipset Atheros y el driver MadWifi-NG, pero reconozco que las tarjetas Ralink no están nada mal 🙂

 

¿Qué drivers instalamos?

Tenemos bastantes alternativas:

Instalación de los drivers

Como siempre que necesitemos compilar un driver o módulo para el núcleo (LKM, Loadable Kernel Module), necesitaremos las cabeceras del kernel contra el que queremos compilar los drivers. En Debian GNU/Linux esto se hace instalando los siguientes paquetes:

apt-get install build-essential linux-headers-$(uname -r)

Una vez hecho esto, descomprimimos y entramos en el directorio:

tar xzf rt61-cvs-daily.tar.gz
cd rt61-cvs-2007032105

En este directorio nos encontramos con el fichero BIG_FAT_WARNING:

cat BIG_FAT_WARNING
NOTE: This driver at this point in time is largely untested.

It basically consists of the base rt61 driver code released by Ralink with
a number of assorted fixes out of the rt2500 tree applied. More fixes need
to be brought over from the rt2500 tree before this driver can be considered
"beta-quality"

Use this driver at your own risk.

See the file <Module/TESTING> with more information on how you can help us
with testing this driver.

---
The rt2x00 development team.

Como vemos, el propio equipo de desarrollo del driver no está lo suficientemente convencido de su trabajo como para considerarlo siquiera beta. La verdad es que a día de hoy no les quito razón, porque el driver me ha colgado el sistema en un par de ocasiones, algo impensable en otros desarrollos.

Instalamos el driver de la manera típica (make && make install):

cd Module
make
make install

Y ya hemos terminado. Ahora lo podremos cargar con:

modprobe rt61

Utilidad de gestión: RutilT

RutilT es una aplicación en GTK2 para GNU/Linux que ayuda a configurar las interfaces WiFi y tiene un soporte extra para las tarjetas Ralink. Todavía está en desarrollo, pero funciona más o menos bien, aunque todavía no tiene integrado el soporte WPA (solamente WEP)..

Podéis descargarla desde http://cbbk.free.fr/bonrom/

Para instalarla, los pasos típicos:

./configure.sh
make
make install

Quizá previamente necesitéis las librerías de desarrollo de GTK2:

apt-get install libgtk2.0-dev

Pantallazos del funcionamiento de RutilT

Pantalla sobre la versión de la herramienta:

rutilt01.jpg

RutilT haciendo site survey para encontrar redes:

rutilt02.jpg

Configuración de una conexión tras haberla seleccionado en la lista de redes:

rutilt03.jpg

rutilt04.jpg

Como usar la tarjeta RT61

Como la mayoría de tarjetas WiFi para GNU/Linux, las tarjetas RT61 soportan la configuración mediante los comandos de las wireless-tools, así que podremos usar el archiconocido comando “iwconfig”:

iwconfig ra0

ra0       RT61 Wireless  ESSID:""
          Mode:Managed  Frequency:2.462 GHz  Bit Rate=54 Mb/s
          RTS thr:off   Fragment thr:off
          Encryption key:off
          Link Quality=81/100  Signal level:-56 dBm  Noise level:-111 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

Antes de conectarnos a un punto de acceso WiFi, es necesario que nos acordemos de habilitar la interfaz:

ifconfig ra0 up

Y luego basta con configurar el ESSID o nombre de la red a la que queremos asociarnos, y pedir una IP por DHCP si es que procede:

iwconfig ra0 essid "UDWIFI"

dhclient ra0

Configuración para redes WiFi con cifrado WEP

Al igual que la configuración estándar, la configuración con cifrado WEP también está soportada por el driver rt61 mediante las wireless-tools, así que se hace de la manera tradicional, con el parámetro key de iwconfig. Estas dos líneas hacen lo mismo, configuran como clave WEP la palabra “melon”, tanto en ASCII como en hexadecimal:

iwconfig ra0 key "s:melon"
iwconfig ra0 key 6D656C6F6E

Configuración para redes Wifi con cifrado WPA-Personal (WPA-PSK, Pre-Shared Key)

Para utilizar WPA es preciso tener un “supplicant” 802.1x. En GNU/Linux tenemos “wpa_supplicant”. La Instalación de wpa_supplicant es muy sencilla en Debian GNU/Linux:

apt-get install wpasupplicant

El problema está en que todavía no incluyen el driver ralink entre los soportados y hay que compilar wpa_supplicant a mano para que lo soporte. Para ello habrá que hacer lo siguiente:

1) Descargar y descomprimir wpa_supplicant:

wget http://hostap.epitest.fi/releases/wpa_supplicant-0.5.7.tar.gz
tar xzf wpa_supplicant-0.5.7.tar.gz
cd wpa_supplicant-0.5.7
cp ../RT61_Linux_STA_Drv1.1.0.0/WPA_Supplicant/* .
cp defconfig .config

2) Compilarlo (quizá necesites hacer apt-get install libssl-dev):

make

3) Configurarlo. Copiamos un fichero de ejemplo:

cp /usr/share/doc/wpasupplicant/examples/wpa-psk-tkip.conf /etc/wpa_supplicant

Y lo modificamos un poco fijándonos sobre todo en la línea del SSID y en la PSK:

vi /etc/wpa_supplicant/wpa-psk-tkip.conf

network={
        ssid="linksys"
        key_mgmt=WPA-PSK
        proto=WPA
        pairwise=TKIP
        group=TKIP
        psk="melocoton"
}

Una vez hecho esto, arrancamos wpa_supplicant, indicándole el driver, el interfaz y el fichero de configuración:

wpa_supplicant -Dralink -ira0 -c/etc/wpa_supplicant/wpa-psk-tkip.conf -dd

Si queremos que se quede en segundo plano, sin molestar, habrá que lanzarlo con la opción -B

Configuración para redes Wifi con cifrado WPA-Enterprise (WPA-RADIUS, 802.1x + EAP-PEAP)

Si vamos a usar una configuración similar a la Universidad de Deusto, es decir, WPA-RADIUS con EAP-PEAP para 802.1x, necesitaremos el certificado del servidor para poder asegurarnos que es él realmente (aunque esto no es obligatorio comprobarlo), y un usuario y contraseña válidos dentro del servidor RADIUS (en nuestro caso es el propio Directorio Activo de MS Windows).

Para lo primero, descargar el certificado del servidor, lo copiamos en donde lo vayamos a buscar luego desde el fichero de configuración de wpa_supplicant, por ejemplo:

mkdir /etc/cert
cd /etc/cert
wget http://www.deusto.es/certificado.crt -O ca.pem

Una vez bajado el certificado, solamente queda configurar el fichero de wpa_supplicant:

vi /etc/wpa_supplicant/wpa-radius-peap.conf

# WPA-RADIUS/PEAP

ctrl_interface=/var/run/wpa_supplicant

network = {
        ssid="UDAUTH"
        scan_ssid=1
        key_mgmt=IEEE8021X
        pairwise=CCMP TKIP
        group=CCMP TKIP WEP104 WEP40
        eap=PEAP
        ca_cert="/etc/cert/ca.pem"
        identity="DOMINIO\usuario"
        password="contraseña"
        phase1="peaplabel=1"
        phase2="auth=MSCHAPV2"
}

Hecho esto, lanzamos de nuevo wpa_supplicant, y listo:

wpa_supplicant -Dralink -ira0 -c/etc/wpa_supplicant/wpa-radius-peap.conf -B

Recordad que esto es solamente para asociarse a la red, luego habrá que pedir una IP por dhcp (con dhclient ra0) y demás 😉

9 pensamientos en “RT61 en GNU/Linux y WPA

  1. Javier

    Tambien puedes probar los del proyecto rt2x00 (el driver es rt61pci para tu tarjeta), que son una reescritura desde cero de los drivers (el driver rt61 que utilizas es simplemente el de ralink parcheado por la gente de rt2x00).
    Te dejo el linik: rt2x00.serialmonkey.com/r…
    Para configurar las tarjetas puedes echarle un vistazo al proyecto NetworkManager (http://www.gnome.org/projects/Ne...

    Saludos y felicidades por el articulo 😉

    Responder
  2. txipi

    @javierjc: muchas gracias por los enlaces. Aunque creo que ya he puesto el enlace al proyecto, me parece que el driver rt61pci que comentas es otro. Por otro lado, el network manager me ha dado más penas que alegrías, desconfigurándome las tarjetas de red que configuro con ifconfig o con dhclient, prefiero usar los comandos, piensan menos por mí. De todas maneras, muchas gracias por tu comentario 😉

    Responder
  3. Juanjo

    Los chips ralink me han dado muchas alegrías desde que salieron al mercado (económicos, con fabricantes <em>linux friendly</em> que dan documentación, etc.), aunque yo también creo que los atheros les llevan ventaja.

    Pero bueno… digamos que vienen a cubrir el espacio que dejó intersil al abandonar un poco su serie prism. Muy buen artículo, por cierto 🙂

    Responder
  4. Vicente

    Estoy haciendo todo como lo explicas, pero cuando intento instalar las librerías de desarrollo de GTK2: "me manda por tabaco"

    por cierto tengo "ubuntu 6.10 Kernel 2.6.17-10 generic" claro sin conexion a internet, para eso estoy intentando configurar wifi. no se si servirá de algo

    Ruego me eches una mano, porque me esta echando humo la cabeza, con este tema

    Responder
  5. Alex

    Este driver puede manejar la tarjeta en modo monitor?, lo digo porque en el archivo de configuración no dice nada acerca de ello y además me pasa esto:

    #iwconfig mode monitor
    Error for wireless request "Set mode" (8B06) :
    SET failed on device ra0 : Invalid argument,
    te comento que uso el driver de Ralink.

    Responder
  6. Emilio

    Hola,

    me han sido de mucha ayuda tus indicaciones 🙂

    … pero aún así todavía no tengo la tarjeta funcionando con el wpa_supplicant :-/

    He aplicado los cambios que comentas (bueno, los que que comentan los creadores de los drivers) al wpa_supplicant y lo he conseguido compilar con el soporte para ralink. Ahora me lo ofrece como opción para el driver y todo.

    El caso es que estoy tratando de configurar el network-manager-gnome en un ordenador ajeno, y parece que la conexión inalámbrica la gestiona siempre con el supplicant (a pesar de que en este caso no se va a utilizar wpa, al menos en principio).

    Bien, a lo que iba, pues con el supplicant parcheado no consigo conectarme a una red abierta (ni wpa ni wep ni nada) que he configurado , a pesar de que con iwconfig y demás sí va bien. Ve la red… pero no se asocia a ella 😕

    La salida que obtengo es esta:

    ——–
    wpa_supplicant -Dralink -iwlan0 -c/etc/wpa_supplicant/wpa_supplicant.conf -dd
    Initializing interface ‘wlan0’ conf ‘/etc/wpa_supplicant/wpa_supplicant.conf’ driver ‘ralink’ ctrl_interface ‘N/A’ bridge ‘N/A’
    Configuration file ‘/etc/wpa_supplicant/wpa_supplicant.conf’ -> ‘/etc/wpa_supplicant/wpa_supplicant.conf’
    Reading configuration file ‘/etc/wpa_supplicant/wpa_supplicant.conf’
    ctrl_interface=’/var/run/wpa_supplicant’
    Line: 17 – start of a new network block
    ssid – hexdump_ascii(len=7):
    6d 61 72 69 6e 65 74 marinet
    key_mgmt: 0x4
    Line: 24 – start of a new network block
    key_mgmt: 0x4
    Priority group 0
    id=0 ssid=’marinet’
    id=1 ssid=”
    Initializing interface (2) ‘wlan0’
    EAPOL: SUPP_PAE entering state DISCONNECTED
    EAPOL: KEY_RX entering state NO_KEY_RECEIVE
    EAPOL: SUPP_BE entering state INITIALIZE
    EAP: EAP entering state DISABLED
    EAPOL: External notification – portEnabled=0
    EAPOL: External notification – portValid=0
    wpa_driver_ralink_init
    ralink_set_iface_flags
    wpa_driver_ralink_flush_pmkid
    NDIS: OID_802_11_PMKID (flush) – hexdump(len=8): 08 00 00 00 00 00 00 00
    Own MAC address: 00:80:5a:4f:2f:41
    wpa_driver_ralink_set_key
    wpa_driver_ralink_get_bssid
    wpa_driver_ralink_remove_key
    wpa_driver_ralink_set_key
    wpa_driver_ralink_get_bssid
    wpa_driver_ralink_remove_key
    wpa_driver_ralink_set_key
    wpa_driver_ralink_get_bssid
    wpa_driver_ralink_remove_key
    wpa_driver_ralink_set_key
    wpa_driver_ralink_get_bssid
    wpa_driver_ralink_remove_key
    Setting scan request: 0 sec 100000 usec
    Added interface wlan0
    State: DISCONNECTED -> SCANNING
    Starting AP scan (broadcast SSID)
    Trying to get current scan results first without requesting a new scan to speed up initial association
    wpa_driver_ralink_get_scan_results
    RALINK: AP IEs – hexdump(len=12): 97 11 a9 ea 06 00 00 00 64 00 01 00
    Scan results: 1
    Selecting BSS from priority group 0
    0: 00:12:17:16:09:ff ssid=’marinet’ wpa_ie_len=0 rsn_ie_len=0 caps=0x1
    skip – no WPA/RSN IE
    selected non-WPA AP 00:12:17:16:09:ff ssid=’marinet’
    Trying to associate with 00:12:17:16:09:ff (SSID=’marinet’ freq=2462 MHz)
    Cancelling scan request
    WPA: clearing own WPA/RSN IE
    Automatic auth_alg selection: 0x1
    WPA: clearing AP WPA IE
    WPA: clearing AP RSN IE
    WPA: clearing own WPA/RSN IE
    No keys have been configured – skip key clearing
    State: SCANNING -> ASSOCIATING
    wpa_driver_ralink_associate
    ralink_set_auth_mode
    wpa_driver_ralink_set_ssid
    Setting authentication timeout: 10 sec 0 usec
    EAPOL: External notification – portControl=ForceAuthorized
    Authentication with 00:00:00:00:00:00 timed out.
    Added BSSID 00:12:17:16:09:ff into blacklist
    State: ASSOCIATING -> DISCONNECTED
    No keys have been configured – skip key clearing
    EAPOL: External notification – portEnabled=0
    EAPOL: External notification – portValid=0
    Setting scan request: 0 sec 0 usec
    State: DISCONNECTED -> SCANNING
    Starting AP scan (broadcast SSID)
    […] blablabla

    ———

    no estoy muy ducho en temas wifi, aunque uso habitualmente el supplicant con mi portátil y WPA en mi red casera… ¿alguna idea?

    Muchísimas gracias de nuevo 🙂
    E.

    Responder
  7. enramos

    Yo tengo esas tarjetas para organizar unos talleres formativos y me viene genial el artículo.

    Además de las posibilidades que comentas, aunque no sea lo recomendable, imagino que también se podrá usar ndiswrapper con el fin de explicar el uso de drivers windows para el caso de aquellas tarjetas en las que no existan estos para Linux ¿no?.

    Responder
  8. Javi

    Hola, justamente creo que para universidad que lo has preparado es la mia, la uni de Deusto no? esqe estaba buscando la clave de la red wifi udauth y me he encontrado esto.. pero la contraseña en realidad no es “contraseña” no? jajaja
    esqe me vendria de lujo para unas cosas que tengo qe hacer.. mas que nada es para pasar unos archivos desde el portatil del profesor y por no llevarlo en el pendrive pasarlo por wifi al iphone pero tenemos que estar conectados a la misma red, y esa tiene contraseña, y si le cambio el portatil a la de udwifi qe no tiene clave luego igual no tiene puesto para recordar la contraseña de la udauth y no puedo..
    asiqe si puedieras pasarmela a javix91@gmail.com seria genial! gracias!

    Responder
  9. gabriel

    Llevo 2 días liado con la manta a la cabeza, peleando con una tarjeta con chipset RaLink RT2600 802.11 MIMO y con una tarjeta nvidia 8800 Ultra.

    Intenté actualizar mi sistema a ver si al actualizar el núcleo el tema mejoraba, primero probé con Ubuntu 9.04, luego con 9.10, finálmente con 10.4 beta. Ahora sobre Debian Lenny 5.0.3 kernel 2.6.26-2-amd64.

    La solución que propones funciona en Ubuntu 9.10, 10.4 beta y Debian 5.0.3.

    Lo que no se es si la solución de instalar los compaq drivers de linuxwireless tambien funciona, igual no han actualizado el driver.

    http://linuxwireless.org/en/users/Download

    ¿Alguien sabe que es lo que hay que hacer para que incluyan estos cambios?

    http://linuxwireless.org/en/users/Drivers/rt61pci
    http://linuxwireless.org/News/Archive (buscad rt61 dentro del texto)

    Responder

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *