Difference between revisions of "WPA supplicant (Español)"

From ArchWiki
Jump to: navigation, search
(Paso 2)
(Actualización)
Line 1: Line 1:
 +
[[Category:Wireless Networking (Español)]] 
 
[[en:WPA supplicant]]
 
[[en:WPA supplicant]]
 
[[it:WPA supplicant]]
 
[[it:WPA supplicant]]
 
[[ru:WPA Supplicant]]
 
[[ru:WPA Supplicant]]
 
[[zh-CN:WPA Supplicant]]
 
[[zh-CN:WPA Supplicant]]
[[Category:Wireless Networking (Español)]]
+
[http://hostap.epitest.fi/wpa_supplicant/ wpa_supplicant] es una multiplataforma de [[Wikipedia:Supplicant (computer)|WPA Supplicant]] con soporte para WPA y WPA2 ([https://en.wikipedia.org/wiki/IEEE_802.11i IEEE 802.11i] / RSN —Robust Secure Network—). Está adaptado tanto para los ordenadores de sobremesa/portátiles como para sistemas integrados. {{ic|wpa_supplicant}} es el componente IEEE 802.1X/WPA utilizado por las estaciones cliente. Implementa las negociaciones entre la clave y un WPA Authenticator, y contola el roaming y la asociación/autenticación IEEE 802.11 del controlador wland.
Una red protegida por un clave WEP estática (e incluso dinámica) puede verse ''muy fácilmente'' comprometida por un usuario malintencionado. WPA resuelve el problema de la clave estática, cambiándola después de un cierto número de paquetes de red transmitidos/recibidos, o después de cierto lapso de tiempo. Este proceso es realizado por un demonio que está estrechamente ligado al hardware inalámbrico del que dispongamos.
+
   
 +
==Instalación==   
 +
Instale el paquete {{Pkg|wpa_supplicant}} desde los [[Official Repositories (Español)|repositorios oficiales]].
  
Los controladores de poca calidad (en particular los utilizados a través de ndiswrapper) pueden resultar frustantes cuando se usan junto con [http://hostap.epitest.fi/wpa_supplicant/ wpa_supplicant]. Por lo tanto, si es posible, utilice hardware con soporte adecuado junto con controladores de alta calidad.
+
También tiene la posibilidad de instalar el paquete {{Pkg|wpa_supplicant_gui}} que proporciona {{ic|wpa_gui}}; es un fronted gráfico para {{ic|wpa_supplicant}} que usa las herramientas {{pkg|qt4}}.
  
==Consideraciones==
+
==Configuración==
Este artículo parte del supuesto de que estamos familiarizado con el hardware, y somos capaces de encontrar el camino a los archivos de configuración de los mismos y a la configuración del sistema. Es muy importante que hayamos '''leído y entendido''' el artículo sobre [[Wireless Setup (Español)|Wireless Setup]], ya que es la base de todo lo que vamos a explicar aquí.
+
El paquete {{pkg|wpa_supplicant}} proporciona un archivo de configuración de ejemplo situado en {{ic|/etc/wpa_supplicant/wpa_supplicant.conf}}, que documenta, de modo detallado, todas las opciones disponibles y relativas a la configuración.
  
El seguimiento de este documento no constituye un requisito previo para conectarnos si el hardware funciona una vez hecha la instalación y se gestiona adecuadamente a través de un demonio de conexión de red como [[NetworkManager (Español)|NetworkManager]] o similar. Si preferimos conectarnos a la red mediante una herramienta gráfica, este artículo no le será de utilidad.
+
El contenido mínimo del archivo de configuración requiere un bloque de red, por ejemplo:
 
+
{{hc|/etc/wpa_supplicant/foobar.conf|2=
==Instalación==
+
  network={
WPA supplicant puede ser [[Pacman (Español)|instalado]] con el paquete {{Pkg|wpa_supplicant}}, disponible en los [[Official Repositories (Español)|repositorios oficiales]].
+
    ssid="..."
 
+
  }
Este paquete ha sido compilado para ser compatible con una amplia gama de hardware inalámbrico. A título informativo, he aquí la lista, que se puede obtener mediante la ejecución de '{{ic|wpa_supplicant}}':
+
# wpa_supplicant
+
...
+
+
Driver list:
+
+
*HostAP
+
*Prism54
+
*NDISWrapper
+
*AMTEL
+
*IPW (both 2100 and 2200 drivers)
+
*WEXT (Generic Linux wireless extensions)
+
*Wired ethernet
+
 
+
La mayor parte del hardware inalámbrico está soportado por defecto por ''wpa_supplicant''. Incluso si el fabricante del chipset no está en la lista (que es el caso más probable), todavía podríamos hacer uso de las Extensiones Wireless Genéricas (WEXT) para conectarnos a una red WPA-segura. La mayoría (~75%) del hardware está soportado por WEXT, mientras que alrededor del ~20% es compatible recompilando ''wpa_supplicant'' y/o los controladores de hardware a partir de cero, y, por desgracia, el restante 5%, es definitivamente incompatible. El PKGBUILD de WPA Supplicant está disponible en: {{ic|/var/abs/core/wpa_supplicant}}, con el árbol [[Arch Build System (Español)|ABS]] instalado.
+
 
+
===Opcional: Instalar la versión con la interfaz gráfica del usuario===
+
 
+
Los usuarios que prefieran disponer de una interfaz gráfica pueden instalar el paquete {{pkg|wpa_supplicant_gui}}, desde los repositorios oficiales, una interfaz gráfica de usuario desarrollada por el mismo equipo.
+
 
+
==Configuración y conexión==
+
WPA Supplicant viene empaquetado con un archivo de configuración de muestra: {{ic|/etc/wpa_supplicant/wpa_supplicant.conf}}. Está bien comentado y ofrece muchos detalles sobre la mecánica de las conexiones de red. Todas las variables utilizadas en este artículo están descritas en ese archivo. También cuenta con una gran cantidad de muestras de configuración. Es muy recomendable leerlo, así como las páginas del manual {{ic|man wpa_supplicant}} y {{ic|man wpa_supplicant.conf}}.
+
 
+
Un archivo de configuración WPA_Supplicant contiene todos los ajustes de configuración para {{Ic|wpa_supplicant}}. Podemos crear tantos como queramos y ponerlos donde queramos, desde el momento en que debemos especificar qué archivo de configuración se va a usar en cada llamada de {{ic|wpa_supplicant}}. Su contenido es muy simple:
+
* La primera parte comprende la configuración global. Consiste en una serie de líneas ''key-value''.
+
* La segunda parte se compone de ''bloques de red'', uno para cada «perfil» que deseemos configurar.
+
 
+
Con el fin de simplificar, dejaremos el archivo de configuración de muestra donde y como está, y trabajaremos en un archivo {{ic|/etc/wpa_supplicant.conf}} completamente nuevo.
+
 
+
Hay varias maneras de administrar la configuración de wpa_supplicant. Podemos elegir entre uno de los siguientes métodos.
+
 
+
===Manual===
+
====Archivo de configuración====
+
 
+
En primer lugar, debemos conocer todos los parámetros necesarios para conectarnos al punto de acceso.
+
# iw wlan0 scan
+
Para obtener más detalles consulte [[Wireless_Setup_(Español)#Descubrir_el_punto_de_acceso|aquí]].
+
 
+
Con esto conoceremos los siguientes parámetros para wpa_supplicant:
+
* ssid
+
* proto (opcional en las redes sin cifrar)
+
* key_mgmt
+
* pairwise
+
* group
+
Además, es posible que necesitemos conocer parámetros de autenticación (EAP, PEAP, etc.) para acceder a una red particular, como suele ser el caso, por ejemplo, en las universidades.
+
 
+
'''Primera acción'''
+
 
+
Ahora podemos crear un bloque de red en el archivo de configuración:
+
{{hc|wpa_supplicant.conf|<nowiki>
+
network={
+
        ssid="identificador de la red inalámbrica_ssid"
+
        psk="frase_de_acceso_secreta"
+
        # Parámetros adicionales (proto, key_mgmt, etc.)
+
}</nowiki>
+
 
}}
 
}}
  
Esta es la configuración básica necesaria para hacer funcionar WPA. La primera línea es la declaración de apertura del bloque de red, la segunda hace referencia al SSID del punto de acceso al que estamos intentando conectarnos, la tercera línea es la frase de contraseña.
+
Lo anterior puede ser fácilmente generado usando la herramienta {{ic|wpa_passphrase}}. Por ejemplo:
 
+
  $ wpa_passphrase foobarssid foobarspassword
{{Advertencia|No se olvide de las comillas dobles alrededor de SSID y PSK.}}
+
 
+
'''Frase de contraseña y PSK'''
+
 
+
El lector avispado habrá notado que la PSK debe ser una cadena hexadecimal. En efecto, la frase de contraseña (''«passphrase»'') y la PSK no son exactamente la misma cosa. La frase de contraseña es una clave legible por los usuarios que se utiliza junto con el SSID para que la máquina genere la clave familiarmente conocida como "PSK". A nivel de red, la frase de contraseña nunca se utiliza directamente, es solo una forma cómoda y eficaz de manejar la clave por nosotros.
+
 
+
Podemos proporcionar la versión hexadecimal directamente usando la utilidad {{Ic|wpa_passphrase}}, que se suministra como parte del paquete {{pkg|wpa_supplicant}}. Utilizaremos la sintaxis {{Ic|wpa_passphrase "[ssid]" "[passphrase]"}}
+
 
+
*Un ejercicio de ejemplo:
+
  # wpa_passphrase "mywireless_ssid" "secretpassphrase"
+
 
+
Esto debería generar el bloque de red siguiente:
+
 
  network={
 
  network={
        ssid="mywireless_ssid"
+
    ssid="foobarssid"
        #psk="secretpassphrase"
+
    #psk="foobarspassword"
        psk=7b271c9a7c8a6ac07d12403a1f0792d7d92b5957ff8dfd56481ced43ec6a6515
+
    psk=f5d1c49e15e679bebe385c37648d4141bc5c9297796a8a185d7bc5ac62f954e3
 
  }
 
  }
  
La tercera línea es la frase de contraseña (la clave legible), y la cuarta línea es la PSK (clave hexadecimal) que se requiere para conectarse. El símbolo de la almohadilla {{ic|#}} comenta la línea relativa a la frase de contraseña (la frase de contraseña no es costumbre utilizarla, ya que siempre se proporciona la PSK para conectarnos).
+
Ahora también es posible combinar la utilización de {{ic|wpa_supplicant}} y {{ic|wpa_passphrase}} para asociarse a, prácticamente, todas las redes WPA2 (Personal):
 
+
  # wpa_supplicant -B -i [nombre de la interfaz] -c <(wpa_passphrase [essid] [passphrase])
{{Nota|La PSK hexadecimal no debe estar entre comillas.}}
+
No queda más que conectarse ajustando una [[Network Configuration#Static_IP_Address|dirección IP estática]] o [[Network Configuration#Dynamic_IP_Address|DHCP]]. Por ejemplo:
 
+
  # dhcpcd -A [nombre de la interfaz]
* Al utilizar {{Ic|wpa_passphrase}}, especificaremos el SSID y la contraseña correspondiente, y redirigiremos su salida al archivo {{ic|/etc/wpa_supplicant.conf}}:
+
# wpa_passphrase mywireless_ssid "secretpassphrase" >> /etc/wpa_supplicant.conf
+
El símbolo {{Ic|>>}} redirigirá y añadirá la salida al archivo {{ic|/etc/wpa_supplicant.conf}}, sin sobrescribirlo.
+
Podemos agregar todos los bloques de red que deseemos. wpa_supplicant sabrá cuál usar en base a los SSID detectados en la zona.
+
 
+
'''Opciones de bloque de red'''
+
 
+
Todos los parámetros de seguridad deben ser especificados aquí. Debemos tener en cuenta que si no estámos seguros de cual es el valor que el punto de acceso requiere, podemos utilizar varios de ellos, wpa_supplicant utilizará automáticamente el que funciona. Por ejemplo, podemos agregar:
+
proto=WEP WPA
+
de modo que si el punto de acceso utiliza WEP o WPA, funcionará en cualquiera de ambos casos. Pero si se utiliza RSN (también conocido como WPA2), no lo encontrará por sí mismo, sino que hay que añadirlo a los otros valores.
+
 
+
Si el SSID está oculto, agregaremos la siguiente opción al bloque de red:
+
scan_ssid=1
+
Si necesitamos conectarnos a varias redes, basta con definir otro bloque de red en el mismo archivo:
+
Es posible especificar una prioridad para cada bloque de red:
+
priority=17
+
Podemos cambiar la prioridad a voluntad, recordando que las prioridades con números altos son probados en primer lugar.
+
 
+
Hay un gran número de opciones que están disponibles para ajustar la red que se pueden investigar analizando el archivo de configuración original. En la mayoría de los casos, podemos utilizar los valores predeterminados sin especificar nada más en esa sección, de momento.
+
 
+
'''Opciones globales'''
+
 
+
Por último, tendremos que especificar algunas opciones globales.
+
Especificaremos estas líneas adicionales en la parte superior del archivo {{ic|/etc/wpa_supplicant.conf}}, con el editor que elijamos. La siguiente línea es obligatoria.
+
ctrl_interface=DIR=/run/wpa_supplicant GROUP=wheel
+
 
+
{{Nota|1=Para usar con {{Pkg|netcfg}}>=2.6.1-1, este debe ser {{ic|/run/wpa_supplicant}} (nota: ''no'' {{ic|/var/run/wpa_supplicant}}). Esto, sin embargo, rompe lo predeterminado para {{Ic|wpa_cli}} (use la opción {{Ic|-p}} para sobrescribirlo). Si no se cambia esto, se obtiene un error como «Failed to connect to wpa_supplicant - wpa_ctrl_open: no such file or directory».}}
+
 
+
Hay una gran cantidad de parámetros opcionales (eche un vistazo a {{ic|/etc/wpa_supplicant/wpa_supplicant.conf}}). Por ejemplo:
+
ap_scan=0
+
fast_reauth=1
+
 
+
{{Nota|La información de nuestra red se almacenará en formato de texto plano, por lo que puede ser deseable cambiar los permisos en el recién creado archivo {{ic|/etc/wpa_supplicant.conf}}  (por ejemplo, {{Ic|chmod 0600 /etc/wpa_supplicant.conf}} para que sea legible únicamente por root), dependiendo de la forma de seguridad que tengamos.}}
+
 
+
'''Ejemplo completo'''
+
{{hc|wpa_supplicant.conf|<nowiki>
+
ctrl_interface=DIR=/run/wpa_supplicant GROUP=wheel
+
fast_reauth = 1
+
ap_scan = 1
+
 
+
network ={
+
    ssid    = "mySSID"
+
    proto    = RSN
+
    key_mgmt = WPA-EAP
+
    pairwise = TKIP CCMP
+
    auth_alg = OPEN
+
    group    = TKIP
+
    eap      = PEAP
+
    identity = "myUsername"
+
    password = "********"
+
}</nowiki>
+
}}
+
 
+
Configuraciones más sofisticadas, como la autenticación mediante servidor EAPOL o RADIUS están muy bien detalladas en la página de manual de {{ic|wpa_supplicant.conf}} ({{ic|man wpa_supplicant.conf}} ). No podemos olvidarnos de mirar {{ic|/etc/wpa_supplicant/wpa_supplicant.conf}}. Estas configuraciones exceden las pretensiones de este documento.
+
 
+
==== Conexión ====
+
 
+
Ahora podemos intentar conectarnos manualmente.
+
 
+
En primer lugar, abrimos la interfaz Wi-Fi. Para los fines de este ejemplo, se utilizará la interfaz ''wlan0''.
+
# ip link set wlan0 up
+
 
+
Por lo general, seremos capaces de usar el controlador '''W'''ireless '''EXT'''ensions  para wpa_supplicant, y si no, entonces quizás sea necesario buscar en Internet cómo hacerlo con nuestro dispositivo inalámbrico específico.
+
 
+
Ejecutaremos lo siguiente como root:
+
# wpa_supplicant -B -Dwext -i wlan0 -c /etc/wpa_supplicant.conf
+
 
+
La sintaxis anterior le dice a wpa_supplicant que utilice la configuración del hardware predeterminada (WEXT - Linux '''W'''ireless '''EXT'''ensions) y la asocie al SSID que se especifica en {{ic|/etc/wpa_supplicant.conf}}. Además, esta asociación se debe realizar a través de la interfaz inalámbrica ''wlan0'', y el proceso debe realizarse un segundo plano, ({{Ic|-B}}). Para una salida escrita, agregaremos {{Ic|-d}} o {{Ic|-dd}} (para depuración de errores) a fin de volcar la información a la consola. Podemos encontrar ejemplos adicionales [http://www.examplenow.com/wpa_supplicant aquí].
+
 
+
En la salida de la consola, debe haber una línea que diga ''''Associated:'''' seguido de una dirección MAC. Todo lo que necesitamos ahora es una dirección IP.
+
 
+
{{Nota|Si no queremos o no necesitamos tocar {{ic|/etc/wpa_supplicant.conf}} (por ejemplo, al instalar Arch), podemos pasar la salida de {{ic|wpa_passphrase}} directamente a {{ic|wpa_supplicant }}:
+
{{bc|wpa_passphrase essid pass <nowiki>|</nowiki> wpa_supplicant -B -i wlan0 -c /dev/stdin}} }}
+
 
+
Como root, escribiremos:
+
# dhcpcd wlan0
+
 
+
{{Nota|¡*No* solicitaremos una dirección IP inmediatamente! Debemos esperar para asegurarnos de que estamos correctamente asociados con el punto de acceso. Si usamos un script, podemos utilizar {{Ic|sleep 10s}} para que espere 10 segundos.}}
+
 
+
Comprobaremos que la interfaz ha recibido una dirección IP usando el paquete {{Ic|iproute}}:
+
# ip addr show wlan0
+
+
    wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
+
    link/ether 00:1C:BF:66:4E:E0 brd ff:ff:ff:ff:ff:ff
+
    inet 192.168.0.62/24 brd 192.168.0.255 scope global eth0
+
    inet6 fe80::224:2bff:fed3:759e/64 scope link
+
      valid_lft forever preferred_lft forever
+
+
Si la salida se parece a lo anterior, entonces estamos conectados.
+
 
+
===wpa_gui y wpa_cli===
+
 
+
Hay dos interfaces para wpa_supplicant escritos por los mismos desarrolladores de wpa_supplicant: «wpa_cli», y «wpa_gui». wpa_cli es, como era de suponer, un frontend de línea de comandos, mientras que «wpa_gui» es un frontend basado en Qt para wpa_supplicant. wpa_cli se incluye con el paquete {{Ic|wpa_supplicant}}, mientras que {{Ic|wpa_supplicant_gui}} tiene  su propio paquete.
+
 
+
wpa_gui o wpa_cli necesitan un archivo {{ic|/etc/wpa_supplicant.conf}} muy básico. Un ejemplo simple:
+
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=network
+
update_config=1
+
 
+
Esta configuración permitirá a los usuarios del grupo {{Ic|network}} controlar {{Ic|wpa_supplicant}} a través de las interfaces wpa_gui/wpa_cli. La variable {{Ic|update_config<nowiki>=</nowiki>1}} permite que estos programas (wpa_cli, wpa_gui) modifiquen automáticamente el archivo {{ic|/etc/wpa_supplicant.conf}}, para guardar las nuevas redes, o para realizar modificaciones de las ya existentes.
+
 
+
Iniciamos wpa_supplicant:
+
  # wpa_supplicant -Dwext -i wlan0 -c /etc/wpa_supplicant.conf -B
+
 
+
donde la opción {{Ic|-D}} especifica el controlador inalámbrico (que es casi siempre {{Ic|wext}}), {{Ic|-i}} especifica la interfaz (sustituiremos  {{Ic|wlan0}} con el nombre de nuestra interfaz inalámbrica) y {{Ic|-c}} especifica el archivo de configuración a utilizar (normalmente {{ic|/etc/wpa_supplicant.conf}}). {{Ic|-B}} instruirá a wpa_supplicant para ejecutarse como un demonio. Tendremos que ejecutar wpa_supplicant como root (o con permisos de root usando [[sudo (Español)|sudo]]), teniendo en cuenta también que cualquier usuario del grupo {{Ic|network}} puede ejecutar wpa_gui o wpa_cli.
+
 
+
wpa_gui o wpa_cli debe estar ahora operativo. 
+
 
+
{{Ic|wpa_cli}}, cuando se invoca sin opciones, nos conducirá a un entorno prompt, pruebe a escribir {{Ic|help}} para obtener ayuda.
+
 
+
wpa_gui es muy sencillo de usar. Si pulsamos «scan», nos mostrará una lista de SSID detectados, podemos hacer doble clic en una de ellas para añadirla, lo cual nos abrirá un cuadro de diálogo que nos permitirá introducir la información necesaria para asociarnos a la red. Lo más probable es que solo tengamos que introducir la clave precompartida (PSK) si utilizamos WPA/WPA2 o la propia {{Ic|Key0}} para una conexión WEP. Los protocolos para WPA/WPA2/WEP/Sin cifrar se detectan automáticamente. Otras opciones, como la autenticación 802.1X requerirán una configuración un poco más avanzada.
+
 
+
{{Advertencia|WEP es ''seriamente'' frágil y ''nunca'' debe utilizarse fuera de un entorno de ensayo/prueba. Utilice, al menos, ''WPA'' (WPA2 sería más recomendable) para tener una red inalámbrica más segura.}}
+
 
+
Después de agregar una red, es posible modificarla si cambia algo como la PSK. Iremos a la pestaña «Redes» y seleccionaremos Administrar la red que deseamos editar/eliminar. También podemos agregar una red no escaneada, como es el caso de las que ocultan su SSID.
+
 
+
{{Nota|Configurar la red inalámbrica para que no difunda el SSID '''no''' supone aumentar la seguridad de nuestra red. Es un ejercicio trivial poder identificar los SSID ocultos.}}
+
 
+
{{Nota|wpa_cli y wpa_gui no nos conseguirá una dirección IP o la creación de una tabla de enrutamiento adecuada. Ellos ''únicamente'' nos asocian a un punto de acceso inalámbrico.}}
+
 
+
==== Action script ====
+
 
+
Escribiremos un script como este:
+
{{hc|~/libexec/wpa_cli-action.sh|
+
case $2 in
+
CONNECTED)
+
dhcpcd -x $1 >/dev/null
+
dhcpcd $1 >/dev/null
+
;;
+
esac
+
}}
+
 
+
Lo haremos ejecutable y lanzaremos {{Ic|wpa_supplicant}} con el archivo de configuración preferido:
+
# wpa_supplicant -B -c /etc/wpa_supplicant.conf -i wlan0
+
{{Nota|El archivo de configuración debe tener el {{Ic|ctrl_interface}} configurado de modo que {{Ic|wpa_cli}} pueda funcionar.}}
+
 
+
Ahora lanzaremos {{Ic|wpa_cli}} en modo demonio, apuntando al script previamente guardado:
+
# wpa_cli -B -a ~/libexec/wpa_cli-action.sh
+
 
+
=== Inicio automático al arrancar ===
+
 
+
Debemos tener en cuenta que todo el proceso que hemos hecho anteriormente ''no'' es permanente. Esto significa que en el siguiente reinicio, tendremos que proporcionar todas las órdenes de nuevo. He aquí algunos métodos para hacer que los cambios permanezcan.
+
 
+
==== Con systemd ====
+
Este es un proceso que consta de dos pasos. El primer paso consiste en activar el servicio wpa_supplicant. El segundo consiste en activar el servicio dhcpcd para nuestro adaptador específico.
+
 
+
===== Paso 1 =====
+
Copiaremos el archivo de configuración a un archivo específico para el adaptador (wlan0 se utiliza aquí):
+
# cp /etc/wpa_supplicant/wpa_supplicant.conf  etc/wpa_supplicant/wpa_supplicant-wlan0.conf
+
 
+
Activaremos el target de systemd:
+
# systemctl enable wpa_supplicant@wlan0.service
+
 
+
Iniciaremos el servicio:
+
# systemctl start wpa_supplicant@wlan0.service
+
 
+
Comprobaremos el estado del servicio:
+
# systemctl status wpa_supplicant@wlan0.service
+
 
+
Después la voz "Active:" debe mostrar el valor "active (running)"
+
===== Paso 2 =====
+
Probablemente ya tenemos un servicio dhcpcd para eth0, pero tenemos que añadir uno, específicamente, para nuestro dispositivo inalámbrico:
+
 
+
Activaremos el target de systemd:
+
# systemctl enable dhcpcd@wlan0.service
+
 
+
Iniciaremos el servicio:
+
# systemctl start dhcpcd@wlan0.service
+
 
+
Comprobaremos el estado del servicio:
+
# systemctl status dhcpcd@wlan0.service
+
 
+
Después la voz "Active:" debe mostrar el valor "active (running)"
+
 
+
El siguiente reinicio debería abrir el adaptador inalámbrico, asociarlo con la red, y obtener una dirección IP. Lo verificaremos con la siguiente orden:
+
# ip a
+
 
+
==== Usar script de arranque ====
+
{{Out of date|Should change to systemd service.}}
+
Para iniciar automáticamente {{Ic|wpa_supplicant}} y {{Ic|wpa_cli}} en el arranque, añada las siguientes líneas a {{ic|/etc/rc.local}}:
+
wpa_supplicant -B -D wext -i wlan0 -c /etc/wpa_supplicant.conf
+
wpa_cli -B -a  /path/to/your/wpa_cli-action.sh
+
 
+
==== Usar wpa auto ====
+
Los scripts {{AUR|wpa_auto}} disponibles en [[Arch Build System (Español)|AUR]] se pueden utilizar para iniciar {{Ic|wpa_supplicant}} en el arranque y ejecutar automáticamente un cliente DHCP para configurar la conexión de red después de asociarse a una red inalámbrica, o podemos escribir nuestros propios scripts para hacer esto. También hay disponibles herramientas de gestión de wireless/network de buena calidad que son capaces de administrar tanto conexiones inalámbricas como cableadas.
+
 
+
==== netcfg====
+
 
+
[[Pacman|Instale]] {{Pkg|netcfg}} desde los repositorios oficiales.
+
 
+
Crearemos una configuración de perfil de red copiando el archivo de ejemplo:
+
  # cp /etc/network.d/examples/wireless-wpa-config /etc/network.d/wpa_suppl
+
 
+
Editaremos el nuevo archivo para asegurarnos de que especifica la interfaz adecuada, por ejemplo,
+
 
+
INTERFACE="wlan0"
+
 
+
El resto del archivo lo dejaremos como está. 
+
 
+
Luego, editaremos {{ic|/etc/conf.d/netcfg}}. Añadiremos el perfil de red en la matriz NETWORKS:
+
 
+
NETWORKS=(... wpa_suppl)
+
 
+
Por último, añadiremos los perfiles de redes a {{Pkg|systemd}}:
+
# systemctl enable netcfg@wpa_suppl
+
 
+
En el siguiente reinicio, la interfaz inalámbrica se abrirá y comenzará wpa_supplicant. Si una red conocida está disponible, se establecerá una conexión. Para obtener más información sobre netcfg consulte [[Network Profiles]].
+
 
+
==== Wicd ====
+
Instale {{Pkg|wicd}} desde los repositorios oficiales.
+
 
+
Wicd es muy sencillo: buscar redes, rellenar los datos necesarios y conectar. Puede que tengamos que añadir {{ic|/usr/lib/wicd/autoconnect.py}} a los scripts de init y de gestión de control para reconectar a redes, si la reconexión automática no funciona como debiera.
+
 
+
==Solución de problemas==
+
 
+
{{Accuracy}}
+
 
+
La mayoría de los problemas están relacionados con el proceso de asociación, por lo tanto, debemos mirar atentamente la salida de wpa_supplicant cuando sospechemos que está funcionando mal. Agregaremos {{Ic|-d}} (para depuración de errores) a fin de aumentar el nivel de detalle. Por lo general {{Ic|-dd}} es suficiente. {{Ic |-dddd}} podría ser exagerado.
+
 
+
Cuando estemos inspeccionando el registro, echaremos un vistazo a las entradas como esta:
+
ioctl[''WHATEVER'']: Operation not supported
+
 
+
Si este es el caso, estaremos experimentando un problema con los controladores. Actualizaremos los controladores de WLAN, o cambiaremos el parámetro {{Ic|-D}} para wpa_supplicant.
+
  
Otro problema común es el proporcionado por el mensaje ''No suitable AP found''. wpa_supplicant puede tener problemas para encontrar ESSID ocultos. Por lo general, ajustando {{Ic|scan_ssid<nowiki>=</nowiki>1}} en nuestro bloque {{Ic|network}} resolverá el problema.
+
===Gestionar una configuración personalizada===
 +
{{Nota|El método recomendado para conectarse a la red es usando [[Netctl (Español)|Netctl]] y ciertamente es la mejor opción a largo plazo.}}
 +
Como se mencionó anteriormente, podemos hacer uso de {{ic | wpa_passphrase}} para generar una configuración básica, que podemos aumentar con las redes y las opciones adicionales que deseemos. Esto puede ser necesario para las configuraciones de las redes avanzadas que hacen un amplio uso del protocolo [https://en.wikipedia.org/wiki/Extensible_Authentication_Protocol EAP].
  
===Fallback: recompilar wpa_supplicant===
+
En primer lugar, vamos a utilizar  {{ic|wpa_passphrase}} para crear un archivo de configuración básica:
Obtendremos una copia del código fuente de wpa_supplicant desde la página de inicio o desde [[Arch Build System (Español)|ABS]]. Una vez descargado y extraído, miraremos el archivo '{{ic|.config}}' (si, está oculto). La sintaxis del archivo es como un archivo de configuración del kernel, solo que mucho más pequeño. Miraremos las secciones llamadas {{Ic|CONFIG_DRIVER_''DRIVERNAME''}} y eligiremos sí o no, dependiendo de nuestro controlador. Hay que tener cuidado con las opciones elegidas, porque tendremos que especificar una ruta de acceso adicional al código fuente de los controladores inalámbricos para compilar correctamente los componentes de asociación de bajo nivel. Algunas tarjetas basadas en Atheros pueden necesitar la compilación de wpa_supplicant utilizando las últimas liberaciones {{Ic|madwifi-svn}} disponibles. Si este es el caso, he aquí un ejemplo para ayudarnos a través del proceso de compilación:
+
# wpa_passphrase foobarssid foobarspassword > /etc/wpa_supplicant/foobar.conf
  
'''ejemplo madwifi''': editaremos las líneas siguientes en el archivo de configuración como se indica. Esto supone que hemos compilado madwifi con ABS y que el código fuente de la compilación se almacena en {{ic|/var/abs/local/madwifi/src/}}.
+
{{Sugerencia|Algunas contraseñas o ''«passphrases»'' particularmente complejas pueden requerir información desde un archivo: {{ic|# wpa_passphrase foobarssid < passphrase.txt > /etc/wpa_supplicant/foobar.conf}} }}
#Driver interface for madwifi driver
+
CONFIG_DRIVER_MADWIFI=y
+
#Change include directories to match with the local settings
+
CFLAGS += -I/var/abs/local/madwifi/src/madwifi
+
  
Una vez configurado, podemos proceder con makepkg como de costumbre.
+
A continuación, agregue una opción {{ic|ctrl_interface}} de modo que nos permita controlar el demonio {{ic|wpa_supplicant}}. Es posible autorizar a {{ic|wpa_cli}} para que pueda modificar las configuraciones con la opción {{ic|1=update_config=1}}. También podemos autorizar a  {{ic|wpa_supplicant}} a efectuar un escaneo y selección de los AP (''«Access Point»''  &mdash;Puntos de Acceso&mdash;) presentes con la opción {{ic|1=ap_scan=1}}.
 +
{{hc|/etc/wpa_supplicant/foobar.conf|<nowiki>
 +
  ctrl_interface=DIR=/run/wpa_supplicant GROUP=wheel # permitir a los miembros del grupo 'wheel' controlar el demonio
 +
  update_config=1
 +
  ap_scan=1
  
=== No se puede utilizar wpa_gui para configurar nuevas redes ===
+
  network={
Por defecto, la variable {{Ic|ap_scan}} se establece en {{Ic|0}}, lo que significa que wpa_supplicant delega en el controlador LAN inalámbrico la exploración de los puntos de acceso. Si el controlador no es compatible con el escaneado, wpa_supplicant se cerrará cuando se le pida que busque las redes inalámbricas.
+
    ssid="foobarssid"
En este caso, añadir:
+
    psk=f5d1c49e15e679bebe385c37648d4141bc5c9297796a8a185d7bc5ac62f954e3
ap_scan=1
+
  }
en {{ic|/etc/wpa_supplicant.conf}}
+
</nowiki>}}
  
=== Sin dirección IP del servidor DHCP ===
+
Es posible añadir bloques de red múltiples al archivo de configuración.
Si no podemos obtener una dirección IP desde el servidor DHCP cuando ejecutamos {{ic|dhcpcd wlan0}}, utilizaremos la orden siguiente para detener wpa_supplicant y volver a intentarlo:
+
# wpa_cli terminate
+
# iwconfig wlan0 essid "myEssid" key on #maybe "key on" is optional
+
# sleep 15; dhcpcd wlan0
+
  
=== Error de asociación de netcfg en el arranque ===
+
Para iniciar la conexión de red basta con ejecutar las siguientes órdenes:
Lo siguiente es una experiencia personal. La tarjeta Broadcom BCM4322 WLAN es bastante lenta en asociarse con el punto de acceso en el arranque.
+
# ip link set [nombre de la interfaz] up
En {{ic|/etc/network.d/<su_perfil>}}, probaremos añadiendo la siguiente línea:
+
# wpa_supplicant -B -D nl80211 -i [nombre de la interfaz] -c /etc/wpa_supplicant/foobar.conf
  TIMEOUT=30
+
  # dhcpcd -A [nombre de la interfaz]
Reiniciaremos para ver el resultado.
+
{{Nota|Es preferible utilizar {{ic|nl80211}} respecto al obsoleto controlador {{ic|wext}}. Para obtener un listado de controladores soportados ejecute la orden {{ic|wpa_supplicant}} sin ningún argumento.}}
{{Nota|{{Ic|TIMEOUT<nowiki>=</nowiki>30}} puede ser un poco alto, pero siempre se puede configurar el valor de tiempo de espera a uno que se ajuste a nuestras necesidades.}}
+
Para conexiones de red de complejidad creciente examine los ejemplos proporcionados en el archivo de configuración predeterminado ubicado en {{ic|/etc/wpa_supplicant/wpa_supplicant.conf}}.
  
=== La conexión inalámbrica cae frecuentemente ===
+
==Véase también==
Si la conexión cae con frecuencia y dmesg muestra este mensaje:
+
*[[Wireless Setup (Español)]]
wlan0: deauthenticating from XX:XX:XX:XX:XX:XX by local choice (reason=3)
+
*[[netctl (Español)]]
una solución puede ser tratar de desactivar la opción «group key update interval» en el router.
+
*[http://wireless.kernel.org/en/users/Documentation/wpa_supplicant Kernel.org wpa_supplicant documentation]

Revision as of 16:55, 14 July 2013

wpa_supplicant es una multiplataforma de WPA Supplicant con soporte para WPA y WPA2 (IEEE 802.11i / RSN —Robust Secure Network—). Está adaptado tanto para los ordenadores de sobremesa/portátiles como para sistemas integrados. wpa_supplicant es el componente IEEE 802.1X/WPA utilizado por las estaciones cliente. Implementa las negociaciones entre la clave y un WPA Authenticator, y contola el roaming y la asociación/autenticación IEEE 802.11 del controlador wland.

Instalación

Instale el paquete wpa_supplicant desde los repositorios oficiales.

También tiene la posibilidad de instalar el paquete wpa_supplicant_gui que proporciona wpa_gui; es un fronted gráfico para wpa_supplicant que usa las herramientas qt4.

Configuración

El paquete wpa_supplicant proporciona un archivo de configuración de ejemplo situado en /etc/wpa_supplicant/wpa_supplicant.conf, que documenta, de modo detallado, todas las opciones disponibles y relativas a la configuración.

El contenido mínimo del archivo de configuración requiere un bloque de red, por ejemplo:

/etc/wpa_supplicant/foobar.conf
network={
    ssid="..."
  }

Lo anterior puede ser fácilmente generado usando la herramienta wpa_passphrase. Por ejemplo:

$ wpa_passphrase foobarssid foobarspassword
network={
   ssid="foobarssid"
   #psk="foobarspassword"
   psk=f5d1c49e15e679bebe385c37648d4141bc5c9297796a8a185d7bc5ac62f954e3
}

Ahora también es posible combinar la utilización de wpa_supplicant y wpa_passphrase para asociarse a, prácticamente, todas las redes WPA2 (Personal):

# wpa_supplicant -B -i [nombre de la interfaz] -c <(wpa_passphrase [essid] [passphrase])

No queda más que conectarse ajustando una dirección IP estática o DHCP. Por ejemplo:

# dhcpcd -A [nombre de la interfaz]

Gestionar una configuración personalizada

Nota: El método recomendado para conectarse a la red es usando Netctl y ciertamente es la mejor opción a largo plazo.

Como se mencionó anteriormente, podemos hacer uso de wpa_passphrase para generar una configuración básica, que podemos aumentar con las redes y las opciones adicionales que deseemos. Esto puede ser necesario para las configuraciones de las redes avanzadas que hacen un amplio uso del protocolo EAP.

En primer lugar, vamos a utilizar wpa_passphrase para crear un archivo de configuración básica:

# wpa_passphrase foobarssid foobarspassword > /etc/wpa_supplicant/foobar.conf
Sugerencia: Algunas contraseñas o «passphrases» particularmente complejas pueden requerir información desde un archivo: # wpa_passphrase foobarssid < passphrase.txt > /etc/wpa_supplicant/foobar.conf

A continuación, agregue una opción ctrl_interface de modo que nos permita controlar el demonio wpa_supplicant. Es posible autorizar a wpa_cli para que pueda modificar las configuraciones con la opción update_config=1. También podemos autorizar a wpa_supplicant a efectuar un escaneo y selección de los AP («Access Point» —Puntos de Acceso—) presentes con la opción ap_scan=1.

/etc/wpa_supplicant/foobar.conf
  ctrl_interface=DIR=/run/wpa_supplicant GROUP=wheel # permitir a los miembros del grupo 'wheel' controlar el demonio
  update_config=1
  ap_scan=1

  network={
     ssid="foobarssid"
     psk=f5d1c49e15e679bebe385c37648d4141bc5c9297796a8a185d7bc5ac62f954e3
  }

Es posible añadir bloques de red múltiples al archivo de configuración.

Para iniciar la conexión de red basta con ejecutar las siguientes órdenes:

# ip link set [nombre de la interfaz] up
# wpa_supplicant -B -D nl80211 -i [nombre de la interfaz] -c /etc/wpa_supplicant/foobar.conf
# dhcpcd -A [nombre de la interfaz]
Nota: Es preferible utilizar nl80211 respecto al obsoleto controlador wext. Para obtener un listado de controladores soportados ejecute la orden wpa_supplicant sin ningún argumento.

Para conexiones de red de complejidad creciente examine los ejemplos proporcionados en el archivo de configuración predeterminado ubicado en /etc/wpa_supplicant/wpa_supplicant.conf.

Véase también