Cocinando con Leo: OpenWRT, Internet 3g y VPN

Hola que tal, en este mini tutorial de hoy les mostrare como armar su propio router que entrega Internet filtrado desde una VPN usando un módem 3G como Wan.

 

Para esto necesitaremos las siguientes cosas:

Router moderno compatible con OpenWRT y con un puerto usb 2.0, en este caso usare el router Amper BHS, Blanco de Movistar.

Si usan un router que posee muy poca memoria interna (menos de 8MB, tendrán que hacer pivotroot o similar, que sera parte de otra guía)

2015-02-17 00.21.11

Un proveedor de servicios VPN compatible con OpenVPN, en mi caso use un servidor montado por mi mismo. Si necesitan un servicio externo, recomiendo buscar alguno que permita usar usar puertos no estandar para “ciertas” conexiones, por ejemplo http://llave.me sirve.

on

Un Modem USB 3G (cualquiera de los disponibles en el mercado probablemente funcione).

2015-02-17 00.18.28

Una tarjeta Sim de la compañía a usar, en mi caso

1000px-Claro.svg

Conocimientos básicos en Linux, vi, etc.

simpsons-nerds

Y un computador con puerto ethernet.

 

 

 

Ok, luego de decidir que vamos a usar, vamos a comenzar la configuración del router, voy a considerar que el router ya tiene OpenWRT instalado ya que no es el foco de la guía y esto cambia de router a router, considerar ademas que el router tiene limitado espacio internamente, a si que si es posible usar un OpenWRT limpio, sin paquetes extras, LuCI, etc, a menos de que se conozca respecto a extroot o algún otro medio de almacenamiento externo.

 

Primero vamos a configurar el módem, para esto necesitamos conectarlo a un computador, instalar el driver, cerrar la aplicación de conexión a Internet y abrir una conexión con putty al puerto COM del módem, lo cual podemos averiguar, en Windows usando el Administrador de Dispositivos, en OSX, Linux: dmesg.

 

Abrimos un programa de terminal como Putty en Windows, Minicom en Linux, zterm(?) en OSX.

 

El módem expele un montón de mugre que no nos interesa, simplemente ahí escribimos el comando que nos sirve para desactivar el “CD” que tiene esta unidad al ser conectada por primera vez.

En mi caso con un módem ZTE según Internet, mi comando es:

AT+ZCDRUN=8

 

El buscador de Internet sera su amigo en caso de que el módem sea otro.

 

Existen formas rápidas y fáciles de hacer esto en Linux, pero el lector puede averiguar si es usuario de este sistema, lo cual también por temas de espacio no fue usado en este caso con OpenWRT.

En este punto tenemos listo el Módem.

 

Primeros Pasos:

Luego de hacer una instalación limpia de OpenWRT el router tendrá una ip por defecto de 192.168.1.1 y solo responderá vía telnet.

 

configuramos nuestro equipo en una ip en el rango antes mencionado y entramos por telnet:

 

editamos la configuración para que sea coincidente con nuestra red local:

vi /etc/config/network

20150222163031734

 

guardamos, re-configuramos la red con “ifup lan” y re-conectamos vía telnet usando la ip nueva (configurando nuestro equipo a la ip que tenia anteriormente).

En este punto deberíamos tener conexión a Internet.

20150222163400196

 

 

Vamos ahora a descargar todos los paquetes necesarios para poder usar el módem, OpenVPN y demás.

opkg update

opkg install comgt kmod-usb-serial kmod-usb-serial-option kmod-usb-serial-wwan openvpn-openssl wget unzip

 

Reiniciamos:

 

$reboot

 

Configurando la red (otra vez)

Ahora tenemos que configurar la red otra vez, para esto cambiaremos haremos algunos cambios en la sección lan del archivo previamente abierto: /etc/config/network

cambiare la ip a 192.168.6.1 y comentare la sección gateway y dns:

20150223204219406

 

luego

$ reboot

 

Desconectamos el router de nuestro Internet casero, conectamos nuestro PC al router y esperamos a que nos entregue una ip en el rango nuevo.

 

20150223203807689

gracias DHCP.

 

 

Configurando el módem como WAN:

 

Conectamos el módem al router, esto debería darnos un par de puertos seriales como nuevos dispositivos:

 

$ dmesg

 

20150222164631556

 

ahora deberíamos tener varios ttyUSBx en /dev/

 

ahora editamos una vez mas el archivo de configuración de red en /etc/config/network y agregamos el módem como una nueva interface:

