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

From ArchWiki
Jump to: navigation, search
(Fallback: Recompiling wpa_supplicant)
(Redireccionar)
 
(20 intermediate revisions by 8 users not shown)
Line 1: Line 1:
{{translateme}}
+
#REDIRECT [[WPA supplicant (Español)]]
 
 
{{i18n_links_start}}
 
{{i18n_entry|English|WPA Supplicant}}
 
{{i18n_entry|简体中文|WPA 客户端}}
 
{{i18n_entry|Русский|WPA Supplicant (Русский)}}
 
{{i18n_entry|Español|WPA Supplicant (Español)}}
 
{{i18n_links_end}}
 
[[Category:Communication and network (English)]]
 
[[Category:Networking (English)]]
 
[[Category:HOWTOs (English)]]
 
 
 
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.
 
 
 
==Management==
 
 
 
===netcfg===
 
The easiest way to have wpa_supplicant start at boot is to use netcfg.  It is not necessary to specify which network SSID you want to connect to (typically you can't do that anyways since the desired network will vary depending on location), wpa_supplicant will automatically connect to an available network from those specified in {{filename|/etc/wpa_supplicant.conf}}.
 
 
 
So, install netcfg if it is not already installed and then create a network profile configuration by copying the example file:
 
 
 
# cp /etc/network.d/examples/wireless-wpa-config /etc/network.d/wpa_suppl
 
 
 
Edit the new file to make sure it specifies the right interface, e.g.
 
 
 
INTERFACE="wlan0"
 
 
 
The rest of the file should be left as it is.  Next, edit {{filename|/etc/rc.conf}}.  Add the network profile to the NETWORKS array:
 
 
 
NETWORKS=(wpa_suppl)
 
 
 
And, add the net-profiles daemon to the list of daemons started at boot:
 
 
 
DAEMONS=(... @net-profiles)
 
 
 
That's it.  On the next reboot, the wireless interface will be brought up and wpa_supplicant started.  If a known network is available, a connection will be established.  For more information on netcfg see [[Network Profiles]].
 
 
 
===Wireless management only===
 
 
 
As mentioned above, there are two frontends to wpa_supplicant actually written by the wpa_supplicant developers themselves, "wpa_cli", and "wpa_gui".  wpa_cli is, as you might expect, a command line front end, while "wpa_gui" is a qt-based frontend to wpa_supplicant.  wpa_cli is include with the wpa_supplicant package, wpa_supplicant_gui is it's own package.  The details on how to setup wpa supplicant to work w/ either wpa_cli or wpa_supplicant are in section [[#Dynamic method:'wpa_gui', 'wpa_cli']].
 
 
 
wpa_cli, when invoked without options, will give you a prompt environment, try typing "help" for help.
 
 
 
wpa_gui is pretty straightforward, If you hit "scan" you will be presented with a list of detected SSIDs, you can double click to add one, you will be given a dialogue box that will let you enter information that you need to associate with your network, most likely, you will only have to enter your PSK if you use wpa/wpa2 or your "key0" for a WEP connection.  The protocal for WPA/WPA2/WEP/Unencrypted should be autodetected.  Things like 802.1x will require a bit more configuration.
 
 
 
After you add a network you can modify it if you do something like changing the PSK, switch to the 'Manage Networks' tab and select the network you want to Edit / Remove.  You can also add a network without scanning, which you will need to do if you don't broadcast your SSID.
 
 
 
'''Note:''' wpa_cli and wpa_gui will not get you an ip address or set up a proper routeing table, they will '''only''' associate you with a wireless access point.  The wpa_auto scripts from the aur can be used to start wpa_supplicant at boot and automatically run dhcp to configure your network connection after you associate to a wireless network, or you might right your own scripts.  Higher level, wireless/network management utilites are also available, that are capable of managing both wireless connections and wired connections:
 
 
 
===Wicd===
 
Install [[Wicd]]:
 
# pacman -S wicd
 
 
 
Wicd is very straightforward; scan for networks, fill in the required data and connect. You might need to add {{filename|/usr/lib/wicd/autoconnect.py}} to init and power management scripts for reconnecting to networks if auto-connection behavior is expected.
 
 
 
==Troubleshooting==
 
Most of the issues are related to the association. So, have a deep look at wpa_supplicant's output when you suspect it's misbehaving. Add '-d' (for debug) to increase the verbosity. Usually '-dd' is enough. '-dddd' might be overkill.
 
 
 
When you're inspecting the log, have a look at entries like this one:
 
ioctl['''WHATEVER''']: Operation not supported
 
 
 
If this is the case, you're experiencing a driver issue. Upgrade drivers, or change the -D parameter.
 
 
 
Another common problem is ''No suitable AP found'' messages.  Wpa_supplicant seems to have trouble finding hidden essids.  Usually setting scan_ssid=1 in your network block will take care of this.
 
 
 
 
 
=== No IP from DHCP Server ===
 
The following is a personal experience. I don't know why it works this way but maybe orthers have the same issue:
 
After
 
 
 
ifconfig wlan0
 
iwconfig wlan0 essid "myEssid"
 
wpa_supplicant -B -D wext  -i wlan0 -c /etc/wpa_supplicant.conf
 
sleep 15; dhcpcd wlan0 #or dhclient wlan0
 
 
 
I don't get an IP adress.
 
I use this Workaround (after the stuff just mentioned has been done):
 
killall wpa_supplicant -SIGHUP
 
iwconfig wlan0 essid "myEssid" key on #maybe "key on" is optional
 
sleep 15; dhcpcd wlan0
 
 
 
When I do
 
ps aux | grep wpa
 
I get a running wpa_supplicant even though i just killed it. Seems like iwconfig started the service for me.
 
 
 
My wireless card:
 
Intel Corporation PRO/Wireless 3945ABG [Golan] Network Connection (rev 02)
 

Latest revision as of 22:11, 15 April 2013