Para el que no lo sepa, en muchas universidades a nivel mundial existe un servicio de conexión unificado mediante una red wi-fi con SSID "eduroam" el cual está pensado para que cada universitario tenga un nombre de usuario de la forma XXXXXXXX@uva.es (cambiando la parte final según la universidad a la que pertenezca: "uva.es" en el caso de la Universidad de Valladolid) y una contraseña personal de forma que es posible conectarse con tales datos en cualquier universidad del mundo con este SSID, sin necesidad de registro previo cada vez, lo cual está muy bien a nivel de movilidad.
Pero hay algo que curiosamente NO tienen unificado: el método de encriptación de la red. WPA, WPA2, TKIP, AES, TTLS, PAP, MSCHAPV2, CCMP bla bla bla bla bla......
Esto es un gran error, Internet está plagado de tutoriales personalizados para cada Universidad, con configuraciones que no valen para otras... Y en concreto para el eduroam de la UVa, no he encontrado ningún tutorial con los datos correctos, exceptuando este que sólo es válido en caso de que utilicemos Gnome en nuestra distribución, como es el caso de la archiconocida Ubuntu, Debian u otras, ya que utiliza el gestor gráfico de redes de Gnome, que por cierto es muy bueno y tiene todas las opciones necesarias para la conexión, a diferencia del de KDE por ejemplo.
Pero yo voy al caso general de cualquier distribución Linux, mediante el programa wpa_supplicant exclusivamente, ya que tal vez no tengamos el gestor de Gnome o no lo queramos utilizar por diferentes motivos. Debo decir que la configuración de wpa_supplicant necesaria la obtuvo por experimentación un amigo mío de la universidad, Luis Javier G. cuya pequeña web podéis ver clicando sobre su nombre, y que yo sólo me limito a distribuir públicamente la información.
Programas necesarios:
- wpa_supplicant
- Un cliente DHCP
- wireless-tools
También necesitaremos un cliente DHCP, que es el encargado de recibir una dirección IP desde el router de la uni y así poderte conectar. En Linux existen unos cuantos, como dhcpcd, pump, dhclient... Todos funcionan bien y muy parecido, por lo que elegir uno u otro es una cuestión más bien de gusto. Yo recomiendo el último.
Y en cuanto a wireless-tools, es un conjunto de utilidades para redes wi-fi en Linux, necesario para llevar a cabo ciertas operaciones sobre los interfaces de red.
Para instalarlos, simplemente ejecutamos como root o superusuario (o con sudo delante) el comando adecuado de instalación de paquetes de tu distribución, por ejemplo:
Debian/Ubuntu:
# apt-get install wpasupplicant wireless-tools dhcpGentoo:
# emerge -av wpa_supplicant wireless-tools dhcpArchLinux:
# pacman -S wpa_supplicant wireless-tools dhcp
(o bien cambiar dhcp por pump, dhcpcd o el que elijas. Recuerda que la # designa que el comando se ejecuta como root, y no hay que ponerla)
Etcétera, supongo que ya sabrás cómo instalar paquetes en tu distribución, es algo que está unos capítulos antes que "configurar una red WPA en la universidad" en el proceso de aprendizaje de Linux...
Configurando correctamente wpa_supplicant
El programa wpa_supplicant no tiene un bonito y precioso interfaz gráfico (lo siento para los amantes de esas cosas) pero NO PASA NADA, no es nada complicado de configurar y además, joven e inexperto linuxero con miedo a la terminal: Pierde ese miedo y descubre el PODER y las maravillas que puedes hacer con ella.
En fin, lo primero es crear un archivo de configuración al que llamaremos "eduroam.conf" en la carpeta "/etc/wpa_supplicant", lo cual sólo se puede hacer como root o superusuario de nuevo, debido a los permisos de esa carpeta. Así que ejecutamos:
# nano /etc/wpa_supplicant/eduroam.conf
En la ventana del editor de texto nano que aparecerá, simplemente copiamos y pegamos esto:
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
eapol_version=1
country=ES
filter_ssids=0
network={
ssid="eduroam"
key_mgmt=WPA-EAP
eap=TTLS
anonymous_identity="anonymous@uva.es"
identity="AAAAAAAAAA@uva.es" # <- tu usuario
password="BBBBBBBBBB" # <- tu clave
phase2="auth=PAP"
}
(En la terminal se pega con CTRL + Shift + V)
Bien, ahora sustituye AAAAAAAAAA por tu nombre de usuario y BBBBBBBBBB por tu contraseña. En la UVa el usuario es una letra e seguida de tu NIF con la letra final minúscula. Ejemplo: Si tu NIF/DNI es 70072767-X, será "e70072767x"
Si no recuerdas o no dispones de la contraseña por ser nuevo alumno, la puedes obtener aquí.
Perfecto, ahora guardamos el archivo pulsando CTRL + O y luego Intro.
El siguiente paso es, obviamente, dirigirnos físicamente hasta una de las facultades de la UVa, ya que desde el sofá o el bar no llega la señal eduroam.
La conexión a eduroam propiamente dicha
Una vez que estamos en la facultad, en teoría lo único que haría falta sería ejecutar el programa wpa_supplicant, obtener una dirección IP, etc. Pero sin embargo para evitar problemas aquí dejo un script que lo hace todo por su cuenta, incluidas las comprobaciones necesarias para activar la red, comprobar si existe finalmente conexión a Internet, etc. El script también está hecho en su mayoría por mi amigo, con pequeños arreglos por mi parte para que todo funcione bien. Así que abrimos de nuevo un editor nano (esta vez no hacen falta permisos de root/superusuario):
$ nano ~/eduroam.sh
Y copypasteamos esto:
#!/bin/bash
ROOT=root
if [ $USER = $ROOT ]; then
## Variables importantes ##
CONF_FILE=/etc/wpa_supplicant/eduroam.conf
INTERFAZ=$(iwconfig 2>/dev/null | cut -f1 -d\ | sed '/^$/d')
PID_FILE=/var/run/wpa_supplicant/$INTERFAZ.pid
## Funcion llamada cuando algo falla durante la ejecución ##
function cancelar(){
echo -ne "\tERROR: Operacion cancelada\n"
echo -ne "\tDeshabilitando interfaz $INTERFAZ\t\t"
ifconfig $INTERFAZ down 1>/dev/null 2>&1
kill `cat $PID_FILE 1>/dev/null 2>&1` 1>/dev/null 2>&1
rm $PID_FILE 1>/dev/null 2>&1
sleep 1s
echo -ne "[ OK ]\n"
}
if [ -n "$INTERFAZ" ]; then
echo -ne "\tHabilitando interfaz $INTERFAZ\t\t"
RED1=$(ifconfig | grep Ethernet | cut -d' ' -f1 | sed -n 1p)
RED2=$(ifconfig | grep Ethernet | cut -d' ' -f1 | sed -n 2p)
RED3=$(ifconfig | grep Ethernet | cut -d' ' -f1 | sed -n 3p)
ifconfig $RED1 down 2>/dev/null
ifconfig $RED2 down 2>/dev/null
ifconfig $RED3 down 2>/dev/null
ifconfig $INTERFAZ up
sleep 1s
echo -ne "[ OK ]\n\tConectando a la red eduroam e identificando...\t\t"
killall wpa_supplicant 2> /dev/null
EDUROAM=$(iwlist $INTERFAZ scan 2>&1 | grep eduroam)
if [ -n "$EDUROAM" ]; then
wpa_supplicant -B -Dwext -i $INTERFAZ -c $CONF_FILE -P $PID_FILE 1>/dev/null 2>&1
sleep 10s
RET=$(iwconfig 2>/dev/null | grep eduroam)
if [ -n "$RET" ]; then
echo -ne "[ OK ]\n"
else
echo -ne "[ FAIL ]\n"
echo -ne "\tRed eduroam detectada, pero no ha sido posible conectarse.\n"
cancelar
exit 1
fi
else
echo -ne "[ FAIL ]\n"
echo -ne "\tRed no encontrada en el escaneo. ¿Tienes cobertura de red?\n\tSi es la primera vez que te sale esto, reejecuta el script.\n"
cancelar
exit 1
fi
RET2=$(ping -c1 -W1 www.google.es | grep "bytes of data")
if [ -n "$RET2" ]; then
echo -ne "\tConectado.\n"
else
echo -ne "\tSolicitando IP con dhclient...\t"
RET3=$(dhclient -v $INTERFAZ 2>&1 | grep ACK)
if [ -n "$RET3" ]; then
echo -ne "[ OK ]\n\tConectado.\n"
else
echo -ne "[ FAIL ]\n"
echo -ne "\tHa sido posible conectarse a eduroam, pero no hay Internet... Ni idea de lo que sucede.\n"
cancelar
fi
fi
else
echo -ne "\tNo se han encontrado interfaces de red inalambricas.\n"
fi
else
echo "Debes ejecutar este script con permisos de root. Utiliza \"sudo ./eduroam.sh\" o \"su -c \"./eduroam.sh\"\" para lanzarlo."
fi
He marcado una zona en rojo: La correspondiente al driver de la tarjeta wi-fi que utiliza wpa_supplicant.
El driver por defecto es wext (Wireless EXTensions) y en la mayoría de los casos funciona perfectamente. Sin embargo ciertas tarjetas, como algunas Atheros (como la mía, una Atheros AR9285) no se encuentran a gusto con este driver y prefieren otro, el nl80211. Probablemente no haya que tocar nada, pero si no funciona el script, prueba antes a cambiar el driver wext por alguno de estos:
Una vez elegido el driver pulsamos CTRL + O para guardarlo, y le damos permisos de ejecución con:El driver por defecto es wext (Wireless EXTensions) y en la mayoría de los casos funciona perfectamente. Sin embargo ciertas tarjetas, como algunas Atheros (como la mía, una Atheros AR9285) no se encuentran a gusto con este driver y prefieren otro, el nl80211. Probablemente no haya que tocar nada, pero si no funciona el script, prueba antes a cambiar el driver wext por alguno de estos:
- hostap - Host AP driver (Intersil Prism2/2.5/3).
- hermes - Agere Systems Inc. driver (Hermes-I/Hermes-II).
- madwifi - MADWIFI 802.11 support (Atheros, etc.).
- atmel - ATMEL AT76C5XXx (USB, PCMCIA).
- wext - Linux wireless extensions (generic).
- ndiswrapper - Linux ndiswrapper.
- broadcom - Broadcom wl.o driver.
- ipw - Intel ipw2100/2200 driver.
- wired - wpa_supplicant wired Ethernet driver
- roboswitch - wpa_supplicant Broadcom switch driver
- bsd - BSD 802.11 support (Atheros, etc.).
- ndis -Windows NDIS driver.
- nl80211 - Linux nl80211/cfg80211
$ chmod +x eduroam.shSi has seguido exactamente los pasos del manual, tendrás un archivo llamado eduroam.sh en tu carpeta personal, el cual en cuanto lo ejecutes te conectará sin problema (espero) a la red. Sólo puedes ejecutarlo como root, si no te dará un aviso, ya que no podrá ejecutar varios de los comandos que requiere. Para ejecutar, estando en nuestra carpeta home:
# ./eduroam.sho
$ sudo ./eduroam.sh(si no estás logueado como root)
Una vez ejecutado, puedes cerrar esa terminal y la conexión no se irá.
En caso de utilizar Gnome o KDE puedes crear un lanzador en el escritorio (enlace a aplicación) con este comando:
gksudo ~/eduroam.sh(Gnome)
o bien
kdesu ~/eduroam.sh(KDE)
para poder conectarte con un clic, pero no verás los mensajes de éxito/error que saldrían por consola y tendrás que confiar en tu intuición, esperar unos segundos y comprobar si hay conexión.
Ya para despedirme, si a la primera el script da alguna especie de fallo, puedes intentar ejecutarlo dos o tres veces seguidas, y tal vez mágicamente se corrija.
Espero que a alguien le sirva, ¡un saludo!
No hay comentarios:
Publicar un comentario
Si te ha sido útil, por favor, comenta, me haces ver que lo que pongo aquí sirve para algo, un saludo :)