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:
- Los oficiales de Ralink: http://www.ralinktech.com/ralink/Home/Support/Linux.html.
- El proyecto rt25xx de Serialmonkey: http://prdownloads.sourceforge.net/rt2400/rt61-1.1.0-b1.tar.gz?download.
- Versión del CVS diaria: http://rt2x00.serialmonkey.com/rt61-cvs-daily.tar.gz.
- Los drivers de http://hwagm.elhacker.net, parcheados para reinyección de tráfico: http://hwagm.elhacker.net/descargas/linux4/rt61-cvs-2006120101-patched.tar.gz.
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:
RutilT haciendo site survey para encontrar redes:
Configuración de una conexión tras haberla seleccionado en la lista de redes:
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 😉
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 😉
@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 😉
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 🙂
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
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.
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.
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?.
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!
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)