OpenVPN: comprender la tabla de enrutamiento + Cómo enrutar solo el tráfico a una IP específica a través de la VPN

OpenVPN: comprender la tabla de enrutamiento + Cómo enrutar solo el tráfico a una IP específica a través de la VPN

Me estoy conectando a un servicio VPN usando OpenVPN y todo funciona bien. Una vez que me conecto estas son las reglas que se establecen automáticamente:

root@linux:~# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:AA:1B:01:AC:FB  
          inet addr:192.168.1.201  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:46867 errors:0 dropped:0 overruns:0 frame:0
          TX packets:29742 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:37977382 (36.2 MiB)  TX bytes:5098121 (4.8 MiB)
          Interrupt:16 

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.7.7.126  P-t-P:10.7.7.125  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:23284 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5817 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:31366374 (29.9 MiB)  TX bytes:308591 (301.3 KiB)

root@linux:~# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         10.7.7.125      128.0.0.0       UG    0      0        0 tun0
default         192.168.1.1     0.0.0.0         UG    0      0        0 eth0
5.120.121.114   192.168.1.1     255.255.255.255 UGH   0      0        0 eth0
10.7.7.1        10.7.7.125      255.255.255.255 UGH   0      0        0 tun0
10.7.7.125      *               255.255.255.255 UH    0      0        0 tun0
128.0.0.0       10.7.7.125      128.0.0.0       UG    0      0        0 tun0
192.168.1.0     *               255.255.255.0   U     0      0        0 eth0

Esto es lo que entiendo:

  • mi dirección IP local es 192.168.1.201
  • la puerta de enlace local es 191.168.1.1
  • 5.120.121.114 es la ip pública de VPN
  • tun0 es el túnel VPN, mi máquina tiene 10.7.7.126 como dirección
  • 10.7.7.125 es la dirección ptp que entiendo es el otro "extremo" de la VPN

Respecto a la tabla de enrutamiento entiendo que:

  • de forma predeterminada, todo el tráfico se envía a través de 10.7.7.125 en la interfaz tun0 (pero ¿por qué esa máscara?)
  • Se puede acceder a 10.7.7.1 a través de tun0
  • Se puede acceder a la IP pública de VPN a través de eth0

No entiendo la segunda puerta de enlace predeterminada, esta es la predeterminada cuando la VPN no está activa, ¿simplemente se omite?

¿Qué pasa con el 10.7.7.1? Parece que es la puerta de enlace de la VPN...

¿Por qué el destino 128.0.0.0?

OpenVPN crea automáticamente todas estas reglas. ¿Pero en base a qué se crean esos?

No puedo controlar el lado del servidor de la VPN sino solo la configuración del cliente.

Ahora, ¿qué pasa si quisiera:

  • ¿Forzar que todo el tráfico a 216.58.213.174 pase a través de VPN tun0 y que el resto pase a través de eth0?
  • ¿Puedo establecerlo automáticamente al iniciar la VPN?

Gracias por su sugerencia y apoyo para entender esto.

KR, no sé

EDITAR:

root@linux:~# ip route list
0.0.0.0/1 via 10.7.7.125 dev tun0 
default via 192.168.1.1 dev eth0 
5.152.210.249 via 192.168.1.1 dev eth0 
10.7.7.1 via 10.7.7.125 dev tun0 
10.7.7.125 dev tun0  src 10.7.7.126 
128.0.0.0/1 via 10.7.7.125 dev tun0 
192.168.1.0/24 dev eth0  src 192.168.1.201 

Respuesta1

No entiendo la segunda puerta de enlace predeterminada, esta es la predeterminada cuando la VPN no está activa, ¿simplemente se omite?

Este es uno de los trucos de OpenVPN para enrutar el tráfico a través de su túnel mientras mantiene su puerta de enlace predeterminada. Las rutas 0.0.0.0/1 y 128.0.0.0/1 tienen prioridad sobre la ruta 0.0.0.0/0 ya que son más específicas y aun así coinciden con todas las direcciones. Busque "def1" en la documentación de OpenVPN para obtener más detalles.

¿Qué pasa con el 10.7.7.1? Parece que es la puerta de enlace de la VPN...

Probablemente si

OpenVPN crea automáticamente todas estas reglas. ¿Pero en base a qué se crean esos?

Probablemente hayan sido enviados desde el servidor. Puedo proporcionar más información si puede proporcionar el resultado de su cliente mientras se inicia junto con su archivo de configuración.

No puedo controlar el lado del servidor de la VPN sino solo la configuración del cliente.

Sí, pero el cliente es altamente configurable, de modo que puedes anular prácticamente cualquier cosa que el servidor quiera que haga tu cliente. Aún así, deberá cumplir con los requisitos básicos de su proveedor para poder conectarse. También debe consultar los "Términos de uso" de sus proveedores para asegurarse de no terminar cabreándolos.

Ahora, ¿qué pasa si quisiera:

¿Forzar que todo el tráfico a 216.58.213.174 pase a través de VPN tun0 y que el resto pase a través de eth0?

Sí, incluya "ruta 216.58.213.174 255.255.255.255 10.7.7.125" en su configuración. Eso debería configurar la ruta deseada. Debería poder mantener sus otras rutas en su lugar eliminando la opción "redirect-gateway" de su configuración.

¿Puedo establecerlo automáticamente al iniciar la VPN?

si, ver arriba

Todas las opciones que he descrito y más se pueden encontrar en la documentación en línea de OpenVPN. https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage

información relacionada