7 votos

Mikrotik y VPN sólo para sitios web específicos

Día a día la censura en la web en mi país gana fuerza. La solución obvia es utilizar una VPN, pero ralentiza la conexión y no se puede garantizar la inocuidad de los servicios públicos de VPN.

Así que pensé en la siguiente solución:

El router accederá a la mayoría de los sitios web de forma convencional, pero mantendrá una conexión VPN constante que simulará ser una interfaz de red adicional. Si accedo a uno de los sitios web censurados, el router pasará el tráfico a través de esta interfaz virtual.

¿Es esto posible con RouterOS? ¿Cómo hacerlo?

Mi router es RB2011UiAS-2HnD-IN, RouterOS v 6.30.2.

11voto

Cha0s Puntos 156

Supongamos que vas a utilizar una VPN PPTP sólo para demostrar los comandos que necesitas ejecutar.
Dado que el cifrado de PPTP está roto desde hace mucho tiempo, te sugiero que uses algo más seguro (como OpenVPN). El principio es el mismo independientemente de la tecnología de VPN/túnel que utilices.

Así que primero se crea la VPN sin añadir una ruta de puerta de enlace por defecto.

/interface pptp-client
add add-default-route=no allow=pap,chap,mschap1,mschap2 connect-to=VPN_SERVER_IP \
dial-on-demand=no disabled=no max-mru=1440 max-mtu=1440 mrru=dis \
name=VPN_NAME password="MY_STRONG_PASSWORD" profile=default-encryption user=USERNAME

A continuación, se crea una nueva tabla de enrutamiento añadiendo una pasarela por defecto a través de la VPN con una nueva marca de enrutamiento vpn . Esto le permitirá enrutar los paquetes a través de la VPN.

/ip route add dst-address=0.0.0.0/0 distance=1 gateway=VPN_GATEWAY_IP routing-mark=vpn

La siguiente ruta es opcional en caso de que quiera bloquear el tráfico saliente si la VPN está caída:

/ip route add dst-address=0.0.0.0/0 type=unreachable distance=2 routing-mark=vpn

También necesitamos hacer algo de NAT para los paquetes que saldrán por la interfaz VPN.

/ip firewall nat add chain=srcnat out-interface=VPN_NAME action=masquerade

Ahora añadimos el mangle regla que coincida con las IPs de destino que queremos y hacer un mark-routing en ellos para que utilicen el vpn tabla de rutas que hemos creado.

/ip firewall mangle add chain=prerouting dst-address-list=VPN action=mark-routing new-routing-mark=vpn

Por último, creamos un Address List en el firewall con las IPs que queremos enrutar a través de la VPN.

/ip firewall address-list add list=VPN address=1.1.1.1
/ip firewall address-list add list=VPN address=2.2.2.2
/ip firewall address-list add list=VPN address=3.3.3.3
/ip firewall address-list add list=VPN address=4.4.4.4

Repite la última regla tantas veces como necesites para tantas IPs como quieras enrutar a través de la VPN.

Ten en cuenta que las reglas anteriores no proporcionan ninguna seguridad en cuanto a quién detrás de tu router podrá acceder a la VPN, etc. Es posible que tenga que añadir comprobaciones de IPs de origen adecuadas en las reglas para hacerlas más seguras.

También este método enrutará IPs enteras a través de la VPN. Si necesita enrutar puertos/protocolos específicos a través de la VPN, simplemente cree reglas adicionales que coincidan con lo que necesita y haga mark-routing en ellos.

-2voto

plugwash Puntos 327

Lo de abajo es una respuesta genérica de linux. No sé si routeros tiene una funcionalidad adecuada en su interfaz de usuario y si no es así si se puede pasar por alto la interfaz de usuario e interactuar con las características de enrutamiento / firewall / nat en el kernel directamente.

Lo primero que hay que hacer es configurar el software de la VPN y abrir la interfaz de la misma. Debe decirle a su software VPN NO para que la VPN sea la puerta de enlace predeterminada. Cómo se hace esto exactamente dependerá del software de VPN que esté utilizando.

A continuación, puede añadir rutas específicas a la tabla de enrutamiento para dirigir el tráfico a determinadas direcciones IP por la VPN.

También debes asegurarte de que el NAT está configurado correctamente para que la dirección de origen de los paquetes que salen de tu router coincida con la interfaz desde la que salen. Esto puede hacerse utilizando el objetivo "MASQURADE" o configurando reglas "SNAT" separadas para cada interfaz.

Dependiendo de la naturaleza exacta del bloqueo, es posible que no sea necesario enviar parte o todo el tráfico DNS por la VPN. Enviar todo el tráfico DNS a través de la VPN debería ser bastante fácil (sólo tienes que apuntar la configuración de tu servidor DNS a una IP que esté enrutada a través de la VPN). Si (por razones de rendimiento o privacidad) quieres que sólo algunas de tus consultas DNS bajen por la VPN, necesitarás algún tipo de proxy DNS para dividir las peticiones.

Otra complicación es si los sitios a los que se accede no tienen IPs estables. En este caso, necesitarías un proxy DNS que pudiera monitorizar las respuestas y añadir rutas dinámicamente.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: