Guía Básica para Configurar una Conexión Inalámbrica - WiFi

Debido a la complejidad de la ley, aptosid solamente proveerá software dfsg-free, por favor, revise este vinculo para información adicional sobre fuentes no-libres para firmware

Para configurar wlan WiFi necesitará una conexión por cable durante unos pocos minutos para bajar el firmware apropriado.

Si no es posible tener una conexión alámbrica, tendrá que poner el firmware en un dispositivo removible (pendrive, floppy) y instalarlo como root desde una consola usando:

#dpkg -i <firmware.deb>

Para encontrar el firmware apropiado sin conocer el modelo o marca del chip inalambrico, puede utilizar el comando:

#fw-detect

Esto retornará la siguiente información:

#apt-get update
#apt-get install <name of firmware>
#modprobe -r <modulename>
#modprobe <modulename>

Use la línea de comando para "apt-get install ..." que el comando fw-detect, le dio. Después de eso, necesita dar unas órdenes en consola antes de configurar el dispositivo.

Ahora tiene que cargar el módulo para poder configurar el dispositivo.

Como root en una consola, haga lo siguiente:

modprobe -r <modulename>

modprobe <modulename>

Reemplazar <modulename>, con la información que el comando fw-detect le dio antes. Una función útil de "konsole" puede ser usada aquí: completación en bash:
Si entra las primeras letras de <modulename> y oprime la tecla TAB, se completa el nombre del modulo (e.g., modprobe ipw TECLA-TAB). También evita así errores de ortografía.

Ningún comando de modprobe da salida si la orden fue exitosa, entonces si aparece el prompt normal es que el módulo se cargó bien..

Puede verificarlo con esto:

#lsmod | grep <module>

Ahora, inicie Ceni desde KMenu > Internet o ejecútelo desde konsole como root con Ceni - Conectar en Línea. El dispositivo inalámbrico debe ser mostrado ahora y está listo para ser configurado.

Para configurar una interfaz gráfica de WiFi Wlan, vea WiFi - roaming WPA-GUI

Modos de Operación en wpasupplicant para Debian

Debido a la complejidad de la ley, aptosid solamente proveerá software dfsg-free en el liveCD, por favor revise este enlace para información adicional sobre fuentes no-libres de firmware

El paquete Debian wpasupplicant proporciona dos (2) modos convenientes de funcionamiento que están bien integrados en el núcleo de la infraestructura de la red: "ifupdown".

Contenido de esta sección

1. Especificando el administrador del driver wpasupplicant

* Tabla de controladores (Drivers) apoyados
* Recomendaciones comunes de Drivers

2. Mode #1: Modo gestionado (Managed Mode)

* Ejemplos
* Tabla de Opciones Comunes
* Notas Importantes sobre Modo Gestionado
* Cómo funciona

3. Modo #2: Modo Roaming

* wpa_supplicant.conf
* /etc/network/interfaces
* Controlando el Demonio con wpa_action
* Ajustes Finos a la Configuración de Roaming
* El archivo de Registros
* Utilzando Scripts de Mapeo Externos (e.g. guessnet)
* /etc/network/interfaces con mapeo externo

4. Búsqueda de averías

* ssids escondidos

5. Consideraciones de seguridad

* Configuración de permiso de archivos

1. Especificando el administrador del driver wpasupplicant

El driver administrador wext será usado para todo tipo de interfaz que explícitamente no configure el 'wpa-driver' como el tipo requerido para este driver. A los usuarios del kernel de Linux 2.4 ó 2.6 (menor que el 2.6.14) se les pedirá especificar un tipo de driver-wpa.

Tabla de drivers apoyados

Driver Descripción
wext Linux extensiones inalámbrica (genérica)

Recomendaciones de drivers comunes

Los adaptadores Intel Pro Inalámbrico (ipw2100, ipw2200 y ipw3945) usan todos el administrador 'wext', a menos que el kernel sea anterior al 2.6.14

Madwifi apoya tanto los drivers 'wext' como el 'madwifi'. 'wext' es el preferido; sin embardo, 'madwifi' puede funcionar mejor en algunas circunstancias.

