Oficina del Software Libre CITI C/. Rep. Saharaui s/n 11015 Puerto Real Teléfono 956016400 Fax 956016401 http://softwarelibre.uca.es osl@uca.es INSTRUCCIONES PARA LA INSTALACIÓN DE LA RED INALÁMBRICA ucAir EN UN ORDENADOR CON SISTEMA OPERATIVO LINUX Índice de contenido 1. Generalidades..................................................................................................................1 2. Instalación del controlador de la tarjeta de red inalámbrica.............................................1 3. Obtención, conversión y ubicación de los certificados.....................................................2 4. Instalación y configuración de Xsupplicant.....................................................................3 5. Automatización del proceso.............................................................................................5 6. Problemas........................................................................................................................6 7. Particularidades en SuSE Linux.......................................................................................6 8. Referencias......................................................................................................................8 1. Generalidades En este documento se dan algunas guías para que el usuario experto que tenga un ordenador (presumiblemente portátil) con sistema operativo Linux pueda utilizar la red inalámbrica de la UCA, conocida como ucAir. Las pruebas se han hecho con un ordenador portátil Acer Aspire 1353LM con las distribuciones Guadalinex_UCA, basada en GNU/Debian Linux, y SuSE Linux 9.2 Professional. La tarjeta de red inalámbrica era una Linksys Wireless G con chip de Broadcom Corp., modelo BCM4306 802.11b/g Wireless LAN Controller. Se espera que este documento también pueda servir de guía para usuarios con otras distribuciones y otro hardware. 2. Instalación del controlador de la tarjeta de red inalámbrica Es conveniente que la tarjeta de red sea una de las recomendadas en el documento siguiente, apartado de requisitos mínimos: http://www.uca.es/ucAir/guia/ucAir-guia.pdf. En nuestro caso, la tarjeta es la recomendada, la Linksys Wireless G, con chip de Broadcom Corp. Para ella, como para muchas otras, no existe un controlador para Linux; en estos casos, hay una solución que consiste en un programa envoltorio que hace de interfaz entre el controlador para Windows XP y el núcleo Linux: se llama ndiswrapper, y viene en un paquete del mismo nombre en muchas distribuciones. En Guadalinex_UCA ya está preinstalado, por lo que no hay que obtenerlo. El programa ndiswrapper tiene que cargar el controlador para Windows de la tarjeta, que puede obtenerse de su página web o del CD-ROM que traiga, como así hemos hecho. Esto se hace desde una consola o emulador de terminal, desde la cuenta root, así: # ndiswrapper -i /cdrom/lsbcmds.inf -1- De aquí en adelante, el signo # delante de una orden representa el indicador o prompt del súper-usuario root; no hay que escribirlo. Esta orden sólo hay que hacerla una vez para la tarjeta. Copia los ficheros necesarios al disco duro para que ndiswrapper los tenga accesibles cuando los necesite. A la opción -i hay que pasarle el camino donde esté el fichero de extensión .inf con la descripción del controlador para Windows. Para comprobar que ha hecho lo que debía, podemos usar la opción -l (guion y letra ele), que lista los controladores instalados: # ndiswrapper -l Installed ndis drivers: lsbcmds hardware present También hay que dar de nuevo la orden con la opción -m, lo que aporta información para el programa de manipulación de módulos (controladores) modprobe. Esto también hay que hacerlo una sola vez: # ndiswrapper -m Adding “alias wlan0 ndiswrapper” to /etc/modprobe.d/ndiswrapper Si Vd. posee una tarjeta de red inalámbrica con controladores nativos para Linux, no tendrá que usar ndiswrapper, y seguramente puede saltarse este apartado porque ya tiene el controlador o móculo correspondiente cargado. Debido a la gran diversidad de hardware existente, es difícil dar instrucciones más detalladas; consulte la base de datos de hardware de su distribución favorita. A veces es necesaria también una actualización del firmware de la tarjeta. Una cosa es cierta: si este primer paso no funciona, lo demás sobra: nada de lo que viene a continuación funcionará. 3. Obtención, conversión y ubicación de los certificados Si ha conseguido cargar un módulo para su tarjeta de red inalámbrica, es hora de obtener sus certificados digitales. Puede ver información a este respecto en el documento mencionado anteriormente: http://www.uca.es/ucAir/guia/ucAir-guia.pdf, en el apartado obtención de certificados digitales. Estos se consiguen desde la URL http://cau.uca.es/certificado.cgi, donde tendrá que entrar autenticándose convenientemente como miembro de la UCA. De aquí obtendrá dos ficheros y una clave; anote esta última para no perderla y guarde los dos ficheros en el disco duro. Si su portátil aún no tiene red, porque no tenga otra tarjeta configurada, puede obtener estos certificados desde otro ordenador cualquiera con red, y pasar entonces los ficheros al portátil con cualquier método: disquete, tarjeta o lápiz de memoria, etc. Los ficheros obtenidos son el certificado del servidor: cacert.der, y el certificado de cliente: nombre.apellido.uca.es.p12, donde nombre y apellido son evidentemente sus nombre y apellido reales como en su dirección de correo electrónico. En este documento los llamaremos siempre así: nombre.apellido. Estos ficheros no nos valen directamente; tenemos que obtener los certificados en formatos DER y PEM; para ello daremos las siguientes órdenes: # openssl pkcs12 -des3 -in nombre.apellido.uca.es.p12 -out nombre.apellido.pem # openssl x509 -inform PEM -outform DER \ -in nombre.apellido.uca.es.pem -out nombre.apellido.uca.es.der # openssl x509 -inform DER -outform PEM -in cacert.der -out cacert.pem # openssl rand -out random 1000 La última orden no convierte ningún fichero sino que crea uno con datos aleatorios necesarios para el -2- intercambio de claves. La segunda es una sola línea, pero como no cabe aquí la he separado en dos; escríbala toda seguida sin el signo \. 4. Instalación y configuración de Xsupplicant El programa que se encarga de la autenticación y del intercambio de claves y certificados se llama xsupplicant, y viene en un paquete del mismo nombre en muchas distribuciones. En Guadalinex_UCA no está preinstalado, pero sí está en el repositorio. Para instalarlo, primero hemos detectado que conviene editar el fichero /etc/apt/sources.list para dejar sólo las líneas siguientes: deb http://guadalinex.uca.es/debian sarge main contrib non-free deb http://guadalinex.uca.es/debian-non-US sarge/non-US main contrib non-free deb http://guadalinex.uca.es/debian-security sarge/updates main contrib non-free Puede dejar las restantes como comentarios insertándoles al principio el signo #, si no quiere borrarlas. A continuación dará las órdenes: # apt-get update # apt-get install xsupplicant También puede emplear Synaptic, un programa gráfico de Gnome de manipulación de paquetes. Está en el menú Aplicaciones/Configuración/Sistema/Synaptic. Use el botón de Buscar para encontrar xsupplicant y luego Marcar para instalar y Aplicar. Una vez instalado xsupplicant, hay que configurarlo. Primero copiaremos o moveremos los ficheros de certificados y el aleatorio al sitio más adecuado, que en Guadalinex_UCA es /etc/xsupplicant/tls; por ejemplo: # cp nombre.apellido.uca.es.{pem,der} cacert.pem /etc/xsupplicant/tls El fichero de configuración predefinido de xsupplicant es /etc/xsupplicant/xsupplicant.conf. Edítelo para que quede como se muestra a continuación. Se han omitido aquí los comentarios, para mayor sencillez. network_list = ucAir default_netname = ucAir startup_command = <BEGIN_COMMAND>echo "xsupplicant startup"<END_COMMAND> first_auth_command = <BEGIN_COMMAND>dhclient %i<END_COMMAND> reauth_command = <BEGIN_COMMAND>echo "reauthenticated %i"<END_COMMAND> logfile = /var/log/xsupplicant.log ucAir { type = wireless allow_types = eap_tls identity = <BEGIN_ID>nombre.apellidos.uca.es<END_ID> eap_tls { user_cert = /etc/xsupplicant/tls/nombre.apellidos.uca.es.der user_key = /etc/xsupplicant/tls/nombre.apellidos.uca.es.pem -3- user_key_pass = <BEGIN_PASS>Escriba aquí su clave<END_PASS> root_cert = /etc/xsupplicant/tls/cacert.pem crl_dir = /etc/xsupplicant/tls chunk_size = 1398 random_file = /etc/xsupplicant/tls/random } } Una vez cargado el módulo de la tarjeta de red inalámbrica, obtenidos los certificados, instalado y configurado Xsupplicant, el proceso para activar la red inalámbrica es el siguiente: 1. Cargar el módulo de la tarjeta si no lo está ya, con modprobe. 2. Configurar la interfaz de red inalámbrica, con el programa iwconfig. 3. Configurar la interfaz de red inalámbrica como una normal, con el programa ifconfig. 4. Autenticarse contra el servidor RADIUS de la UCA mediante el protocolo IEEE 802.1x, con xsupplicant. 5. Obtener los datos de red mediante el protocolo DHCP; en Guadalinex_UCA, con dhclient. No se asuste, todo esto puede automatizarse, como se verá en la siguiente sección; pero conviene conocer los detalles para cuando haya problemas. Veamos ahora cada paso en detalle. 1. Para ver los módulos que tiene cargados, use el programa lsmod, sin parámetros. Para ver los mensajes del núcleo emplee dmesg, también sin parámetros. Busque ahí la palabra wlan para ver si algún módulo relativo a la tarjeta inalámbrica se ha cargado: # dmesg | grep wlan Si no hay ninguna salida, seguramente no tiene el módulo cargado. Para cargarlo, debe dar la orden modprobe con el nombre del módulo como parámetro. En nuestro caso: # modprobe ndiswrapper Puede comprobar si la operación ha tenido éxito mirando las últimas líneas de la salida de dmesg: # dmesg | tail y ver si el módulo está cargado con lsmod: # lsmod | grep ndis 2. El programa iwconfig, preinstalado en Guadalinex_UCA, sirve para configurar o establecer los parámetros específicos de la operación inalámbrica en una interfaz de red. El más importante de todos es el llamado ESSID: un nombre que identifica celdas que forman parte de la misma red virtual inalámbrica. Nuestro ESSID se llama “ucAir”. Otros parámetros importantes son el modo de operación y el de seguridad. Resumiendo, la orden a dar sería: # iwconfig wlan0 essid ucAir mode managed key open Para comprobar que la orden ha tenido efecto puede usar el mismo programa pasándole como parámetro solamente el nombre de la interfaz de red inalámbrica: wlan0, o bien simplemente emplear el programa iwgetid: # iwconfig wlan0 -4- # iwgetid wlan0 wlan0 ESSID:”ucAir” Si el ESSID no está establecido como “ucAir”, xsupplicant no funcionará. 3. El programa ifconfig se emplea para configurar o establecer los parámetros de red de una interfaz de red, de forma general; iwconfig sólo se ocupaba de los parámetros relativos a los aspectos inalámbricos. Por ahora bastaría con: # ifconfig wlan0 up Para comprobar el éxito de esta orden, ejecute ifconfig wlan0 y compruebe que aparece la palabra UP. 4. De la autenticación se encarga xsupplicant. Una vez configurado como se ha visto sólo hay que dar la orden: # xsupplicant -i wlan0 & El signo & al final es para mandar la orden a segundo plano y dejar libre la terminal. Puede ver un registro del proceso de este programa en el fichero de registro especificado en el de configuración; en nuestro caso es /var/log/xsupplicant.log. 5. DHCP (Dynamic Host Configuration Protocol) es un protocolo por el que un servidor DHCP otorga a una tarjeta de red de un ordenador los datos necesarios para la operación: dirección IP, encaminador, servidor de nombres de dominio, etc. No hace falta dar aquí ninguna orden porque en el fichero de configuración de xsupplicant se dijo que se diera automáticamente en cuanto la autenticación tuviera éxito, con el parámetro first_auth_command. Si no se hubiera puesto así, habría que dar la orden: # dhclient wlan0 Para comprobar que la red está disponible, dé la orden ifconfig de nuevo y compruebe que wlan0 tiene una dirección IP válida. Por supuesto, puede mirar los LED de la tarjeta de red, si tiene, y lanzar su navegador favorito para visitar páginas web... 5. Automatización del proceso Afortunadamente, los pasos anteriores no hay que repetirlos. En Guadalinex_UCA podemos conseguir que todos esos programas se ejecuten automáticamente en su orden correcto cada vez que la interfaz de red inalámbrica se active. El fichero que hay que editar es /etc/network/interfaces. En él hay que añadir las líneas siguientes relativas a la interfaz inalámbrica: auto wlan0 iface wlan0 inet manual pre-up modprobe wlan0 up ifconfig wlan0 0.0.0.0 up up /usr/sbin/xsupplicant -i wlan0 & down killall xsupplicant down ifconfig wlan0 down post-down modprobe -r wlan0 -5- wireless_essid ucAir wireless_mode managed wireless_key open wireless_enc 00000000 Cuando se da la orden ifup wlan0, lo cual ocurrirá automáticamente en el arranque del sistema (auto wlan0), ocurrirá lo siguiente: 1. Se cargará el módulo mediante la orden modprobe wlan0, gracias a pre-up. Evidentemente esta línea no debe ponerla si su módulo ya se carga automáticamente en el inicio del sistema. El poner wlan0 en lugar de ndiswrapper funciona porque la orden ndiswrapper -m creó el alias correspondiente. 2. Cada línea wireless_opción parámetro hace que se ejecute la orden: iwconfig opción parámetro, como por ejemplo iwconfig essid ucAir. 3. Después se ejecutan por orden los programas especificados en las líneas que empiezan por up. En este caso, ifconfig para configurar la interfaz y xsupplicant para la autenticación; hay que poner el signo & para que el proceso siga. 4. El propio xsupplicant llama a dhclient pasándole el nombre de la interfaz de red, según se indica en el fichero de configuración, y se contacta con un servidor DHCP que proporciona los datos de red necesarios. ¡La red inalámbrica está funcionando! Cuando se da la orden ifdown wlan0, lo cual ocurrirá automáticamente en el apagado del sistema, ocurrirá lo siguiente: 1. Se ejecutan por orden los programas especificados en las líneas que empiezan por down. En este caso, primero se para xsupplicant mandándole una señal de terminar con killall, y luego se desconfigura la interfaz de red con ifconfig. 2. Al final, se descarga el módulo correspondiente (línea post-down). Esto no es estrictamente necesario; puede hacerse también con rmmod: rmmod ndiswrapper por ejemplo. 6. Problemas A veces no funciona el establecimiento del ESSID de la tarjeta de red. Es decir, la orden iwconfig wlan0 essid ucAir ... no funciona en el arranque, aunque no da mensajes de error ni indicación alguna. En ese caso no queda más remedio que volver a dar la orden; no hay que hacer nada más. En cuanto esté establecido el ESSID, xsupplicant, que se está ejecutando en segundo plano, se autenticará y llamará a dhclient para obtener los datos de red. Si el problema persiste, parece arreglarse si se añade la siguiente línea después de la de la llamada a xsupplicant en /etc/network/interfaces: up sleep 10; iwconfig wlan0 essid ucAir Si hay problemas con la autenticación mire el fichero de registro de xsupplicant: /var/log/xsupplicant.log. Añada a xsupplicant la opción de depuración: -d nivel, donde nivel es un número del 1 al 9. 7. Particularidades en SuSE Linux 1. Instale los paquetes ndiswrapper (si le hace falta para su tarjeta inalámbrica), xsupplicant, wireless-tools y -6- net-tools. Si usa el entorno de escritorio KDE, le interesará también kdenetwork-wireless, donde está el programa kwifimanager, que le dará datos acerca de la conexión inalámbrica (estación base, intensidad de la señal, etc.). Todos los paquetes mencionados están en el DVD de instalación. Xsupplicant no está en los CD, sólo en el DVD. Si tiene red, también puede poner como fuente de instalación el directorio /pub/linux/distributions/suse/pub/suse/i386/current del FTP anónimo de RedIRIS: ftp.rediris.es. 2. Configure ndiswrapper si lo necesita, como se describió para Guadalinex_UCA. 3. Obtenga los certificados y conviértalos a los formatos adecuados, como se describió anteriormente. Cree los mismos directorios que se usaron en Guadalinex_UCA: # mkdir -p /etc/xsupplicant/tls Copie allí sus ficheros de certificado, como antes. 4. El fichero de configuración de xsupplicant en SuSE Linux es /etc/xsupplicant.conf. Créelo allí o, alternativamente en /etc/xsupplicant/xsupplicant.conf y entonces haga un enlace desde /etc, así: # ln -s /etc/xsupplicant/xsupplicant.conf /etc/xsupplicant El fichero es idéntico al empleado para Guadalinex_UCA con la única diferencia de que hay que sustituir dhclient por ifup-dhcp, de forma que la línea afectada quedaría así: first_auth_command = <BEGIN_COMMAND>ifup-dhcp %i<END_COMMAND> 5. Configure su tarjeta de red inalámbrica mediante YaST. Vaya al módulo Dispositivos de red, en el panel de la izquierda, y escoja Tarjeta de red en el de la derecha. Si su tarjeta ha sido detectada ya, porque seguramente emplea un controlador nativo de Linux, le aparecerá arriba y tendrá que escogerla y pulsar el botón de Configurar. Si no le aparece, seguramente tiene que usar ndiswrapper. En ese caso escoja Otro (no detectado) y pulse Configurar. Le aparecerá la ventana Configuración manual de tarjeta de red. En Tipo de dispositivo escoja Inalámbrico y en Nombre del módulo escriba ndiswrapper. En la siguiente pantalla, Configuración de la dirección de red, el método de configuración será Configuración de la dirección estática. La Dirección IP será 0.0.0.0 y la Máscara de subred 255.255.255.0 (en realidad, estos valores son irrelevantes, pero hay que rellenar los campos). En la parte de abajo verá un cuadro con tres botones. El primero le llevará a la ventana de Nombre de ordenador y nombre de dominio. Escríbalos. El primero se lo habrá dado el CAU (Centro de Atención al Usuario) del Área de Informática. El segundo es uca.es. No escriba ni marque nada más aquí, y pulse Aceptar. El botón Enrutado le llevaría a la pantalla de Configuración del enrutado, pero no se preocupe en pulsarlo siquiera, porque todos los campos deben dejarse en blanco. Por último, el botón Avanzado le despliega una lista. Si usa ndiswrapper, escoja el primer elemento, Detalles del hardware, y compruebe que ndiswrapper aparece como Nombre del módulo. No tiene que tocar nada más. Pulse Aceptar y Siguiente. 6. Ahora estará en otra pantalla relativa a la Configuración de la tarjeta de red inalámbrica. Aquí se configura iwconfig de modo gráfico. El Modo de operación será Gestionado. El identificador de red (ESSID) será ucAir, el modo de autentificación será Abierto, en Tipo de entrada de clave escoja Hexadecimal y escriba 26 ceros. Pulse Siguiente y Finalizar. 7. Cámbiese al directorio /etc/sysconfig/network/if-up.d y cree un fichero allí con las siguientes líneas: #!/bin/sh /usr/sbin/xsupplicant -i wlan0 > /dev/null 2>&1 & -7- Llámelo xsupplicant y dele permisos de ejecución. Si quiere puede hacerlo todo así: # cd /etc/sysconfig/network/if-up.d # echo '#!/bin/sh' > xsupplicant # echo '/usr/sbin/xsupplicant -i wlan0 > /dev/null 2>&1 &' >> xsupplicant # chmod +x xsupplicant 8. Rearranque el equipo para comprobar el funcionamiento. 8. Referencias 1. General, red inalámbrica en GNU/Linux: http://www.tldp.org/HOWTO/Wireless-HOWTO.html 2. General, red inalámbrica en SuSE Linux: http://support.novell.com/cgi-bin/search/searchtid.cgi?/en/2002/11/wavelan.html 3. Autenticación EAP/TLS entre RADIUS y Xsupplicant: http://www.missl.cs.umd.edu/wireless/eaptls/?tag=missl-802-1 4. Ndiswrapper: http://ndiswrapper.sourceforge.net/ 5. Páginas del Manual de Referencia de GNU/Linux: ifconfig(8), iwconfig(8), interfaces (5). Documentación de Xsupplicant en /usr/share/doc/packages/xsupplicant (SuSE) o /usr/share/doc/xsupplicant (GNU/Debian y derivados). 6. Red inalámbrica de la Universidad de Cádiz (ucAir): http://www.uca.es/ucair/ -8-