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

12

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 "fin" de la VPN

En cuanto 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?)
  • 10.7.7.1 es accesible 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 pasa por alto?

¿Qué pasa con el 10.7.7.1? parece que es la puerta de entrada 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?

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

Ahora, ¿y si me gustaría:

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

Gracias por su sugerencia y apoyo para entender esto.

KR, dk

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 
d82k
fuente
1
Solo mis 2 centavos: utilícelo ip route listpara obtener una mejor vista de sus rutas. Además, porque ifconfig y route están en camino de desaprobación en Linux ...

Respuestas:

15

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

Este es uno de los hacks 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 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 entrada de la VPN ...

Probablemente si

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

Probablemente son empujados desde el servidor. Puedo proporcionar más información si puede proporcionar la salida 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 puede anular casi cualquier cosa que el servidor quiera que haga su cliente. Aún así, deberá cumplir con los requisitos básicos de sus proveedores para conectarse. También debe consultar los "Términos de uso" de sus proveedores para asegurarse de no terminar cabreándolos.

Ahora, ¿y si me gustaría:

forzar todo el tráfico a 216.58.213.174 a través de VPN tun0 y hacer que el resto pase por 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

fuma2345
fuente
¡Muchas, muchas gracias! He pasado días hurgando en las minucias de la red tratando de entender el pequeño y lindo truco con 0.0.0.0/1 y 128.0.0.0/1. Al final, simplemente tuve que agregar una ruta que es completamente redundante, excepto cuando VPN está habilitada.
rlduffy