Ndiswrapper YA NO SOPORTA el driver administrador 'ndiswrapper' desde la versión 1.16. Por consiguiente 'wext' tiene que ser usado a menos que use una versión antigua de ndiswrapper.

Fije el tipo del controlador en la línea 'interfaces'(5) para su dispositivo con la opción 'wpa-driver'. Por ejemplo:

iface eth0 inet dhcp
	wpa-driver wext
	. . . . . Más opciones

2. Modo #1: Modo gestionado (Managed Mode)

Este modo proporciona la posibilidad de establecer una conexión a una red conocida a través de wpa_supplicant. Funciona similarmente a un controlador inalámbrico. Cada elemento requerido para establecer una conexión via wpa_supplicant es prefijado con 'wpa-' y seguido por el valor que será utilizado para este elemento.

Ejemplo de un wpa.conf file de Modo #1 - Ejemplo 1.
Ejemplo de un wpa.conf file de Modo #1  - Ejemplo 1.
NOTA: el valor 'wpa-psk' es solamente valido si:

   1. Es una cadena de texto (ascii) entre 8 y 63 caracteres de largo
   2. Si es una cadena hexadecimal de 64 caracteres.

# Conecta al punto de acceso del ssid 'NETBEER' con un tipo de encriptación de
# WPA-PSK/WPA2-PSK. Asume que el driver usará el controlador 'wext' de wpa_supplicant
# porque ninguna opción del driver-wpa ha sido especificada.
# La frase de paso (passphrase) se entra como una cadena de texto ASCII.
# Se usa DHCP para obtener una dirección de red.
#
iface wlan0 inet dhcp

        wpa-ssid NETBEER
        # pase (passphrase) en texto puro
        wpa-psk Secreto_Texto_Puro

# Conecta a un punto de acceso de ssid 'homezone' con un tipo de encriptación
# EPA-PSI/EPA2-PSI, utilizando el driver del 'ext' de epa_supleción.
# El psi es dado como una cadena encriptada en formato hexadecimal. Se usa DHCP para
# obtener una dirección de red.
#
afiche Wlan0 net DHCP
        epa-driver ext
        epa-sid comezón
        # El psi en hexadecimal es encriptado con una frase de paso (passphrase) en texto ASCII.
        wpa-psk 000102030405060708090ai0b0c0d0e0f101112131415161718191a1b1c1d1e1f

# Conecta a un punto de acceso de ssid 'HotSpot1' y bssid del '00:1a:2b:3c:4d:5e'
# con un tipo de encriptación de WPA-PSK/WPA2-PSK, utilizando el driver 'madwifi'
# como parte del wpa_supplicant. El pase (passphrase) es dado como una cadena de texto puro.
# Se utiliza ana dirección estática de red.
#
iface ath0 inet static

        wpa-driver madwifi
        wpa-ssid HotSpot1
        wpa-bssid 00:1a:2b:3c:4d:5e
        # pase (passphrase) en texto puro
        wpa-psk madhotspot
        wpa-key-mgmt WPA-PSK
        wpa-pairwise TKIP CCMP
        wpa-group TKIP CCMP
        wpa-proto WPA RSN
        # configuración estática de ip
        address 192.168.0.100
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.1

# eth1 usa un fichero wpa_supplicant.conf suministrado por el usuario. Toda la información
# está contenida en el wpa_supplicant.conf porporcionado por el usuario.
# No se especifica ningún tipo de controlador wpa, por lo que wext es utilizado.
# Se usa DHCP para obtener una dirección de red.
#
iface eth1 inet dhcp
wpa-conf /path/to/wpa_supplicant.conf

Tabla de opciones comunes

Un breve resumen de opciones 'wpa-' comunes, que pueden ser utilizadas en /etc/network/interfaces para un dispositivo inalámbrico. Ver la sección 'Notas Importantes acerca del Modo Gestionado' para información acerca de valores válidos de 'wpa-'.

NOTA: TODOS los valores distinguen entre mayúsculas y minúsculas; son "SeNsIBle a maYUScula"

Elemento        Valor Ejemplo          Descripción
=======         =============          ===========
wpa-ssid	plaintextstring         fjia el ssid de su red
wpa-bssid	00:1a:2b:3c:4d:5e       el bssid de su AP
wpa-psk           0123456789......     su clave pre-definido wpa. Usa:
                                       wpa_passphrase(8) para generar su psk
                                       de una frase (passphrase) y pareja ssid
