9- Usando mi servidor de VPN como gateway hacia internet

Imagen de Epe
AdjuntoTamaño
Image icon vpn-def1.png16.26 KB

No sé si te ha pasado, a mí este año me ha pasado un par de veces:

Llego a un sitio a dictar clases y en este lugar como es lógico, no controlo la red y por tanto tengo que depender de las políticas de sus administradores, por ejemplo:

- Algunos bloquean una gran cantidad de sitios web y esto no me gusta porque por ejemplo a veces estoy en un receso leyendo una noticia

- Algunos bloquean el chat, pero tampoco me conviene porque por ahí me comunico con mi familia, no es para perder el tiempo sólo para aprovecharlo

- Algunos bloquean el SSH, peor, o el IMAP por ejemplo.

- Existe una desconfianza total en la red del proveedor, por ejemplo es la competencia y fuiste a una reunión medio tensa, o es una red de un aeropuerto o de un centro comercial donde la seguridad de la red no está garantizada por ninguna vía.

- Trabajas en una embajada en un país hostil, o eres representante de un país en otro que no tienen digamos, excelentes relaciones y quieres evitar que tu tráfico sea analizado por ese país (hay países, grandes, que ya están guardando tráfico de todo y posiblemente analizándole, busca en la eff) y una embajada no debería confiar en simplemente navegar por una red de un proveedor de un país que no es el suyo.

- Quieres guardar todo el tráfico de navegación de tus otras redes en un sólo lugar. Super útil para luego ver qué políticas implementar en la navegación.

- El proveedor donde estás tiene alguna política de cero navegación (pero te permite algún otro protocolo) quizá es una red muy cerrada donde sólo se realiza una labor específica.

- Es una red privada entre dos puntos de tu organización y no hay internet, sólo conexión hacia el servidor de uno de los lados, y no confías en esa red por lo que manejar rutas simplemente no es una opción, sino que necesitas encriptar la información.

Entonces qué hago? Pensemos: bloquean puertos, y dentro de los puertos analizan y bloquean URL por ejemplo para el caso del puerto 80, bloquean sitios.

Bueno pues ocurre que en muchas ocasiones por ejemplo los proveedores no pueden bloquear lo evidente: el puerto 443 (https) porque sino no se podrían usar muchos sitios, o no bloquean el puerto 21 porque lo ven saludable (es el ftp después de todo).

¿Qué se puede hacer, qué hacer entonces? Ah bien, cambio mi servidor de openvpn que tengo en la casa para que escuche en uno de esos puertos (en ese servidor no uso ni ftp ni https por ejemplo)...

Así que le pongo a mi openvpn a escuchar en el puerto 21 cambiando en /etc/openvpn/server.conf la directiva que dice:


port 21

Antes estaba la 1194.

Luego cambio, si es requisito, el protocolo, de udp que es lo que normalmente usa, a tcp, porque algunos firewalls hostiles sólo te dejan 21 en tcp o el 443 en tcp.


proto tcp

aquí iba udp antes, originalmente.

Rutas y NAT:
Además tengo que agregar una ruta en este archivo de configuración del servidor (server.conf), que es la ruta que le indicará al cliente que para navegar, lo haga a través de él. Esto es lo que en la vida real sería el gateway, en el server.conf agrego esto en cualquier lugar, al final está bien:

push "redirect-gateway def1"

Con esto le digo al cliente que para navegar a internet, lo haga a través de la red vpn.

Listo, ya puedo cerrar el server.conf, ya casi todo está listo, ahora me faltan dos cosas por hacer en el servidor:

1- debo activar ip_route puesto que ahora el servidor debe poder pasar paquetes desde la interfaz de tunel (tun0) hacia la internet de él (eth0) esto normalmente se hace en cualquier firewall que hará NAT así que no hay sorpresas:

Lo hago editando /etc/sysctl.conf y cambiando a 1 el siguiente parámetro:

net.ipv4.ip_forward = 0

luego ejecuto:

sysctl -p

2- le tengo que agregar una regla a mi firewall para que todo lo que venga de 10.8.0.0/24 (mi red de vpn) lo enmascare

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

Lógico que si fuera a ser algo permanente, quizá esta regla la debas poner no en línea de comando, sino en algún lugar que se cargue siempre.

En el cliente:
Hay que tener en cuenta que al cliente de openvpn entonces tendré que cambiarle los mismos parámetros que al servidor:

proto tcp-client
remote 1.2.3.4 21

Fíjate, en remote, le cambié el puerto al mismo que escucha el servidor el 21. Además en proto puse "tcp-client" pues así es que se pone en el lado del cliente. En el lado del cliente solamente, no en el del servidor.

Reinicias cliente y servidor y listo, de esta forma estarás navegando desde el server de openvpn tuyo sin pasar por las restricciones de la red donde estés.

Comentarios

Hay manera de especificar en

Imagen de Tonny

Hay manera de especificar en el cliente, cuando quiero navegar a traves de la vpn o solo conectarme a esta y navegar por mi gateway de siempre, ya que veo que esto fuerza a todos los clientes a navegar por la vpn