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

From ArchWiki
Jump to: navigation, search
(Configuración y conexión)
(Actualización)
(14 intermediate revisions by the same user not shown)
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)]]
+
{{Related articles start (Español)}}
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.
+
{{Related|Network Configuration (Español)}}
 +
{{Related|Wireless Setup (Español)}}
 +
{{Related articles end}}
  
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.
+
[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.  
 
+
==Consideraciones==
+
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 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.
+
  
 +
''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==
 
==Instalación==
WPA supplicant puede ser [[Pacman (Español)|instalado]] con el paquete {{Pkg|wpa_supplicant}}, disponible en los [[Official Repositories (Español)|repositorios oficiales]].
 
 
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
+
Instale el paquete {{Pkg|wpa_supplicant}} desde los [[Official Repositories (Español)|repositorios oficiales]].
*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.
+
También tiene la posibilidad de instalar el paquete {{Pkg|wpa_supplicant_gui}} que proporciona ''wpa_gui''; es un fronted gráfico para ''wpa_supplicant'' que usa las herramientas {{pkg|qt4}}.
  
===Opcional: Instalar la versión con la interfaz gráfica del usuario===
+
==Configuración==
  
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.
+
El paquete {{pkg|wpa_supplicant}} proporciona un archivo de configuración de referencia situado en {{ic|/etc/wpa_supplicant/wpa_supplicant.conf}}, que documenta, de modo detallado, todas las opciones disponibles y relativas a la configuración.
  
==Configuración y conexión==
+
El contenido mínimo del archivo de configuración requiere un bloque de red. Por ejemplo:
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:
+
{{hc|/etc/wpa_supplicant/foobar.conf|2=
* La primera parte comprende la configuración global. Consiste en una serie de líneas ''key-value''.
+
network={
* La segunda parte se compone de ''bloques de red'', uno para cada «perfil» que deseemos configurar.
+
    ssid="..."
 +
}
 +
}}
  
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.
+
Lo anterior puede ser fácilmente generado usando la herramienta ''wpa_passphrase''. Por ejemplo:
  
Hay varias maneras de administrar la configuración de wpa_supplicant. Podemos elegir entre uno de los siguientes métodos.
 
  
===Manual===
+
{{hc|$ wpa_passphrase ''nombre-de-la-red'' ''frase-contraseña''|2=
====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={
 
network={
        ssid="identificador de la red inalámbrica_ssid"
+
    ssid="''nombre-de-la-red''"
        psk="frase_de_acceso_secreta"
+
    #psk="''frase-contraseña''"
        # Parámetros adicionales (proto, key_mgmt, etc.)
+
    psk=f5d1c49e15e679bebe385c37648d4141bc5c9297796a8a185d7bc5ac62f954e3
}</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.
+
{{Sugerencia|Algunas frases de contraseña inusualmente complejas pueden requerir la entrada desde un archivo:
 +
# wpa_passphrase ''nombre-de-la-red'' < ''frase-contraseña.txt'' > /etc/wpa_supplicant/wpa_supplicant-''interfaz''.conf
 +
}}
  
{{Advertencia|No se olvide de las comillas dobles alrededor de SSID y PSK.}}
+
Una vez que se tiene un archivo de configuración, se puede ejecutar el demonio ''wpa_supplicant'' y conectarse a una red inalámbrica:
  
'''Frase de contraseña y PSK'''
+
# wpa_supplicant -B -i ''interfaz'' -c ''archivo_de_configuración''
  
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.
+
Es posible que tenga que especificar un controlador para que funcione. Para obtener una lista completa de los controladores soportados vea la salida de {{ic|wpa_supplicant -h}}, de modo que, por ejemplo, {{ic|nl80211}} será preferido al obsoleto controlador {{ic|wext}}. Utilice el parámetro {{ic|-D}} para especificar el controlador:
  
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]"}}
+
# wpa_supplicant -B -i ''interfaz'' -c ''archivo_de_configuración'' -D ''controlador''
  
*Un ejercicio de ejemplo:
+
{{Sugerencia|Tanto ''wpa_supplicant'' como ''wpa_passphrase'' se pueden combinar para asociarse con casi todas las redes WPA2 (Personal):
# wpa_passphrase "mywireless_ssid" "secretpassphrase"
+
  # wpa_supplicant -B -i ''interfaz'' -c <(wpa_passphrase ''nombre_de_la_red'' ''frase_contraseña'')
 
+
Esto debería generar el bloque de red siguiente:
+
network={
+
        ssid="mywireless_ssid"
+
        #psk="secretpassphrase"
+
        psk=7b271c9a7c8a6ac07d12403a1f0792d7d92b5957ff8dfd56481ced43ec6a6515
+
}
+
 
+
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).
+
 
+
{{Nota|La PSK hexadecimal no debe estar entre comillas.}}
+
 
+
* 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.
+
Todo lo que queda es simplemente conectarse usando una dirección [[Network Configuration#Static IP Address|IP estática]] o [[Network Configuration#Dynamic IP Address|DHCP]]. Por ejemplo:
  
==== Conexión ====
+
# dhcpcd ''interfaz''
  
Ahora podemos intentar conectarnos manualmente.
+
== Utilizar wpa_cli ==
  
En primer lugar, abrimos la interfaz Wi-Fi. Para los fines de este ejemplo, se utilizará la interfaz ''wlan0''.
+
''wpa_supplicant'' puede ser controlado manualmente durante su ejecución mediante la utilidad ''wpa_cli''. Con el fin de utilizar ''wpa_cli'', el demonio ''wpa_supplicant'' debe estar configurado para crear una «interfaz de control» (socket). Esto se hace desde el archivo de configuración con la variable {{ic|ctrl_interface}}. El siguiente ejemplo creará el socket en {{ic|/run/wpa_supplicant/}} y permitirá que los miembros del grupo {{ic|adm}} accedan a él:
# 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.
+
  ctrl_interface=DIR=/run/wpa_supplicant GROUP=adm
  
Ejecutaremos lo siguiente como root:
+
Es posible activar ''wpa_supplicant'' para modificar el archivo de configuración cuando se recibe una orden de ''wpa_cli''. Esto es útil para agregar manualmente nuevas redes en el archivo de configuración de itinerancia sin la necesidad de reiniciar el demonio ''wpa_supplicant''. Basta con añadir lo siguiente al archivo de configuración:
# 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
 
  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.
+
Después de iniciado el demonio ''wpa_supplicant'', puede arrancar ''wpa_cli''. Intentará encontrar el archivo socket, si falla utilice la opción {{ic|-p}}. Se puede especificar la interfaz que se configurará con la opción {{ic|-i}}, de lo contrario utilizará la primera interfaz inalámbrica que encuentre gestionada por ''wpa_supplicant''.  Cuando se invoca ''wpa_cli'', se obtendrá un prompt ({{ic|>}}) interactivo. El prompt tiene la función autocompletar del tabulador y descripciones de las órdenes completadas.
 
+
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 pre-compartida (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í algún método 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 targer 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"
+
=== Añadir nuevas conexiones de red ===
  
El resto del archivo lo dejaremos como está.
+
Inicie un escaneo de la red. Cuando la exploración haya terminado se mostrará una notificación:
  
Luego, editaremos {{ic|/etc/conf.d/netcfg}}. Añadiremos el perfil de red en la matriz NETWORKS:
+
> scan
  
NETWORKS=(... wpa_suppl)
+
Muestra del resultado del escaneo:
  
Por último, añadiremos los perfiles de redes a {{Pkg|systemd}}:
+
> scan_results
  # systemctl enable netcfg@wpa_suppl
+
bssid / frequency / signal level / flags / ssid
 +
00:00:00:00:00:00 2462 -49 [WPA2-PSK-CCMP][ESS] MIRED
 +
  11:11:11:11:11:11 2437 -64 [WPA2-PSK-CCMP][ESS] OTRARED
  
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]].
+
Para asociarse con ''MIRED'', dígale a ''wpa_supplicant'' que se conecte a ella. Cada red está indexada numéricamente, por lo que la primera red tendrá el índice cero. La [[wikipedia:Pre-shared_key|PSK]] se puede proporcionar sin comillas como una alternativa a la contraseña proporcionada en este ejemplo:
  
==== Wicd ====
+
> add_network
Instale {{Pkg|wicd}} desde los repositorios oficiales.
+
0
 +
> set_network 0 ssid "''MIRED''"
 +
> set_network 0 psk "''contraseña''"
 +
> enable_network 0
 +
<2>CTRL-EVENT-CONNECTED - Connection to 00:00:00:00:00:00 completed (reauth) [id=0 id_str=]
  
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.
+
Escriba los cambios en el archivo de configuración:
  
==Solución de problemas==
+
> save_config
 +
OK
  
{{Accuracy}}
+
=== Action script ===
  
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.
+
{{Expansion|1=To be re-added from [https://wiki.archlinux.org/index.php?title=WPA_supplicant&oldid=256897#Action_script this old revision] with a meanigful example.}}
  
Cuando estemos inspeccionando el registro, echaremos un vistazo a las entradas como esta:
+
=== Activar con systemd ===
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.
+
Es posible combinar la configuración activando ''wpa_supplicant'' y ''dhcpcd'' para una particular interfaz de red (véase [[systemd#Using units]] para más detalles):
  
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.
+
# systemctl enable wpa_supplicant@''nombre de la interfaz de red''
 +
# systemctl enable dhcpcd@''nombre de la interfaz de red''
  
===Fallback: recompilar wpa_supplicant===
+
La sección {{ic|1=[Install]}} de la versión actual del servicio systemd es incorrecta ([http://w1.fi/bugz/show_bug.cgi?id=477 bug report]). Si  el nombre de su interfaz  no es (wlan0), será necesario copiar el archivo de servicios en {{ic|/etc/systemd/system}} y sustituir la sección {{ic|1=[Install]}} con
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:
+
  
'''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/}}.
+
  [Install]
  #Driver interface for madwifi driver
+
  WantedBy=multi-user.target
  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.
+
Véase [[systemd#Editing provided unit files]] para obtener ayuda con la edición.
  
=== No se puede utilizar wpa_gui para configurar nuevas redes ===
+
{{Nota|Si utiliza{{ic|dhcpcd@.service}}, es posible que también desee reemplazar la etiqueta {{ic|-w}} por {{ic|-b}} para que no espere hasta que se le asigne una dirección IP, antes de pasar a funcionar en segundo plano.}}
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.
+
En este caso, añadir:
+
ap_scan=1
+
en {{ic|/etc/wpa_supplicant.conf}}
+
  
=== Sin dirección IP del servidor DHCP ===
+
{{Sugerencia|{{Pkg|dhcpcd}} contiene un hook (activado por defecto) para poner en marcha de forma automática ''wpa_supplicant'' ante la presencia de interfaces inalámbricas. Se inicia solo si existe un archivo de configuración en {{ic|/etc/wpa_supplicant.conf}} y sin un proceso ''wpa_supplicant'' sondeando dicha interfaz. No es necesario utilizar {{ic|wpa_supplicant@''nombre de la interfaz de red''}} en absoluto y basta con activar {{ic|dhcpcd@''nombre de la interfaz de red''}}.}}
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 ===
+
==Véase también ==
Lo siguiente es una experiencia personal. La tarjeta Broadcom BCM4322 WLAN es bastante lenta en asociarse con el punto de acceso en el arranque.
+
En {{ic|/etc/network.d/<su_perfil>}}, probaremos añadiendo la siguiente línea:
+
TIMEOUT=30
+
Reiniciaremos para ver el resultado.
+
{{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.}}
+
  
=== La conexión inalámbrica cae frecuentemente ===
+
* [http://wireless.kernel.org/en/users/Documentation/wpa_supplicant Kernel.org wpa_supplicant documentation]
Si la conexión cae con frecuencia y dmesg muestra este mensaje:
+
wlan0: deauthenticating from XX:XX:XX:XX:XX:XX by local choice (reason=3)
+
una solución puede ser tratar de desactivar la opción «group key update interval» en el router.
+

Revision as of 10:02, 28 November 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 referencia 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 nombre-de-la-red frase-contraseña
network={
    ssid="nombre-de-la-red"
    #psk="frase-contraseña"
    psk=f5d1c49e15e679bebe385c37648d4141bc5c9297796a8a185d7bc5ac62f954e3
}
Sugerencia: Algunas frases de contraseña inusualmente complejas pueden requerir la entrada desde un archivo:
# wpa_passphrase nombre-de-la-red < frase-contraseña.txt > /etc/wpa_supplicant/wpa_supplicant-interfaz.conf

Una vez que se tiene un archivo de configuración, se puede ejecutar el demonio wpa_supplicant y conectarse a una red inalámbrica:

# wpa_supplicant -B -i interfaz -c archivo_de_configuración

Es posible que tenga que especificar un controlador para que funcione. Para obtener una lista completa de los controladores soportados vea la salida de wpa_supplicant -h, de modo que, por ejemplo, nl80211 será preferido al obsoleto controlador wext. Utilice el parámetro -D para especificar el controlador:

# wpa_supplicant -B -i interfaz -c archivo_de_configuración -D controlador
Sugerencia: Tanto wpa_supplicant como wpa_passphrase se pueden combinar para asociarse con casi todas las redes WPA2 (Personal):
# wpa_supplicant -B -i interfaz -c <(wpa_passphrase nombre_de_la_red frase_contraseña)

Todo lo que queda es simplemente conectarse usando una dirección IP estática o DHCP. Por ejemplo:

# dhcpcd interfaz

Utilizar wpa_cli

wpa_supplicant puede ser controlado manualmente durante su ejecución mediante la utilidad wpa_cli. Con el fin de utilizar wpa_cli, el demonio wpa_supplicant debe estar configurado para crear una «interfaz de control» (socket). Esto se hace desde el archivo de configuración con la variable ctrl_interface. El siguiente ejemplo creará el socket en /run/wpa_supplicant/ y permitirá que los miembros del grupo adm accedan a él:

ctrl_interface=DIR=/run/wpa_supplicant GROUP=adm

Es posible activar wpa_supplicant para modificar el archivo de configuración cuando se recibe una orden de wpa_cli. Esto es útil para agregar manualmente nuevas redes en el archivo de configuración de itinerancia sin la necesidad de reiniciar el demonio wpa_supplicant. Basta con añadir lo siguiente al archivo de configuración:

update_config=1

Después de iniciado el demonio wpa_supplicant, puede arrancar wpa_cli. Intentará encontrar el archivo socket, si falla utilice la opción -p. Se puede especificar la interfaz que se configurará con la opción -i, de lo contrario utilizará la primera interfaz inalámbrica que encuentre gestionada por wpa_supplicant. Cuando se invoca wpa_cli, se obtendrá un prompt (>) interactivo. El prompt tiene la función autocompletar del tabulador y descripciones de las órdenes completadas.

Añadir nuevas conexiones de red

Inicie un escaneo de la red. Cuando la exploración haya terminado se mostrará una notificación:

> scan

Muestra del resultado del escaneo:

> scan_results
bssid / frequency / signal level / flags / ssid
00:00:00:00:00:00 2462 -49 [WPA2-PSK-CCMP][ESS] MIRED
11:11:11:11:11:11 2437 -64 [WPA2-PSK-CCMP][ESS] OTRARED

Para asociarse con MIRED, dígale a wpa_supplicant que se conecte a ella. Cada red está indexada numéricamente, por lo que la primera red tendrá el índice cero. La PSK se puede proporcionar sin comillas como una alternativa a la contraseña proporcionada en este ejemplo:

> add_network
0
> set_network 0 ssid "MIRED"
> set_network 0 psk "contraseña"
> enable_network 0
<2>CTRL-EVENT-CONNECTED - Connection to 00:00:00:00:00:00 completed (reauth) [id=0 id_str=]

Escriba los cambios en el archivo de configuración:

> save_config
OK

Action script

Tango-view-fullscreen.pngThis article or section needs expansion.Tango-view-fullscreen.png

Reason: To be re-added from this old revision with a meanigful example. (Discuss in Talk:WPA supplicant (Español)#)

Activar con systemd

Es posible combinar la configuración activando wpa_supplicant y dhcpcd para una particular interfaz de red (véase systemd#Using units para más detalles):

# systemctl enable wpa_supplicant@nombre de la interfaz de red
# systemctl enable dhcpcd@nombre de la interfaz de red

La sección [Install] de la versión actual del servicio systemd es incorrecta (bug report). Si el nombre de su interfaz no es (wlan0), será necesario copiar el archivo de servicios en /etc/systemd/system y sustituir la sección [Install] con

[Install]
WantedBy=multi-user.target

Véase systemd#Editing provided unit files para obtener ayuda con la edición.

Nota: Si utilizadhcpcd@.service, es posible que también desee reemplazar la etiqueta -w por -b para que no espere hasta que se le asigne una dirección IP, antes de pasar a funcionar en segundo plano.
Sugerencia: dhcpcd contiene un hook (activado por defecto) para poner en marcha de forma automática wpa_supplicant ante la presencia de interfaces inalámbricas. Se inicia solo si existe un archivo de configuración en /etc/wpa_supplicant.conf y sin un proceso wpa_supplicant sondeando dicha interfaz. No es necesario utilizar wpa_supplicant@nombre de la interfaz de red en absoluto y basta con activar dhcpcd@nombre de la interfaz de red.

Véase también