wpa-key-mgmt  NONE, WPA-PSK, WPA-EAP,  lista de claves autenticadas y aceptadas
                IEEE8021X              protocolos de gestión
wpa-group    CCMP, TKIP, WEP104,        lista de cifras de grupo aceptado para WPA, WEP40
wpa-pairwise    CCMP, TKIP, NONE        lista de cifras de pares aceptados para WPA
wpa-auth-alg    OPEN, SHARED, LEAP      lista de algoritmos permitido por IEEE 802.11
wpa-proto       WPA, RSN                lista de protocolos aceptados
wpa-identity    myplaintextname         claves de usuario proporcionadas por el administrador
          	(EAP authentication)
wpa-password    myplaintextpassword     clave personal (autenticación EAP)
wpa-scan-ssid   0 or 1                  Conmutar el escaneo de ssid con marcos especificos de Probe Request
wpa-ap-scan     0 or 1 or 2             ajusta la lógica de escaneo de wpa_supplicant





La funcionalidad completa del wpa_cli(8) debe ser implementado. Cualquier cosa que falte se considera un error y debe ser reportado como tal. Los parches siempre son bien recibidos.

Notas Importantes acerca del Modo Gestionado

Casi todas las opciones de 'wpa-' requieren que por lo menos haya un ssid especificado. Solamente unas pocas opciones tienen un efecto global. Estos son: 'wpa-ap-scan' y 'wpa-preauthenticate'.

Cualquier opción 'wpa-' dado por una dispositivo en el archivo interfaces(5) es suficiente para poner en acción el daemon wpa_supplicant.

El script ifupdown de wpasupplicant hace una suposición acerca del tipo de entrada que es válido para cada opción. Por ejemplo, asume que algunas entradas están en texto puro y las encierra entre comillas antes de pasarlas a wpa_cli, que a su vez las agrega al bloque de red que está siendo formado via el socket wpa_supplicant ctrl_interfaz.

Ejecutando el ifup manualmente con la opción '--verbose' se muestran todos los comandos utilizados para formar el bloque de la red via wpa_cli. Si el valor que puso para cualquier opción wpa-* en /etc/network/interfaces es encerrado entre comillas dobles, entonces se supone que las entradas son de texto puro o de tipo "ascii".

Algunas entradas se supone que son una cadena en hexadecimal (por ejemplo, wpa-wep-key*). Sin embargo, el tipo de valor de la opción wpa-psk está determinado por una simple verificación de más de un carácter que no sea hexadecimal.

Como funciona

Como se mencionó, cada elemento especifico de wpa_supplicant está prefijado con 'wpa-'. Cada elemento está correlacionado con una propiedad de wpa_supplicant como está descrito en las páginas man de wpa_supplicant.conf(5), wpa_supplicant(8) y wpa_cli(8).

El supplicant se lanza sin ninguna pre-configuración, y wpa_cli forma una configuración en red según los datos poporcionados por las líneas de 'wpa-*'. Inicialmente, wpa_supplicant/wpa_cli fija directamente las propiedades del dispositivo (como especificar un essid con iwconfig, por ejemplo), e informa al dispositivo qué puntos de acceso están disponibles. Una vez que el dispositivo ha escaneado el área y encontrado que el punto apropiado de acceso está disponible para su uso, estas propiedades quedan fijadas.

El script que hace todo el trabajo está ubicado en:

/etc/wpa_supplicant/ifupdown.sh
/etc/wpa_supplicant/functions.sh

ifupdown.sh es ejecutado por run-parts, el cual, a su vez, es invocado por ifupdown durante las fases 'pre-up', 'pre-down' y 'post-down'.

En el fase 'pre-up', se lanza un daemon de wpa_supplicant, seguido por una serie de comandos wpa_cli que configuran una red según las opciones 'wpa-' que estaban siendo utilizadas en /etc/network/interfaces para el dispositivo físico.

Si el wpa-roam está siendo utilizado, se lanza un daemon de wpa_cli en la fase 'post-up'.

En la fase 'pre-down', el daemon wpa_cli es apagado, si estaba activo.

En la fase 'post-down', el daemon wpa_supplicant termina.

3. Modo #2: Modo Roaming

Este paquete proporciona un mecanismo roaming autosuficiente y sencillo. Está en forma del script de acción wpa_cli, /sbin/wpa_action, y asume el control de ifupdown una vez activado. La página man wpa_action(8) describe los detalles técnicos muy a fondo.

Para activar una interfaz roaming, adapte las siguientes líneas como ejemplo de interfaces(5):

iface eth1 inet manual
	wpa-driver wext
        wpa-roam /path/to/wpa_supplicant.conf

Dos daemones se han creado en el ejemplo anterior: wpa_supplicant y wpa_cli. Es necesario proporcionar la configuración en wpa_supplicant.conf. Un buen punto de comienzo se proporciona en el archivo ejemplo de configuración:

 # copy the template to /etc/wpa_supplicant/
        cp /usr/share/doc/wpasupplicant/examples/wpa-roam.conf \
                /etc/wpa_supplicant/wpa_supplicant.conf
        # permite leer/escribir el archivo solamente al usuario root
        chmod 0600 /etc/wpa_supplicant/wpa_supplicant.conf

NOTA:   Es crítico que el wpa_supplicant.conf usado defina la localizacón de 'ctrl_interface'
	así que un soket de comunicación se crea para que wpa_cli (wpa-roam daemon)
	pueda conectar. La configuración ejemplo mencionada,
	/usr/share/doc/wpasupplicant/examples/wpa-roam.conf,
	ha sido fijada en una configuración predeterminada.

Necesitará editar este archivo de configuración; agregue todos los bloques de redes conocidos. Si no entiende lo que ésto significa, comience leyendo la página man wpa_supplicant.conf(5).

Para cada red, puede especificar una opción especial, 'id_str'. Esto debe ser una cadena de texto sencilla. Esta cadena de texto forma las bases para perfilar la red; se correlaciona con el interfaz lógico definido en el archivo interfaces(5). Cuando ningún 'id_str' se proporciona para una red, wpa_action asume que debe usar la interfaz lógica preseleccionada. La interfaz preseleccionada puede ser escogida a través de la opción 'wpa-default-iface'.

¿Entonces qué quiere decir todo esto? Vamos a ilustrarlo con un pequeño ejemplo tomado de la página man de wpa_action(8).

wpa_supplicant.conf ejemplo
wpa_supplicant.conf example:
network={
        ssid="foo"
        key_mgmt=NONE
        # this id_str will notify /sbin/wpa_action to 'ifup uni'
        id_str="uni"
}

network={
        ssid="bar"
        psk=123456789...
        # this id_str will notify /sbin/wpa_action to 'ifup home_static'
        id_str="home_static"
}

network={
        ssid=""
        key_mgmt=NONE
        # no 'id_str' parameter is given, /sbin/wpa_action will 'ifup default'
}
/etc/network/interfaces ejemplo
/etc/network/interfaces ejemplo:
# el interfaz roaming TIENE que usar el método manual de inet
# 'allow-hotplug' o 'auto' asegura que el daemon arranca automáticamente
allow-hotplug eth1
iface eth1 inet manual

        wpa-driver wext
        wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf


# si no hay id_str, 'default' es utilizado como el objetivo preseleccionado de mapping
iface default inet dhcp


# id_str="uni"
iface uni inet dhcp

# id_str="home_static"
iface home_static inet static

        address 192.168.0.20
        netmask 255.255.255.0
        network 192.168.0.0

        broadcast 192.168.0.255
        gateway 192.168.0.1

Se arranca una interfaz lógica por via ifup y bajada por ifdown, mientras el wpa_supplicant asocia y desasocia con la red a él asociada por la opción 'id_str' utilizada en el archivo de configuración wpa_supplicant.conf.

Se crea un registro de las acciones de /sbin/wpa_action en /var/log/wpa_action.log. Por favor anexe ese registro cuando reporte algún problema.

Interactuando con el wpa_supplicant con wpa_cli y wpa_gui

El proceso wpa_supplicant puede interactuar con los miembros el grupo "netdev" si el grupo configuración de roaming del ejemplo fue usado tal como está (o por cualquier grupo o gid especificado por el parametro, GROUP= crtl_interface).

