OpenVPN: ¿solo enruta direcciones IP específicas a través de VPN?

45

En una red privada remota hay dos servidores: un servidor de archivos y un servidor de base de datos (ambos son máquinas Win, en caso de que sea importante).

El servidor de archivos tiene sus propios mecanismos de autenticación bastante robustos y me permite conectarme directamente desde una ubicación remota.

El servidor de la base de datos utiliza un nombre de usuario y contraseña simples, por lo que para evitar el acceso no autorizado, está bloqueado en la red local: el tráfico externo está bloqueado.

Para acceder al servidor de la base de datos, estoy usando el cliente OpenVPN en Windows para conectarme a un servidor VPN en la red privada.

Por defecto, OpenVPN enruta todos los paquetes de red destinados a la red remota en la que reside el servidor VPN, a través de la VPN. Desafortunadamente, ¡acceder al servidor de archivos a través de la VPN es extremadamente lento!

Pregunta:

¿Cómo puedo configurar el cliente OpenVPN para enrutar SOLO el tráfico a través de la VPN que está destinada a una única dirección IP específica, es decir, el servidor de la base de datos?

Brian Lacy
fuente
Es simple, vea aquí cómo hacerlo superuser.com/a/178675/96461
Sameer

Respuestas:

51

La configuración correcta para OpenVpn es:

route-nopull 
route 192.168.0.0 255.255.255.0

Estas entradas pertenecen a su archivo .ovpn y dirigirán todo el tráfico de subred 192.168.0. * A través de la VPN.

Solo para una IP (192.168.0.1):

route-nopull 
route 192.168.0.1 255.255.255.255
Thomas
fuente
Somos en su mayoría hablantes de inglés y no necesariamente sabemos alemán. Por favor traduzca su respuesta.
gronostaj
1
+1. Esto es exactamente lo que necesitaba. Estoy usando clientes ovpn en mi Linux y, por lo tanto, su respuesta me salvó. Gracias.
slayedbylucifer
¿Puedo enrutar un sitio web a vpn? Por ejemplo, solo www.facebook.com
Nicola Peluchetti
En mi caso, el enrutamiento de una sola ip a través de vpn parece funcionar bien. Pero cuando se usa la máscara de subred, no funciona en absoluto. Alguna idea de por qué?
running.t
Que aun no conozco respuesta a mi pregunta (arriba), pero he hecho un poco de investigación y ha creado hilo separado de él: superuser.com/questions/854194/...
running.t
24

Metas

  • Utilice la conexión a Internet simple para todo el tráfico de Internet de forma predeterminada, incluso cuando la VPN esté conectada.
  • Enruta el tráfico a una dirección IP específica a través de la VPN.

Pasos

  1. Presiona Win+ Ry ejecuta ncpa.cpl.

  2. Haga clic derecho en la conexión VPN y vaya a Propiedades → Redes .

  3. Seleccione Protocolo de Internet versión 4 e ir a Propiedades → avanzada ... .

  4. Desmarque Usar puerta de enlace predeterminada en la red remota y haga clic en Aceptar .

  5. (opcional) Repita los pasos anteriores para el Protocolo de Internet versión 6 .

  6. (Re) conéctese a su VPN.

  7. Abra un símbolo del sistema y ejecútelo route print -4.

  8. Encuentra la interfaz de la VPN en la lista de interfaces y su puerta de enlace en las rutas activas .

    En mi máquina, tengo:

    Interface List
     32...........................Super Free VPN
    
    [...]
    
    Active Routes:
    Network Destination        Netmask          Gateway       Interface  Metric
              0.0.0.0          0.0.0.0         On-link        10.6.6.127     31
             10.0.0.0        255.0.0.0        10.88.1.1      10.88.1.102     31
    

    Aquí, la puerta de enlace de la VPN es 10.88.1.1, ya que es la puerta de enlace para el 10.xxx.xxx.xxxbloque.

  9. Agregue una ruta persistente que se agregará a las rutas activas siempre que haya una conexión a la VPN:

    route -p add 23.22.135.169 10.88.1.1 if 32
    

    En este ejemplo, 23.22.135.169es la IP de whatismyip.org, 10.88.1.1es IP de la puerta de enlace y 32el número de la interfaz.

  10. (opcional) Repita los pasos anteriores para route print -6.

  11. Prueba la configuración.

    Si todo funcionó, whatismyip.org y www.whatismyip.cx mostrarán diferentes IP ahora.

Dennis
fuente
1
¿Seguramente hay una manera más simple?
Brian Lacy
1
¿Sabes cómo lograr esto en Linux (Ubuntu)?
Елин Й.
1
@ ЕлинЙ. si está utilizando Network Manager, simplemente seleccione "Usar esta conexión solo para recursos en esta red".
leif81
1
+1 ... pero ¿podría jugar golf esto?
Olivier Dulac
11

A su configuración de cliente OpenVPN, agregue una línea como:

route The.IP.To.Go 255.255.255.255

(Donde The.IP.To.Go es la IP que desea enrutar a través de la VPN)

Esto le indica a OpenVPN que cree la entrada en la tabla de enrutamiento de su sistema operativo.

Alternativamente, se podría hacer que el servidor OpenVPN "empuje" esta configuración de enrutamiento a los clientes, agregando a la configuración del servidor:

push "route The.IP.To.Go 255.255.255.255"

EDITAR: Una cosa que omití abordar: el reenvío predeterminado de todo el tráfico ... Podría deshabilitarse en el servidor o los clientes pueden optar por ignorar las directivas "empujadas" (por lo que nuestra segunda opción "empujar" la ruta no funcionaría). ) a través de:

route-nopull
Adán
fuente
-2
iptables -A PREROUTING -t mangle -i <LAN_interface> \
-d <remote_network>/<remote_netmask> -j ROUTE --gw <openvpn_host_ip>
Dharmesh
fuente
Por favor explique lo que hace este comando. Solo un comando sin explicación no es tan útil. También verifique el formato de su publicación: no todas <brackets>están visibles si no están marcadas como código.
slhck