config interface ‘wan’                                      #la configuramos como un vil puerto wan para mayor comodidad
option device ‘/dev/ttyUSB2’                       #el puerto del módem, este puede variar, en mi caso funciono con /dev/ttyUSB2
option apn ‘bam.clarochile.cl’                    #el APN de la compañía
option service ‘umts’                                      #metodo de servicio
option proto ‘3g’                                             #protocolo de conexión
option user ‘clarochile’                                 #usuario y contraseña para la conexión
option password ‘clarochile’

 

20150222165145808

 

guardamos y modificamos el siguiente archivo que corresponde al “Chat” de la conversación entre el equipo y el módem

/etc/chatscripts/3g.chat

y modificamos la penúltima linea:

OK           “ATD$DIALNUMBER”

a

OK         “ATD*99#”

 

luego de guardar y salir, levantamos la interfaz con “ifup wan” y revisamos con “logread -f”

si se queda pegado en “Connect: 3g-wan <–> …” es probable que no tengamos saldo o saldo congelado en el sim, podemos probar colocando el sim en un teléfono, si no logra conectar a Internet o nos indica que no hay saldo, ese es el problema.

20150222181710688

Luego de recargar saldo (gracias Carecoin!) y probar la conexión directamente:

20150223190539675

ahora si volvemos a conectar el módem al router, debería conectar sin problemas:

 

20150223204443325

2015-02-23 17.48.42

removemos cualquier cable del router que no sea el de electricidad , conectamos el router directamente a un computador, nos debería mostrar el portal cautivo de claro.

20150223204546380

 

Si su objetivo era usar Internet directamente del módem, pueden saltar al final de este articulo.

 

OpenVPN!

 

Ahora pongamos las cosas interesantes, tal vez tu proveedor de Internet móvil no te da confianza y aunque pagas mes a mes, preferirías también ademas usar un túnel vpn para mayor privacidad, conexiones a redes intranet de tu empresa o casa, etc. esto te permitirá usarlo.

claro esto también sirve para esos métodos alternativos donde uno no entrega dinero a cambio de un servicio, todo depende de la finalidad.

 

En este ejemplo yo tengo corriendo mi servidor OpenVPN a si que usare ese, los pasos serán similares o iguales para cualquier otro:

Nuestro VPN nos entrega uno o mas archivos que son los archivos de conexión y a veces llaves aparte, en mi caso son 3 archivos.

20150223210708382

 

entremos una vez mas al router via telnet:

vamos a /etc/openvpn  en este directorio no hay nada,  necesitamos llevar de alguna forma los 3 archivos de OpenVPN ahí, hay muchas formas, como usar scp en Linux o Mac, o en mi caso lo mas comodo, usar un micro servidor web instalado en mi pc  y wget en el router.

Para esto use http://cesanta.com/mongoose.shtml Moongose Free, un servidor web de menos de 200kb, ideal para estos usos.

 

20150223211646815

 

usamos wget para obtener los archivos:

$ wget gttp://ip:puerto/archivo.ovpn

20150223211854510

 

 

y los archivos quedaran en /etc/openvpn

20150223212017693

 

ahora configuremos lo necesario para poder conectarnos:

primero en /etc/config/network

agregamos una nueva interface, puede tener cualquier nombre, pero en mi caso usare “VPN_LEO”

config interface ‘VPN_LEO’
    option proto ‘none’
    option ifname ‘tun0’

20150223212346811

 

 

Si tu proveedor te dio usuario y contraseña que no están incluidos en el archivo .ovpn tienes que seguir este paso:

 

guardamos y en el directorio donde estamos, en este caso /etc/openvpn creamos un nuevo archivo:

 

$ vi usuario

y ponemos el usuario y contraseña que nos dio nuestro proveedor de VPN, uno en cada linea.

20150223212655570

 

guardamos y  luego editamos el .ovpn que tenemos:

buscamos la linea que dice “auth-user-pass” y la modificamos a “auth-user-pass usuario”

20150223213115766

 

Quedaría así:

20150223213255957

 

guardamos los cambios.

 

Ahora el ultimo paso es modificar el firewall para permitir el paso del trafico via esta nueva interfaz que creamos hace un rato:

$ vi /etc/config/firewall

y al final del archivo agregamos:

config zone
    option name ‘VPN_LEO_FW’
    option input ‘REJECT’
    option output ‘ACCEPT’
    option forward ‘REJECT’
    option masq ‘1’
    option mtu_fix ‘1’
    option network ‘VPN_LEO’
 
config forwarding                              
        option dest ‘VPN_LEO_FW’                    
        option src ‘lan’