# la opción ctrl_interface preseleccionada en el archivo ejemplo
	# /usr/share/doc/wpasupplicant/examples/wpa-roam.conf
        ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev

Para interactuar con el supplicant, el wpa_cli (línea de comando) y wpa_gui (interfaz gráfica)
ha sido proporcionado. Con ellos puede conectar, desconectar, agreguar o quitar bloques
nuevos de redes, proveer información de seguridad interactiva, etc.

Controlando el Daemon Roaming con wpa_action

El daemon roaming, una vez arrancado, asume el control de ifupdown. Eso es: wpa_cli llama a ifup cuando el wpa_supplicant se ha asociado exitosamente con un punto de acceso, y llama a ifdown cuando la conexión se ha perdido o terminado. Mientras el daemon roaming está activo, ifupdown no debe ser controlado directamente por comandos manuales, sino, mediante /sbin/wpa_action que sirve para parar y recargar el daemon roaming. Por ejemplo, para parar este demonio en el dispositivo 'eth1':

wpa_action eth1 stop

Cuando necesite que el daemon roaming actualice nuevos datos sobre la red, lo puede realizar sin parar. Edite el archivo wpa_supplicant.conf que está siendo utilizado por el daemon con los nuevos detalles de la red, agregue configuraciones opcionales a /etc/network/interfaces que sean especificas de la nueva red (enlazada por 'id_str') y entonces, recargue el daemon así:

wpa_action eth1 reload

Para detalles técnicos completos de lo que el wpa_action puede hacer, lea la página man de wpa_action(8).

Afinando la configuración Roaming

Puede encontrarse en situaciones en las que varios puntos múltiples de acceso estén en su proximidad. Puede escoger cuál es el preferido manualmente, con el wpa_cli o wpa_gui, o puede dar a cada red su prioridad. Esto se hace con la opción 'prioridad' de wpa_supplicant.conf.

El fichero de registro

Todo la actividad del daemon roaming es grabada en /var/log/wpa_action.log. La siguiente información queda registrada:

*hora y fecha
* nombre del interfaz y el evento de acción
*valores de variables del ambiente (WPA_ID, WPA_ID_STR, WPA_CTRL_DIR)
*si el ifupdown comando fue ejecutado
*estatus del wpa_cli (basado en WPA-PSK, la red puede mostrar info. diferente)
*bssid
*ssid
*id
*id_str
*pairwise_cipher
*group_cipher
*key_mgmt
*wpa_state
*ip_address

Usando los scripts de Mapping External (por ejemplo, guessnet)

Además del mapeo interno de interfaces lógicas via el 'id_str', el wpa_action puede a llamar scripts externos de mapeo. Un script de mapeo debe devolver el nombre de la interfaz lógica que ha de ser levantada. Cualquier script de mapeo que funcione desde el mecanismo de mapeo ifupdowns (ver páginas man interfaces) debe también funcionar cuando sea llamado desde el wpa_action.

Para llamar un script de mapeo, agregue una línea al 'wpa-mapping-script nombre-del-script' en la parte de interfaces del dispositivo físico de roaming. (Puede que tener que especificar la ruta absoluta al script de mapeo.)

El contenido de las líneas que comienzan con wpa-map se pasa al stdin del script de mapeo. En vista de que el ifupdown sólo permite una línea de wpa-map, puede adjuntar cualquier número a wpa-map para líneas adicionales. Por ejemplo:

iface wlan0 inet manual
        wpa-driver wext
        wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
        wpa-mapping-script guessnet-ifupdown
        wpa-map0 home
        wpa-map1 work
        wpa-map2 school
        # ... adicional líneas wpa-mapX según requerimiento

Por preselección, el script de mapeo será sólo utilizado cuando ningún 'id_str' esté disponible para la red corriente. Si desea desactivar completamente el 'id_str' preseleccionado y utilizar solamente un script externo de mapeo, use la opción 'wpa-mapping-script-priority 1' para anular el comportamiento preseleccionado.

Si el script de mapeo retorna una cadena vacia, el wpa_action recurrirá a la interfaz 'default' (preseleccionada), a menos que haya una alternativa definida por la opción 'wpa-roam-default-iface'.

