lunes, 23 de noviembre de 2009

[Howto] Fonera repetidor con WPA

Fonera repetidor con WPA


Problema:
La señal que llega hasta mi cuarto es super inestable (hay un muro por el medio), y tan sólo por dar 2 pasos hacia un lado la señal ya varía un montón.
99ms hasta el AP, imagínate cuándo tardaría llegar hasta un server en internet...

De testing


Búsqueda de solución:
La fonera como repetidor de señal (es obio, por algo lo puse como título principal)

Configurar la fonera como repetidor ya lo había hecho con anterioridad, pero esta vez le he aumentado el nivel de seguridad (el día internacional de la seguridad informática es para que uno reflexiones sobre su inseguridad), y me he animado en anotarlo para futura ocación.

Tenemos varios opciones:
Instalamos DD-WRT y terminamos en cuestión de minutos.
Ó instalamos Open-WRT y nos entretenemos un tiempillo [bueno...tiempillo, tiempillo... de unos ... 6 hora, o_O, desde las 23:00 hasta 5:00, XD] y aprendiendo [claro].

[El tiempo vuela cuando uno está motivado...]

Si dije lo de antes, es obio que he elegido la segunda opción... ^_^

Follow ME!!


[Un pequeño saltitos]
Para el flasheo rápido y cómodo a Open-WRT os recomiendo ap51-flash-fonera-gui
Una vez flasheado, accedemos mediante Telnet, cambiamos password de root, salimos, y entramos de nuevo pero con SSH
[Y terminamos con el salto]


Para tener un poco la idea más clara, lo que necesitamos es 2 interfaz inalambrica (1xLAN, 1xWAN), y como la fonera ya trae una interfaz con RJ45, la vamos a aprovecharla tambien para que en caso de haya algún error con la interfaz inalámbrica tener un seguro.

Esto es lo que queremos:
WAN (virtual ath0) depente del AP
LAN (ath1 )fon 192.168.10.1
LAN2 (eth0, para por si ath0 falla) 192.168.2.1

Y para ellos:
##### /etc/config/network #####

config interface wan
option ifname ath0
option proto static
option ipaddr 192.168.1.10
option netmask 255.255.255.0
option dns 80.58.0.33
option gateway 192.168.1.1

config interface lan
option ifname ath1
option proto static
option ipaddr 192.168.10.1
option netmask 255.255.255.0
option dns 80.58.0.33

config interface lan2
option ifname eth0
option proto static
option ipaddr 192.168.2.1
option netmask 255.255.255.0
option dns 80.58.0.33

######### FIN ###########

LAN(ath1) es una tarjeta virtual por lo que temenos que crearlo a modo comando

Aseguramos que en /etc/config/wireless esté "option disable 0" para después poder crearla.



Más preparaciones:
Os recuerdo que en Linux [Open-WRT, kamikaze, es GNU/Linux tambien...] para acceder a una red inalámbrica con encriptación WPA requiere una aplicación de tercero: WPA Supplicant.
Y al igual, para ponerlo como un punto de acceso que soporte WPA tambien, este paquete se llama: hostapd

Por ahora aún no tenemos internet desde la fonera, lo que podemos hacer es descargar todos los paquetes necesario desde internet a nuestro PC, y después descargarlo desde nuestro PC a fonera.

Este es uno de los muchos repositorio que hay por el internet:
http://download.berlin.freifunk.net/fonera/

wpa-supplicant con su dependencias (openssl-util, libopenssl, zlib)
hostapd-mini


START

-Nos conectamos a la Fonera.
Y descargamos los archivos descargado previamente y se lo instalamos:
wget http://192.168.2.135/openssl-util_0.9.8e-1_mips.ipk &
wget http://192.168.2.135/libopenssl_0.9.8e-1_mips.ipk &
wget http://192.168.2.135/zlib_1.2.3-4_mips.ipk &
wget http://192.168.2.135/wpa-supplicant_0.5.7-1_mips.ipk &
wget http://192.168.2.135/hostapd-mini_0.5.7-1_mips.ipk &
ipkg install zlib_1.2.3-4_mips.ipk libopenssl_0.9.8e-1_mips.ipk openssl-util_0.9.8e-1_mips.ipk wpa-supplicant_0.5.7-1_mips.ipk hostapd-mini_0.5.7-1_mips.ipk


-Creamos un script para automatizar y organizar un poco
##### /etc/config/mi_script #####

wlanconfig ath1 destroy
wlanconfig ath0 destroy
#Al iniciar el script, elimina las interfaces inalábrica por si está.

wlanconfig ath0 create wlandev wifi0 wlanmode sta nosbeacon
#primero crea una interfaz en modo sta (station, cliente)

wlanconfig ath1 create wlandev wifi0 wlanmode ap
#después crea un AP [No puede haber AP si no tiene conectado STA de la fonera a su AP]

ifconfig ath0 up
ifconfig ath1 up
#levanta las 2 interfaz

wpa_supplicant -D wext -B -i ath0 -c /etc/config/wpa_supplicant_wan.conf &
#archivo de configuración de wpa_supplicant

hostapd /etc/config/hostapd_lan.conf &
#archivo de configuración de hostapd

/etc/config/mi_firewall

#########################

####### / etc/config/dhcp ######
config dhcp
option interface lan
option start 100
option limit 150
option leasetime 12h

config dhcp
option interface lan2
option start 100
option limit 150
option leasetime 12h

config dhcp
option interface wan
option ignore 1

#########################

##### /etc/config/wpa_supplicant_lan.conf #####

ap_scan=1
fast_reauth=1
network={
ssid=”SSID_de_AP”
scan_ssid=0
proto=WPA
key_mgmt=WPA-PSK
psk=”password”
}

##############################

##### /etc/config/hostapd_lan.conf #####

interface=ath1
driver=madwifi
logger_syslog=-1
logger_syslog_level=2
logger_stdout=-1
logger_stdout_level=2
debug=0
dump_file=/tmp/hostapd.dump
ssid=SSID_New_AP
wpa=1
wpa_passphrase=password
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP

##############################


######## /etc/config/mi_firewall ##########
##SCRIPT DE CONFIGURACION DE IPTABLES ####
#!/bin/sh

# interfaz que va conectada al internet
EXIF="ath0"
# interfaz que conecta al LAN
INIF="ath1"

# Puertos que van adirigir. puertoTCP="puerto1" puertoUDP="puerto2",
#si son mas de un puerto que va a dirigir, lo separa con un espacio
puertosTCP="7778" puertoTCP="80"
# ip a la que se le redirigen los puertos
pc2="192.168.1.2"

fail=0

#[ -f /etc/default/rcS ] && . /etc/default/rcS
#. /lib/lsb/init-functions

echo "Aplicando Reglas de Firewall..."

## Borrado de reglas anteriores
iptables -F || fail=1
iptables -X || fail=1
iptables -Z || fail=1
iptables -t nat -F || fail=1

## Establecemos politica por defecto
iptables -P INPUT ACCEPT || fail=1
iptables -P OUTPUT ACCEPT || fail=1
iptables -P FORWARD DROP || fail=1
iptables -t nat -P PREROUTING ACCEPT || fail=1
iptables -t nat -P POSTROUTING ACCEPT || fail=1

# Marcar paquetes salientes con su ip de origen
iptables -t nat -A POSTROUTING -o $EXIF -j MASQUERADE || fail=1
# Reenvio de IP
echo 1 > /proc/sys/net/ipv4/ip_forward || fail=1

# Aceptar paquetes para reenviar procedentes de la red local
iptables -A FORWARD -i $INIF -o $EXIF -j ACCEPT || fail=1
# Aceptar paquetes para reenviar procedentes de internet de conexiones ya establecidas
iptables -A FORWARD -i $EXIF -o $INIF -m state --state RELATED,ESTABLISHED -j ACCEPT || fail=1

##Se redirigen los puertos configurados

for puerto in $puertosTCP
do
iptables -A FORWARD -i $EXIF -o $INIF -p tcp --dport $puertoTCP -j ACCEPT || fail=1
iptables -t nat -A PREROUTING -i $EXIF -p tcp --dport $puertoTCP -j DNAT --to $pc2:$puerto || fail=1
done

for puerto in $puertosUDP
do
iptables -A FORWARD -i $EXIF -o $INIF -p udp --dport $puertoUDP -j ACCEPT || fail=1
iptables -t nat -A PREROUTING -i $EXIF -p udp --dport $puertoUDP -j DNAT --to $pc2:$puerto || fail=1
done

# Se muestran los resultados
echo $fail

if [ $fail -eq 0 ]
then
echo "Verifique que lo que se aplica con: iptables -L -n."
else
echo "Se ha producido un error al aplicar alguna de las reglas"
fi

#### FIN SCRIPT DE CONFIGURACION DE IPTABLES ####
#######################################


Con el script y los archivos de configuración creada, hay que añadirlo al inicio del arranque de la Fonera.
Pero antes hay que darle permiso de ejecución a /etc/config/mi_script y a /etc/config/mi_firewall

#chmod +x /etc/config/mi_script
#chmod +x /etc/config/mi_firewall

Creamos symbolic
#ln -s /etc/config/mi_script /etc/rc.d/S55mi_script


Con el /etc/config/mi_firewall conseguimos redireccionar la interfaz a otro. (como hacer bridge)

Reinicia la Fonera, and Enjoy it!!
#reboot

RECORDAR: Si la ath0 no se asocia a AP, ath1 no se configurará

A diferencia de la primera captura, esta pasa por 2 nodo y llega antes.
De testing




Saludos, Good Luck!!

_____

1 comentarios:

Monzi dijo...

Muy bueno, largo pero bueno :-)
Jum ^_^ Si lo hubiéramos sabido antes :(

Publicar un comentario

 
Powered by Blogger