El bocabyte vascodilatador

Blog creado por un estudiante de informática relacionado con linux y las nuevas tecnologías

Archive for 28 mayo 2010

Compartir vpn a traves de wifi (pcmcia hostap + hostapd + dnsmasq + vpnc + iptables)

Posted by Pedro en mayo 28, 2010

Como algunos sabreis estoy en China y me ha surgido un problema.

Tengo un teléfono android y quiero poder acceder a todo (youtube, facebook, wordpress, …) desde el mismo. Con lo cual vamos a montar un sistemita para poder llevar a cabo esto.

Lo primero es la lista de material.

  • Un ordenador con Linux
  • Una tarjeta wifi que soporte modo master (en mi caso una pcmcia zcom que usa chip hostap_cs)
  • Una cuenta vpn, el de tu uni por ejemplo (yo tengo la de la uni francesa ENSIMAG)

Primero conectamos el ordenador a internet.

Una vez que lo tenemos (ese paso no debería ser muy dificil) configuramos la vpn.

VPN

En mi caso es un cliente cisco con lo que uso vpnc, ni que decir tiene que esta configuracion es para los que estudian en la escuela ENSIMAG en Grenoble, en otra parte del mundo pues será otra cosa

Edito /etc/vpnc/vpnc.conf y pongo
# IPSec gateway 10.4.4.4
IPSec gateway 195.83.76.161 ## servidor para acceder desde el exterior de la red de la escuela (en china usaré este)
IPSec ID inpg
IPSec secret mantas01
Xauth password CONTRASEÑA
Xauth username USUARIO

y lo lanzamos con /etc/init.d/vpnc start como root claro.

En este momento ya tenemos facebook y de todo pero solo en el ordenador

Ahora hay que crear un punto de acceso con la tarjeta wifi (en mi caso la pcmcia). Para lograrlo vamos a configurar 3 cosas, la propia tarjeta, el servidor hostapd (punto de acceso) y el servidor dnsmasq (seridor dns y dhcp)

Comenzemos con la tarjeta.

lo primero creamos el script del servicio asi:

ambasaguas ~ # ln -s /etc/init.d/net.wlan0 /etc/init.d/net.wlan1

Y luego lo configuramos asi:

cat /etc/conf.d/net.wlan1

modules_wlan1=”!wpa_supplicant !ifconfig”
config_wlan1=( “192.168.0.1/24″ )
mode_wlan1=”master”
ssid_wlan1=”espronceda”
channel_wlan1=”6″

A continuacion vamos a por hostapd

tras instalarlo lo configuramos asi:

ambasaguas ~ # cat /etc/hostapd/hostapd.conf

ssid=espronceda
interface=wlan1
driver=hostap

debug=0
ctrl_interface_group=0
macaddr_acl=0
deny_mac_file=/etc/hostapd/hostapd.deny
auth_algs=3
eapol_key_index_workaround=0
eap_server=0
dump_file=/tmp/hostapd.dump
wpa=3
wpa_passphrase=password
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP CCMP

hw_mode=b
channel=6

logger_syslog=-1
logger_syslog_level=2
logger_stdout=-1
logger_stdout_level=1
debug=1

own_ip_addr=192.168.0.1


ambasaguas ~ # cat /etc/conf.d/hostapd
# Space separated List of interfaces which needs to be started before
# hostapd
INTERFACES=”wlan1″

# Space separated list of configuration files
CONFIGS=”/etc/hostapd/hostapd.conf”

# Extra options to pass to hostapd, see hostapd(8)
OPTIONS=””

Y para finalizar dnsmasq:

ambasaguas ~ # cat /etc/dnsmasq.conf

dhcp-range=192.168.0.100,192.168.0.250,72h
dhcp-host=00:23:76:10:fc:70,htcMagic,192.168.0.50
interface=wlan1

Y ya está? Bueno ahora falta lo más importante compartir internet desde la conexion vpn al punto de acceso.

Lo primero es que teneis que comfigurar el kernel para dar soporte a iptables. De eso hay muchos manuales por ahi.

Y lanzamos los servidores, para eso crearemos un script en /etc/init.d y meteremos las reglas iptables ahi.

ambasaguas init.d # cat /etc/init.d/compartir
#!/sbin/runscript
# Copyright 1999-2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

depend() {

}

start() {
iwconfig wlan1 mode master
/etc/init.d/net.wlan1 start
/etc/init.d/hostapd start
/etc/init.d/dnsmasq start
iptables -F
iptables -t nat -F
export LAN=wlan1
export WAN=tun0
iptables -A INPUT -s 192.168.0.0/24 -i ${LAN}  -j ACCEPT
iptables -t nat -A POSTROUTING -o ${WAN} -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 1 > $f ; done
}

stop() {
iwconfig wlan1 mode managed
/etc/init.d/hostapd stop
/etc/init.d/dnsmasq stop
iptables -F
iptables -t nat -F
}
restart() {
}

Y ahora si que está todo listo para meternos en facebook desde el movil con android

NOTA:

Si en /var/log/messages os sale un error del estilo :

May 28 19:13:00 ambasaguas kernel: [ 1674.642095] wlan1: dropped unencrypted RX data frame from 00:23:76:10:fc:70 (drop_unencrypted=1)

Solo teneis que ejecutar lo siguiente:

ambasaguas ~ # iwpriv wlan1 drop_unencrypte 0

Posted in General | Leave a Comment »