Bueno, un cliente lo pidió, así que me tocó.
dd-wrt es un firmware que sirve para una enorme variedad de routers inalámbricos de bajo costo que pululan en ebay y demás.
a veces es necesario establecer una conexión de VPN entre una red local que queda detrás de este tipo de router y un cliente externo. Me gusta mucho openvpn y he visto que dd-wrt lo ofrece para ciertos routers (con mucha RAM y almacenamiento), en mi caso compré hace unos años, de casualidad un Buffalo WHR-HP-G54 que permite que le flashees con este sistema.
Le tengo puesto el último firmware de dd-wrt, el DD-WRT v24-sp2 (08/07/10) vpn – build 14896 , fíjate la palabrita “vpn” en el nombre, este es un firmware muy grande, pero que cabe en este router al 100%.
Siguiendo los pasos que publiqué hace muchos años en EcuaLUG generé el ca.crt, server.key, server.crt y el dh1024.pem
Estos archivos los generé en un servidor Linux mío.. cualquiera.. que tuviera openvpn instalado. Y los contenidos de estos archivos los puse en el panel de control de router con dd-wrt donde dice Services -> VPN, ahi activé “Start OpenVPN Daemon”, mira las siguientes imágenes y lee debajo qué puse en cada caso:
En
- CA cert, copié los contenidos que generé del ca.crt
- Certificate Revoke List: no copié nada
- Public Client Cert: copié los contenidos de server.crt
- Private Client key: copié los contenidos de server.key
- DH PEM: copié los contenidos de dh1024.pem
- OpenVPN confíg puse los contenidos que más abajo verás.
- OpenVPN TLS Auth : no puse nada.
En el config puse algo así, solamente tienes que cambiar la primera línea y poner la red interna que uses, en mi caso la red que está dentro de mi router dd-wrt es 192.168.8.0/24 (255.255.255.0=/24)
push "route 192.168.8.0 255.255.255.0"
server 10.10.0.0 255.255.255.0 dev tun0
proto tcp-server
port 1194
keepalive 10 120
dh /tmp/openvpn/dh.pem
ca /tmp/openvpn/ca.crt
cert /tmp/openvpn/cert.pem
key /tmp/openvpn/key.pem management localhost 5001
comp-lzo
Y listo, apliqué los cambios.
ahora tuve que abrir el puerto 1194 en tcp, normalmente se usa udp pero mi proveedor de internet parece bloquearlo por lo que me cambié a tcp y a mi me funcionó.
Para abrir el firewall vete a “Administration” -> “Commands”
ahi escribes sólo dos líneas:
iptables -I INPUT 1 -p tcp --dport 1194 -j ACCEPT iptables -I FORWARD 1 --source 10.10.0.0/24 -j ACCEPT
Esto le indica que abra el puerto 1194 en tcp y que permita conexiones que provengan del tunnel (10.10.0.0/24).
Aprietas el botón que dice: “Save Firewall”
Y listo! Ya tenía activado el servidor de dd-wrt como un servidor de openvpn. Por supuesto seguí el tutorial de EcuaLug para la parte del cliente, normalito, como dice el tutorial para el cliente.
Para confirmar que acabo de probar con udp y funcionó maravillosamente, simplemente donde quiera que decía tcp o tcp-server, puse udp, reinicé ambos lados y todo ok.. el udp parece ser más rápido