20150223213924913

 

 

guardamos.

 

Probando la conexión.

tenemos que re configurar dns en la interfaz lan, haremos lo siguiente:

usare las dns de google, pero pueden usar cualquiera, sobretodo si su proveedor les entrega un set de dns, usar ese.

 

uci add_list dhcp.lan.dhcp_option=”6,8.8.8.8″
uci commit dhcp
reboot

 

Luego de reiniciar…

 

Ahora haremos la primera prueba de conexión a vpn, para esto conectaremos el módem 3g si es que lo retiramos, esperamos que la conexión este lista y ejecutamos el comando:

openvpn –cd /etc/openvpn –config /etc/openvpn/peanut-TCP-80-lromo-config.ovpn

20150223214036272

 

 

20150223215405183

gasp

Gasp!, estamos conectados, pero tenemos intranet e internet?

 

20150223221045557

 

20150223221109892

 

20150223221130149

Excelente!

 

 

 

Automatizando OpenVPN

Nos podemos conectar, pero escribiendo ese comando cada vez que lo queremos hacer, vamos a automatizar eso para que se conecte al arranque, simplemente agregamos:

openvpn –cd /etc/openvpn –config /etc/openvpn/peanut-TCP-80-lromo-config.ovpn &

al archivo /etc/rc.local

 

 

 

ahora prueba de fuego, apagamos y encendemos el router y esperamos a que nos conecte al túnel.

 

Si se conecto solo, éxito, es hora de ver el ultimo paso.

 

 

 

Seguridad, Wifi, Etc.

ahora que tenemos listo nuestro router, es hora de asegurar un poco el acceso, configurar wifi y ver que otras cosas se pueden hacer.

 

Primero cambiaremos el acceso de telnet a ssh, esto es bastante simple y solo requiere cambiar la contraseña de root

 

$ passwd

20150224154708739

en este caso me sale “password too weak” por que use una contraseña simple.

 

ahora cerramos la conexión por telnet, y abrimos una via ssh, nos pedirá el usuario y password, el usuario es obviamente root y el password que definimos anteriormente.

20150224154847210 20150224154908690

 

Wifi:

Ahora ademas de Ethernet, queremos emitir Wifi, configuramos la red en:

/etc/config/wireless

tendremos algo como esto:

 

config wifi-device radio0
option type mac80211
option channel 11
option hwmode 11g
option path ‘10180000.wmac’
option htmode HT20
# REMOVE THIS LINE TO ENABLE WIFI:
option disabled 1

config wifi-iface
option device radio0
option network lan
option mode ap
option ssid OpenWrt
option encryption none

 

 

Primero borramos la linea “option disabled 1”, en “option ssid” es donde pondremos el nombre de nuestra red, en mi caso la llamare “pruebs3g”, en “option encription” usare WPA2 PSK lo cual seria “psk2” y agregamos una linea al final para definir la contraseña de wifi “option key contrasena123”

20150224155701165

$ reboot

 

y verificamos que nos podamos conectar inalámbricamente:

2015-02-24 15.59.57 2015-02-24 16.00.08

 

Exito!

 

Fin

¿Dudas?

Encuentrame en los lugares de siempre.

 

 

 

 

 

 

 

 

 

 

 

7 Comments

    • si, demás, es replicable en cualquier plataforma, obviamente algunos pasos son distintos pero onda en Linux seria bastante fácil de hacer.

  1. algun tutorial exroot para el tplink 3220, para despues hacer este tutorial en ese router???

    • No es mala idea, voy a hacer un tutorial de exroot para los TP-Link con usb, tengo que conseguirme alguno primero eso si.

      Saludos!

  2. Hola amigo le hago una consulta

    instale openwrt 14.07 (barrie bracker), el cual lo tengo con un exroot con un modem hawei E353, mi drama es que el exrrot me funciona correctamente., pero el modem gsm no me reconoce ttyUSBx en /dev/

    si hago un lsusb me sale que

    Bus 001 Device 002: ID 12d1:14fe Huawei Technologies Co., Ltd.
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

    eso entiendo que me reconoce el modem, como puedo hacer para que reconosca el modem estuve leyendo tiene todas las opkg que leido en los foros,

    para esta version de openwrt usb-mode.json sustituye a usb_modeswitch , pobre con
    tratar de cargar los driver directamente en la raiz /sys/bus/usb-serial/drivers/option1/new_id

    pero nada si me puede ayudar le agradeceria

    mi correo es zalo-86@hotmail.com , saludos

Leave a Reply

Your email address will not be published. Required fields are marked *