Abajo hay un ejemplo avanzado utilizando el guessnet-ifupdown como el script externo de mapeo.

/etc/network/interfaces con ejemplo de mapeo externo
/etc/network/interfaces con ejemplo de mapeo externo:
allow-hotplug wlan0
iface wlan0 inet manual

        wpa-driver wext
        wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
        wpa-roam-default-iface default-wparoam
        wpa-mapping-script guessnet-ifupdown
        wpa-map default: default-guessnet
        wpa-map0 home_static
        wpa-map1 work_static


# school solamente puede ser escogido por una coincidencia 'id_str':
iface school inet dhcp

        # resolvconf
        dns-nameservers 11.22.33.44 55.66.77.88

iface home_static inet static

        address 192.168.0.20
        netmask 255.255.255.0

        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.1
        test peer address 192.168.0.1 mac 00:01:02:03:04:05


iface work_static inet static

        address 192.168.3.200
        netmask 255.255.255.0
        network 192.168.3.0
        broadcast 192.168.3.255

        gateway 192.168.3.1
        test peer address 192.168.3.1 mac 00:01:02:03:04:05

iface default-guessnet inet dhcp

iface default-wparoam inet dhcp

En este ejemplo el wpa_action utilizará el guessnet para la selección de una interfaz lógica apropiada solamente cuando ninguna opción 'id_str' ha sido proporcionada para la red corriente en el wpa_supplicant.conf suministrado.

Los líneas 'wpa-map' proveen a guessnet la interfaz lógica que ha de ser probada, así como la interfaz preseleccionada que será utilizada cuando todas las pruebas fallen. Las líneas 'test' de cada interfaz lógica son utilizadas para determinar si estamos realmente conectados a esa red. Por ejemplo, el guessnet escoge la interfaz lógica 'home_static' si existe un dispositivo con una dirección IP de 192.168.0.1 y un MAC de 00:01:02:03:04:05 en la red corriente. Si todas las pruebas fallan, la interfaz 'default-guessnet' será configurada

Por favor, lea la página man de guessnet(8) para más información.

4. Búsqueda de averías

Para depurar problemas de conexión, asociación y autenticación, sugerimos iniciar el `wpa_cli -i <interface>` en una consola diferente antes de iniciar la interfaz. Use primero el nivel '0' de comando para recibir todos los mensajes de depuración. Entonces, use 'ifup --verbose <interface>' para recibir mensajes más completos del script que inició el wpasupplicant.

ssids escondidos

Para referencia, ver #358137. Para poder asociar los ssids escondidos, por favor intente fijar la opción 'ap_scan=1' en la sección global, y 'scan_ssid=1' en la sección del bloque de red (network block) del archivo de configuración de wpa_supplicant.conf. Si está utilizando el modo gestionado, puede realizarlo con estas líneas:

iface eth1 inet dhcp
wpa-conf managed
wpa-ap-scan 1
wpa-scan-ssid 1
# ... opciones adicionales para configuraciones

Según el #368770, asociación puede llevar un largo tiempo para asociar redes seguras WEP. En algunos casos, fijando el parámetro 'ap_scan=2' en el archivo de configuración, (o utilizando una línea 'wpa-ap-scan 2', que es lo equivalente) puede acelerar mucho la asociación.

Por favor, note que fijar ap_scan = 2 también requiere que todas las redes tengan una politica de seguridad precisa para key_mgmt, pairwise, group en la politica de variables de red.

5. Consideraciones de seguridad

Permisos de archivos de configuración

Es importante mantener en privado los PSK's y otra información sensible acerca de las configuraciones privadas de su red; para ello, asegúrese que todos los archivos de configuracións que contienen datos importantes son sólo leíbles por su dueño. Por ejemplo:

chmod 0600 /etc/network/interfaces
# sustituir la ruta de su archivo wpa_supplicant.conf
chmod 0600 /etc/wpa_supplicant/wpa_supplicant.conf

Por preselección, /etc/network/interfaces es leíble por cualquier usuario, y esto no es apropiado para contener claves secretas y passwords.

Page last revised 14/08/2010 0100 UTC