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

From ArchWiki
Jump to: navigation, search
(Redireccionar)
 
(15 intermediate revisions by 8 users not shown)
Line 1: Line 1:
[[Category:Communication and network (English)]]
+
#REDIRECT [[WPA supplicant (Español)]]
[[Category:Networking (English)]]
 
[[Category:HOWTOs (English)]]
 
{{i18n|Template:WPA Supplicant}}
 
 
 
Una red protegida por una llave WEP estatica puede ser facilmente comprometida por un hacker motivado. WPA corrige el problema de la llave estática, by changing it at a packet transmitted/recieved frequency, o después que haya pasado determinado tiempo. Este proceso es realizado por un demonio que esta altamente ligado al hardware wireless.
 
 
 
Drivers inferiores (particularmente aquellos usados mediante ndiswrapper) pueden causar mucha frustración cuando son usados con [http://hostap.epitest.fi/wpa_supplicant/ WPA supplicant], por lo que dentro de lo posible hay que usar hardware con un soporte adecuado y drivers de alta calidad.
 
 
 
==Consideraciones==
 
Este articulo asume que estas familiarizado con tu hardware, y eras capaz de encontrar el camino a travez de archivos de configuración y configurando el sistema. Es también crítico que hayas "leído y entendido" el artículo de [[Wireless Setup]], ya que es la base de todo lo que se explicará aqui.
 
 
 
La versión anterior de este artículo se expandió en el uso de [[Arch Build System]] y los Perfiles de Red mencionados en [[Wireless Setup]]. Asumo que un mejor entendimiento del sistema siempre ayuda, pero tiende a desviar los objetivos, y finalmente afecta el ámbito del documento.
 
 
 
Finalmente, este documento no es un prerequisito si tu hardware funciona out of the box y es manejado por un demonio como networkmanager o similar. Si prefieres conectarte a la red utilizando una herramienta gráfica no deberias estar leyendo esto.
 
 
 
==Instalación==
 
Instala el demonio:
 
# pacman -S wpa_supplicant
 
 
 
Este paquete a sido construido para soportar un amplio rango de hardware wireless. Para tu información, aqui presento una lista, que puede ser obtenida ejecutando '{{Codeline|wpa_supplicant}}':
 
# wpa_supplicant
 
...
 
 
Driver list:
 
 
*HostAP
 
*Prism54
 
*Madwifi
 
*NDISWrapper
 
*AMTEL
 
*IPW (both 2100 and 2200 drivers)
 
*WEXT (Generic Linux wireless extensions)
 
*Wired ethernet
 
 
 
La mayoría del hardware wireless es soportado por wpa_supplicant por defecto. Aún si el fabricante del chipset no esta listado (que es el caso mas probable), puedes hacer uso de las Extensiones Wireless Genericas para conectarte a una red segura con WPA. Basado en mi experiencia particular, un 75% del hardware es soportado por WEXT, un 20% es compatible recompilando wpa_supplicant/drivers de hardware; desafortunadamente, el 5% restante es definitivamente incompatible. Hablaré de las incompatibilidades mas adelante, sin embargo si estas completamente desesperado, ABS siempre es una opción. WPA Supplicant está disponible en: /var/abs/core/support/wpa_supplicant.
 
 
 
==Configurando y conectandose==
 
/etc/wpa_supplicant.conf contiene toda las opciones de configuración para wpa_supplicant. Sus contenidos son bastante simples. aunque el archivo de ejemplo provisto es horriblemente obtuso. Para propositos de simplificación, logueate como root, y renombra el wpa_supplicant.conf por defecto. No es necesario en este punto.
 
# mv /etc/wpa_supplicant.conf /etc/wpa_supplicant.conf.original
 
 
 
===Método dinamico: 'wpa_gui', 'wpa_cli'===
 
Es posible configurar wpa_supplicant justo lo suficiente para que puedas configurar las conexiones de red con wpa_gui o wpa_cli (mira en "Gestión"), en vez de definir tus bloques de red en wpa_supplicant.conf. Necesitaras un archivo de configuración con las lineas:
 
ctrl_interface=/var/run/wpa_supplicant
 
ctrl_interface_group=network
 
update_config=1
 
 
 
Esta configuración permitira a los usuarios en el grupo "network" controlar wpa_supplicant mediante las interfases wpa_gui o wpa_cli, la variable "update_config=1" permite a estos programas (wpa_cli, wpa_gui) modificar wpa_supplicant.conf para guardar nuevas redes o modificaciónes de redes existentes. Ahora debes iniciar wpa_supplicant:
 
# wpa_supplicant -Dwext -iwlan0 -c/etc/wpa_supplicant.conf -B
 
 
 
donde la opción -D especifica el driver wireless (que casi siempre es wext), -i la interfase (reemplaza wlan0 con el nombre de tu interfase wireless) y -c el archivo de configuración. -B le dice a wpa_supplicant que se ejecute como demonio. Deberas ejecutar wpa_supplicant como root (o con sudo), pero cualquier usuario en el grupo network puede ejecutar wpa_cli o wpa_gui.
 
 
 
Entonces ya deberias poder ejecutar wpa_cli o wpa_gui y agregar algunes redes para conectarte. Si prefieres ejecutar el archivo de configuración manualmente sigue leyendo. De hecho, parte de la siguiente información es algo importante aún si no defines tus redes en wpa_supplicant.conf, asi que deberias leerla de todas formas.
 
 
 
===Método Clásico: wpa_supplicant.conf===
 
El ssid y el password para tu red wireless encriptada debe ser codificado en una cadena hexadecimal. Lograr esto es realmente simple utilizando la utilidad wpa_passphrase, que forma parte del paquete de wpa_supplicant. Usa la sintaxis <code>wpa_passphrase [ssid] "[password]"</code>[ssid] "[passphrase]"</code>
 
 
 
*Un ejemplo:
 
# wpa_passphrase mi_wireless "password_secreto"
 
 
 
this should generate something like the below:
 
network={
 
        ssid="mi_wireless"
 
        #psk="password_secreto"
 
psk=5a5a4dabde69d62436b31894af8b0dbf4e40a5e377feb36aab842beb7f7ed5a3
 
}
 
 
 
Esta es la configuración básica requerida para hacer funcionar wpa. La primera linea es la apertura de la declaración de la red, la segunda el ssid del la estación a la que quieres conectarte, la 3ra linea es el password, y la cuarta la llave hexadecimal requerida para conectarse.
 
 
 
*Utilizando wpa_passphrase, especifica tu ssid y password, y redirecciona la salida a /etc/wpa_supplicant.conf:
 
# wpa_passphrase mi_wireless "password_secreto" > /etc/wpa_supplicant.conf
 
 
 
cambiando los detalles donde aplique con tu información especifica. Esto entonces creará un /etc/wpa_supplicant.conf básico de la salida del comando wpa_passphrase.
 
 
 
Por ejemplo si usas el protocolo WPA2-personal deberas agregar unas pocas lineas en la sección network:
 
network={
 
        ssid="mi_wireless"
 
        proto=RSN
 
        key_mgmt=WPA-PSK
 
        pairwise=CCMP TKIP
 
        group=CCMP TKIP
 
        psk=5a5a4dabde69d62436b31894af8b0dbf4e40a5e377feb36aab842beb7f7ed5a3
 
}
 
 
 
{{Note | La información de la red se almacenará en formato de texto, asi que deberias cambiar los permisos del archivo /etc/wpa_supplicant.conf (ejemplo: <tt>chmod 0600 /etc/wpa_supplicant.conf</tt> para hacerlo solo leible por root), dependiendo de que tan consciente seas sobre seguridad.}}
 
 
 
Agregar una red adicional puede hacerse de la siguiente manera:
 
# wpa_passphrase ssid_adicional "password_adicional" >> /etc/wpa_supplicant.conf
 
El '>>' redireccionara y agregara la salida a /etc/wpa_supplicant.conf sin sobreescribir.
 
 
 
Hay un gran número de opciones disponibles para user que puedes investigar mirando al archivo de configuración original. En la mayoria de los casos se puede dejar las opciones por defecto y no especificar nada mas en la sección por el momento.
 
 
 
Finalmente, agrega esta linea adicional al principio de /etc/wpa_supplicant.conf con un editor de tu elección:
 
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel
 
 
 
Si necesitas contectarte a varias redes solo define un bloque de red en el mismo archivo. Cambia la prioridad a voluntad, recordando que las prioridades con numeros mayores son probadas primero.
 
 
 
Ahora puedes probar conectarte manualmente.
 
 
 
Primero levanta la interfase wifi. Para el proposito de este ejemplo usaremos la interfase <code>wlan0</code>.
 
#  ifconfig wlan0 up
 
 
 
A continuación asocia la interfase con el ssid del punto de acceso:
 
# iwconfig wlan0 essid [ssid]
 
 
 
Una vez q la asociación es exitosa (después de unos 10 segundos en promedio) necesitas ejecutar wpa_supplicant para completar la asociación encriptada. Típicamente podras usar el driver WEXT ('''W'''ireless '''EXT'''ensions) para wpa_supplicant, si no, deberias chequear como hacerlo con tu dispositivo en internet.
 
 
 
Lanza el siguiente comando como root:
 
# wpa_supplicant -B -Dwext -i wlan0 -c /etc/wpa_supplicant.conf
 
 
 
Esta sintaxis dice a wpa_supplicant que use la configuración de hardware por defecto (WEXT - Linux '''W'''ireless '''EXT'''ensions) y que se asocie con el ssid especificado en /etc/wpa_supplicant.conf. Esta asociación también debe ser realizada a través de la interfase wireless wlan0 y el proceso debe moverse a segundo plano (-B). Para salida detallada agrega la opción '''-d''' o '''-dd''' (Debug) para mostrar mas información en la consola. Puedes encontrar ejemplos adicionales aqui [http://www.examplenow.com/wpa_supplicant wpa_supplicant].
 
 
 
In la salida de la consola deberia haber una linea que diga ''''Associated:'''' seguida por una dirección MAC. Lo único que se necesita ahora es una dirección IP.
 
Como root ejecuta:
 
# dhcpcd wlan0
 
{{Note | *No* solicites una IP inmediatamente! Debes esperar para asegurar una asociación apropiada. Si usas un script puedes usar "sleep 10s" para esperar por 10 segundos.}}
 
 
 
Verifica que la interfase haya recibido una dirección IP usando ifconfig:
 
# ifconfig wlan0
 
 
wlan0    Link encap:Ethernet  HWaddr 00:1C:BF:66:4E:E0
 
          inet addr:192.168.0.62  Bcast:192.168.0.255  Mask:255.255.255.0
 
          inet6 addr: fe80::21c:bfff:fe66:4ee0/64 Scope:Link
 
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
 
          RX packets:140387 errors:0 dropped:0 overruns:0 frame:0
 
          TX packets:96902 errors:0 dropped:0 overruns:0 carrier:0
 
          collisions:0 txqueuelen:1000
 
          RX bytes:125513183 (119.6 Mb)  TX bytes:12299192 (11.7 Mb)
 
 
Si la salida es similar a la de arriba, estas conectado. Si es asi puedes investigar como usar los scripts netcfg para configurar esto de una forma mas permanente y tenerlo funcionando cuando arrancas la computadora.
 
 
 
Dependiendo dela enfoque que hayas elegido para configurar el adaptador wireless, puedes decidir si usar una herramienta grafica --pero no invasiva-- como [[Wicd]] o elegir los perfiles de red provistos por netcfg.
 
 
 
Configuraciones mas sofisticadas como autentificación EAPOL o RADIUS estan muy bien detalladas en la pagina de manual de wpa_supplicant.conf. Estas configuraciones estan fuera del ámbito de este documento.
 
 
 
===Método alternativo: Recompilar wpa_supplicant===
 
Obtén una copia del código fuente de wpa_supplicant desde su sitio web o desde ABS. Una vez descargado y desempaquetado, mira el archivo '.config' (si, esta oculto). El archivo luce como una configuración del kernel, solo que mucho mas pequeño. Busca las secciones llamadas CONFIG_DRIVER_''DRIVERNAME'' y elige si o no (yes o no), dependiendo de tu driver. Cuidado con las opciones que eliges, porque necesitaras especificar una ruta adicional a los fuentes de tu driver a fin de compilar correctamente el componente de asociación de bajo nivel. Algunas tarjetas Atheros raras podran necesitar una conpilacion contra el último release de madwifi-svn disponible. Si este es el caso, aqui hay un ejemplo para iluminarte a través del proceso de compilación:
 
 
 
'''ejemplo de madwifi''': edita las siguientes lineas en el archivo de configuración para lucir como estas. Esto asume que compilastes madwifi con ABS y que el codigo fuente esta almacenado en /var/abs/local/madwifi/src.
 
#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 puedes proceder con makepkg como es usual.
 
 
 
==Gestión==
 
 
 
===netcfg===
 
La manera mas simple de arrancar wpa_supplicant al bootear es usando netcfg. No es necesario especificar el SSID de la red a la que quieres conectarte (típicamente no puedes hacerlo de todas formas ya que la red variará segun el lugar), wpa_supplicant se conectará automaticamente a una red disponible de las especificadas en {{filename|/etc/wpa_supplicant.conf}}.
 
 
 
Entonces, instala netcfg si no esta instalado aún y crea un perfil de red copiando el archivo de ejemplo:
 
 
 
# cp /etc/network.d/examples/wireless-wpa-config /etc/network.d/wpa_suppl
 
 
 
Edita el nuevo archivo para asegurar que utiliza la interface adecuada, ejemplo:
 
 
 
INTERFACE="wlan0"
 
 
 
El resto del archivo debe dejarse tal cual está. Luego edita {{filenam|/etc/rc.conf}}. Agrega el perfil de red al array NETWORKS:
 
 
 
NETWORKS=(wpa_suppl)
 
 
 
y agrega el demonio net-profiles a la lista de demonios para iniciar al bootear:
 
 
 
DAEMONS=(... @net-profiles)
 
 
 
Eso es todo. En el proximo booteo la interfase wireless se levantará y wpa_supplicant sera iniciado. Si una red conocida esta disponible, se establecera la conexión. Para mas información sobre netcfg mira [[Network Profiles]].
 
 
 
===Solo gestión wireless===
 
 
 
Como ya fué mencionado, hay dos interfases para wpa_supplicant escrita por los mismo desarrolladores de wpa_supplicant, "wpa_cli" y "wpa_gui". wpa_cli es, como esperarás. una interfase de linea de comando, mientras que wpa_gui es una interfase basada en Qt. wpa_cli es incluida en el paquete wpa_supplicant, wpa_supplicant_gui es el otro paquete. Los detalles de como configurar wpa_supplicant para trabajar con cualquiera de estas dos interfases estan en la sección [[#Método dinamico: 'wpa_gui', 'wpa_cli']].
 
 
 
Cuando wpa_cli es invocado sin argumentos presentará un entorno de comandos, prueba tipeando help para abtener ayuda.
 
 
 
wpa_gui es realmente sensillo, si presionas "scan" te presentara una lista de SSIDs detectados, puedes hacer doble click para agregar uno, se te presentara un dialogo que te permitirá ingresar la información que necesites para asociarte con tu red, lo mas probable es que solo tengas que ingresar tu PSK si usas wpa/wpa2 o tu "key0" para una conexión WEP. El protocolo para WPA/WPA2/WEP/Desencriptada deberia ser autodetectado. Cosas como 802.1x requeriran un poco mas de configuración.
 
 
 
Después de que agregues una red podras modificarla si por ejemplo modificas el PSK, cambia al tab "Manage Networks" y selecciona la red que quieras Editar/Remover. También puedes agregar una red sin escanear, lo que necesitaras hacer si no transmites tu SSID.
 
 
 
'''Nota:''' wpa_cli y wpa_gui no te daran una dirección ip o configuraran una tabla de ruteo apropiada, '''solo''' te asociaran con un punto de acceso wireless. Los scripts wpa_auto de aur pueden usarse para ejecutar wpa_supplicant al bootear y automaticamente ejecutar dhcp para configurar la conexión despues de asiciarse a una red wireless, o tal vez escribas tu propio script. Hay también disponibles utilidades de gestión de red/wireless de mayor nivel, que son capaces de manejar tanto conexiones wireless como cableadas.
 
 
 
===Wicd===
 
Instala [[Wicd]]:
 
# pacman -S wicd
 
 
 
Wicd es muy simple; scanea redes, ingresa la informacion requerida y conecta. Podrás necesitar agregar {{filename|/usr/lib/wicd/autoconnect.py}} a scripts de inicio y de gestión de energia para reconectar a las redes si esperas auto-conectarte.
 
 
 
==Solución de problemas==
 
La mayoria de los problemas estan relacionados con la asociación. Asi que mira detenidamente la salida de wpa_supplicant cuando sospeches este comportamiento. Agrega -d (Debug) para incrementar la verbosidad. Usualmente '-dd' es suficiente. '-dddd' puede ser exagerada.
 
 
 
Cuando estes inspeccionando el log, presta atencion a entradas como esta:
 
ioctl['''WHATEVER''']: Operation not supported
 
 
 
En este caso, estas experimentando un problema de driver. Actualiza los drivers o cambia el parametro -D.
 
 
 
Otro problema común son mensajes ''No suitable AP found''. Wpa_supplicant parece tener problemas encontrando essids escondidos. Usualmente poniendo scan_ssid=1 en el bloque de red se hará cargo de esto.
 
 
 
=== Ninguna IP del servidor DHCP ===
 
Lo siguiente es una experiencia personal. No se porque funciona de esta manera pero tal vez otros tengan el mismo problema:
 
Despues de
 
 
 
ifconfig wlan0
 
iwconfig wlan0 essid "mi_essid"
 
wpa_supplicant -B -D wext  -i wlan0 -c /etc/wpa_supplicant.conf
 
sleep 15; dhcpcd wlan0 #or dhclient wlan0
 
 
 
No obtengo una dirección IP.
 
Uso esta solución (despues de que lo ya mencionado se haya hecho):
 
killall wpa_supplicant -SIGHUP
 
iwconfig wlan0 essid "myEssid" key on #tal vez "key on" sea opcional
 
sleep 15; dhcpcd wlan0
 
 
 
Cuando hago
 
ps aux | grep wpa
 
Obtengo un wpa_supplicant en ejecución, aún despues de haberlo matado. Aparentemente iwconfig inicio el servicio por mi.
 
 
 
Mi tarjeta wireless:
 
Intel Corporation PRO/Wireless 3945ABG [Golan] Network Connection (rev 02)
 

Latest revision as of 22:11, 15 April 2013