Estas instrucciones se han elaborado para Ubuntu 10.10, aunque serán, en su mayoría, válidas para otras distribuciones GNU/Linux, particularmente si utilizan el sistema de inicio upstart.
Con estos pasos se podrá prescindir de NetworkManager, haciendo que el servicio network de Ubuntu/Debian sea el que conecte a los puntos de acceso inalámbricos configurados, utilizando tanto cifrado WPA-PSK como WEP y con configuración IP automática mediante DHCP.
Para poder realizar la conexión se necesitarán los paquetes ifupdown y wpasupplicant, por lo que lo primero será instalarlos.
Una vez instalados se debe desactivar NetworkManager. Lo mejor es desinstalar el paquete network-manager, pero si sólo se quiere desactivar se pueden mover los ficheros encargados de configurar su inicio a otro directorio y parar su ejecución.
sudo mv /etc/init/network-manager.conf disabled-init/
sudo stop network-manager
Con NetworkManager desactivado es turno para configurar el interfaz inalámbrico y las características de conexión de cada punto de acceso en los ficheros /etc/network/interfaces y /etc/wpa_supplicant/wpa_supplicant.conf respectivamente.
Las instrucciones para la configuración del fichero /etc/network/interfaces y la conexión al punto de acceso WPA-PSK se obtuvieron del artículo Linux_Wireless_Networking, y la configuración de la conexión al punto de acceso con cifrado WEP se completo utilizando la ayuda del fichero /usr/share/doc/wireless-tools/README.Debian y del manual de wpa_supplicant.conf, ya que se hizo sin acceso a Internet.
Configuración de /etc/network/interfaces
La configuración del interfaz, suponiendo que sea eth1 el interfaz inalámbrico, se hará añadiendo lo siguiente al fichero /etc/network/interfaces (para configuración DHCP):
auto eth1
iface eth1 inet dhcp
wireless-essid WiFi_01
pre-up wpa_supplicant -B -Dwext -ieth1 -c/etc/wpa_supplicant/wpa_supplicant.conf
post-down killall -q wpa_supplicant
Esta configuración hace que cuando se active el interfaz eth1 se lance wpa_supplicant en modo demonio (-B), utilizando el driver wext (-Dwext), gestionando el interfaz eth1 (-ieth1) con la configuración indicada en /etc/wpa_supplicant/wpa_supplicant.conf.
Hay que hacer notar que en la parada se están matando todas las instancias de wpa_supplicant, por lo que si tenemos más de un interfaz inalámbrico, al detener uno de ellos se desconectarán los demás.
Configuración de los puntos de acceso
Una vez configurado el inicio del interfaz se configura su conexión a los puntos de acceso conocidos. Para ello, dado que en este caso se utilizan cifrados WPA-PSK o WEP, hay que proporcionar las correspondientes contraseñas de los puntos de acceso. En el caso de WPA-PSK la contraseña se puede proporcionar tanto en texto claro como cifrado. Si se quiere proporcionar como texto cifrado se debe utilizar el comando wpa_passphrase, proporcionando el ESSID del punto de acceso y la contraseña:
wpa_passphrase <ESSID> <contraseña de acceso>
El resultado será similar al siguiente:
network={ ssid="<ESSID>" #psk="<contraseña de acceso>" psk=<contraseña cifrada> }
Ahora, se utilizará la contraseña cifrada proporcionada para incluirla en el fichero /etc/wpa_supplicant/wpa_supplicant.conf, junto con algunas opciones más, de modo que el contenido del fichero sea el siguiente:
# The below line not be changed otherwise we refuse to work ctrl_interface=/var/run/wpa_supplicant # Ensure that only root can read the WPA configuration ctrl_interface_group=root # Let wpa_supplicant take care of scanning and AP selection ap_scan=1 network={ ssid="<ESSID>" key_mgmt=WPA-PSK psk=<contraseña cifrada> }
Para el punto de acceso con cifrado WEP hay que tener cuidado al proporcionar las contraseñas, no ya porque no se pueden proporcionar cifradas (que también debe tenerse en cuenta), sino porque según si las claves se proporcionan en formato ASCII o hexadecimal deberán ponerse entre comillas dobles o no. Es decir, si se va a proporcionar la clave en formato ASCII (13 caracteres para WEP104 o 5 para WEP40) la clave debe escribirse entre comillas, y si se proporciona en formato hexadecimal se hará sin comillas (26 dígitos hexadecimales para WEP104 o 10 para WEP40):
network={
ssid=»<ESSID>»
scan_ssid=1
key_mgmt=NONE
wep_key0=»1234567890zxy»
wep_tx_keyidx=0
priority=4
}
La propiedad scan_ssid a 1 indica que se realice una búsqueda activa de un punto de acceso con el ESSID indicado, para los casos en los que el punto de acceso no difunde esta información.
La propiedad priority indica la preferencia por uno u otro punto de acceso en el caso de que varios estén al alcance simultáneamente, de lo contrario se ignora.
Con esto es suficiente, ahora, desactivando y activando de nuevo el interfaz debería conectar con el punto de acceso configurado que se encuentre al alcance.
sudo ifdown eth1 sudo ifup eth1
Recuerdo que es fundamental tener NetworkManager desactivado, para comprobarlo:
ps -elf | grep NetworkManager