sábado, 15 de septiembre de 2007

Conexión segura de la UGR (cviugr-v2)

Fuente: soloenviernes.com

Aunque de momento no he conseguido conectarme a través de NetworkManager, voy a explicar como podemos generar un pequeño script para conectarnos la red inalámbrica segura que ofrece la Universidad de Granada. El script está pensado para sistemas basados en Debian. En otros sistemas no sé aseguro su funcionamiento, ni la existencia de los comandos usados ;(

Para esto, necesitamos tener instalado wpasupplicant, disponible en los repositorios de Debian y Ubuntu. De hecho, en Ubuntu lo trae instalado desde la versión 6.06 creo recordar; en Debian lo desconozco.

Detectando nuestra tarjeta

Para saber que interfaz de red se corresponde con nuestra tarjeta inalámbrica, podemos hacer lo siguiente:

vruiz@SamsungX05:~$ iwconfig
lo no wireless extensions.

eth0 no wireless extensions.

eth1 IEEE 802.11b ESSID:"" Nickname:"ipw2100"
Mode:Managed Frequency:2.462 GHz Access Point: 00:11:92:2A:52:B3
Bit Rate=11 Mb/s Tx-Power:16 dBm
Retry limit:7 RTS thr:off Fragment thr:off
Power Management:off
Link Quality=100/100 Signal level=-42 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:2 Invalid misc:6 Missed beacon:0

vruiz@SamsungX05:~$

En mi caso, podemos ver que la interfaz es eth1, que será la que usaré para los comandos.

Adaptadores soportados por wpasupplicant

  • hostap - Host AP driver (Intersil Prism2/2.5/3)
  • madwifi - MADWIFI 802.11 support (Atheros, etc.)
  • atmel - ATMEL AT76C5XXx (USB, PCMCIA)
  • wext - Linux wireless extensions (generic)
  • ndiswrapper - Linux ndiswrapper
  • ipw - Intel ipw2100/2200 driver
  • wired - wired Ethernet driver
  • test - test driver
  • Para una versión del kernel mayor a la 2.6.14, las tarjetas de Intel usan wext en lugar de ipw.

    Madwifi soporta tanto wext como madwifi. Se prefiere usar con wext, pero en ocasiones funciona mejor con madwifi.

    Ndiswrapper usa wext, a no ser que tengamos una versión 1.16 o anteriores, que usará ndiswrapper.

    Detectando la versión del kernel usada

    Para esto vasta ejecutar lo siguiente:

    vruiz@SamsungX05:~$ uname -r
    2.6.20-15-generic
    vruiz@SamsungX05:~$

    Información acerca de nuestra wifi

    Si sabes que tarjeta inalámbrica estás usando, puedes saltar este apartado. De todas formas, es muy simple, basta con ejecutar:

    vruiz@SamsungX05:~$ lspci | grep 'Network controller'
    02:07.0 Network controller: Intel Corporation PRO/Wireless LAN 2100 3B Mini PCI Adapter (rev 04)
    vruiz@SamsungX05:~$

    Si observáis, mi tarjeta es una Intel 2100 y mi versión del núcleo es 2.6.20, por lo que usaré el driver wext.

    Archivo de configuración

    Primero debemos preparar el archivo de configuración para conectarnos a la cviugr-v2. Para ello, debes estar matriculado en la UGR y tener un correo y contraseña. Podemos ver una explicación de como hacerlo aquí.

    Básicamente, es crear un archivo de texto plano, el cual contendrá lo siguiente:


    eapol_version=1
    ap_scan=1
    network={
    ssid=”cviugr-v2″
    key_mgmt=WPA-EAP
    proto=WPA
    eap=TTLS
    anonymous_identity=”anonymous@ugr.es”
    identity=”usuario@correo.ugr.es”
    password=”xxxxxxxxxx”
    priority=2
    phase2=”auth=PAP”
    }

    El nombre y la ubicación del fichero será el que nosotros queramos darle. Por ejemplo, wpa.conf en el directorio /etc.

    Creando el script

    Para esto, usaremos dos comandos: wpa_supplicant y dhclient.

    A wpa_supplicant le indicamos el driver (-D), el interfaz (-i) y el archivo de configuración (-c). En mi caso, la llamada sería la siguiente:

    wpa_supplicant -Dwext -ieth1 -c/etc/wpa.conf.

    A dhclient únicamente hay que decirle el adaptador de red con el que queremos obtener una dirección IP asignada mediante DHCP. Lo invocaría:

    dhclient eth1

    Por tanto, el script sería un archivo de texto plano con el nombre que más nos guste, por ejemplo, cviugr_v2.sh, y cuyo contenido sería:

    wpa_supplicant -Dwext -ieth1 -c/etc/wpa.conf &
    dhclient eth1

    Ejecutando el script

    Es recomendable para cualquier gestor de redes que tengamos instalado, por ejemplo NetworkManager, antes de ejecutar el script.

    Para su ejecución, necesitaremos permisos de superusuario (root):

    vruiz@SamsungX05:~$ sudo sh cviugr_v2.sh

    Con esto, todo debería funcionar. ¡Suerte!

    Reiniciar Linux en caso de bloqueo

    En Linux siempre hay soluciones, habrá que probarlo...
    Fuentes: bocabyte | fosswire | diariodeunlinuxero

    ¿Qué hacer cuando se nos bloquea nuestro Linux? Si el sistema está tan colgado que no funciona la opción de Control + Alt + Backspace ni podemos mover el ratón, antes de darle el botón de Reset que podría dañar seriamente tu sistema, podemos recurrir a este curioso truco:

    1. Pulsa Alt+ ImprPantalla y mantenlos pulsados.
    2. Teclea RSEIUB y tu sistema se reiniciará, así de simple.

    Aquí está lo que hace cada tecla con detalle:

    • R devuelve el control al teclado.
    • S sincroniza.
    • E manda a los procesos la señal term.
    • I manda a los procesos la señal kill.
    • U desmonta los sistemas de ficheros.
    • B reinicia el sistema.

    También dan otra posible combinación de letras: REISUB.

    Bueno, lo he probado en una situación de bloqueo máximo y funciona. Pero eso sí, no intentes probarlo cuando no este bloqueado el ordenador porque lógicamente llenaras la pantalla de capturas de pantalla :-)

    Colaborador: Treddy [Gracias!!!]