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.