domingo, 10 de mayo de 2009

Wpa_supplicant con ndiswrapper no conecta

Bueno, si llegaste hasta aqui, no voy a andar con mucho preambulo, o mejor dicho voy a dejar el preambulo para el final, ya que seguro estaras ansioso por saber como hacer funcionar tu inalambrica sin utilizar ese molesto network manager.
Te habra pasado lo mismo que a mi:
Ejecutaba el comando wpa_supplicant -D ndiswrapper
Claro, uno le esta indicando que utilice ese driver porque ese es el driver que tenemos instalado, pero no conecta, y no conecta...
La solucion: utilizar -D wext, o no poner nada!!! ya que -D hostap, el driver predeterminado, tambien funciona. No me preguntes por qué, porque no lo sé aun. Ya lo investigare

Bueno, ahora si, un poco de teoria muy pero muy resumida:
Los pasos son descriptos luego de haber instalado el driver

Los comandos son todos ejecutados como root.
Voy a suponer que la interfaz inalambrica se llama wlan0 (wlan cero)
Para conocer el nombre de dicha interfaz hay que ejecutar el comando:
iwconfig

A veces es necesario apagar y/o encender ciertas interfaces para evitar problemas. Es sabido que, por ejemplo, si eth0 tiene asignada la ip
192.168.1.1
y eth1 tiene la ip 192.168.1.30, ninguna de las interfaces va a funcionar. Para que funcionen deben pertenecer a distintas redes. Por ejemplo
eth0: 192.168.1.100
eth1: 192.168.0.200
Siempre suponiendo una mascara 255.255.255.0
Como dije antes, apagando la interfaz nos evitamos cualquier problema. Para apagarla:
ifconfig eth0 down
Si luego queremos encenderla:
ifconfig eth0 up
Linux nos va a permitir cualquier combinancion de parametros, por ejemplo:
ifconfig eth0 192.168.1.30 up
Al no indicar mascara, se toma por defecto 255.255.255.0

Bueno, al grano con esto de la wireless
El siguiente comando permite hacer un escaneo de la red
iwlist wlan0 scan

Comandos para conectarse a una inalambrica sin seguridad o con seguridad wep
iwconfig wlan0 mode managed key clavewep (de no haber seguridad, simplemente se omite el parametro key)
Para concretar el enlace con el AP es necesario que el essid del controlador sea el mismo que el del AP.
Eso se logra con:
iwconfig wlan0 essid nombredelessid (el nombre puede ir con o sin comillas)
dhclient wlan0 (o bien configurarla manualmente con ifconfig)

El funcionamiento de wpa_supplicant es el siguiente:
Se crea un archivo de configuracion el cual puede estar en cualquier lugar y luego ese archivo es llamado por el comando wpa_supplicant
Por ejemplo:
/etc/wpa_supplicant/wpa_supplicant.conf

network={
ssid="Nombredelssid"
scan_ssid=1
key_mgmt=WPA-PSK
proto=WPA
#psk="claveentextoplano"
psk=51404fff4c60f72175d030f24a504dfefb41dfc1d22be155b68f1a607df4ec9e
}

psk es la clave y puede ser escrita de dos maneras, en texto plano, el cual debe ir entre comillas o bien encriptado sin las comillas
En este caso la linea psk en la que aparece la clave en texto plano, esta comentada.
El valor encriptado de psk, el cual sirve para ocultar el password, se obtiene con el siguiente comando:

wpa_passphrase nombredelssid claveentextoplano

Una vez creado el archivo de configuracion se utiliza de la siguiente manera:
wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf -D wext -B -w

Con el parametro c se le indica la ubicacion del archivo de configuracion
Con el parametro D se indica el DRIVER con el que se va a conectar y por defecto es hostap, por lo tanto si se va a utilizar ese driver,
no es necesario indicarlo. En mi caso, luego de varias pruebas con -B ndiswrapper, pues ese es el driver que utilizo, probe con wext y funciono;
tendre que investigar a que se debe ese comportamiento.
El parametro -B indica que se ejecute el comando como demonio, liberando la consola al instante, de lo contrario la consola queda ocupada
y al cerrarla se detiene el servicio, perdiendose la conexion.
Si se ejecuto wpa_supplicant como demonio, se puede detener con:
wpa_cli terminate
Una vez establecido el enlace con el AP se debe configurar la red con los comandos tipicos:
Para autoconfiguracion con servidor DHCP
dhclient wlan0
O bien, para la configuracion manual en caso de no existir un servidor DHCP:
ifconfig wlan0 192.168.0.100 up
luego
echo nameserver 200.10.122.10 > /etc/resolv.conf
echo nameserver 200.10.122.10 >> /etc/resolv.conf
route add default gw 192.168.0.1

Otra forma de configurar el enlace, de manera que sea automatico, es incluir los datos de configuracion en el archivo:
/etc/network/interfaces:
auto wlan0
iface wlan0 inet static
address 192.168.0.40
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1
wpa-driver wext
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

La ubicacion del archivo /etc/network/interfaces puede variar dependiendo de la distribucion o la version del sistema operativo.
Lo correcto es ver dentro del script de configuracion de la red, normalmente:
/etc/init.d/networking

Incluso, luego de hacer modificaciones en el archivo interfaces, sirve reiniciar la red desde:
/./etc/init.d/networking restart

No hay comentarios: