Enrutamiento del tráfico tun0 a través de tun1 (VPN de doble salto)

Enrutamiento del tráfico tun0 a través de tun1 (VPN de doble salto)

Objetivo: enrutar todo el tráfico de Internet desde eth0 -> tun0 -> tun1 para una VPN de doble salto. ¿La siguiente tabla de enrutamiento es correcta para ese objetivo?

$ ruta ip mostrar:

0.0.0.0/1 via 10.8.1.1 dev tun1 
default via 10.8.3.1 dev tun0 proto static metric 50 
10.8.1.0/24 dev tun1 proto kernel scope link src 10.8.1.6 
10.8.3.0/24 dev tun0 proto kernel scope link src 10.8.3.4 metric 50 
101.133.213.73 via 10.8.3.1 dev tun0 
127.0.0.0/8 dev lo scope link 
128.0.0.0/1 via 10.8.1.1 dev tun1 
191.72.65.45 via 182.160.0.1 dev eth0 proto static metric 100 
182.160.0.0/24 dev eth0 proto kernel scope link src 182.160.0.19 metric 100 
182.160.0.0/24 dev eth0 proto dhcp scope link src 182.160.0.19 metric 208 
182.160.0.1 dev eth0 proto static scope link metric 100

Respuesta1

eth0 : 182.160.0.19/24 (GW: 182.160.0.1)
tun0 : 10.8.3.4/24 (GW: 10.8.3.1 / VPN endpoint : 191.72.65.45 via eth0)
tun1 : 10.8.1.6/24 (GW: 10.8.1.1 / VPN endpoint : 101.133.213.73 via tun0)

De esta manera, todo el tráfico (incluido el entrante de tun0) se enrutará a través de tun1, excepto el tráfico local en ethernet (182.160.0.0/24) y el tráfico local en tun0/"VPN1" (10.8.3.0/24).

Con esta tabla de enrutamientoAdemás, todo el tráfico procedente de eth0 se enrutará a través de tun1.que no se menciona/solicita en la pregunta... ¿Está bien esta situación para usted? En caso de que la respuesta sea sí, puede mantener esta configuración.

En caso de que esta no sea una situación voluntaria (no desea enrutar el tráfico de eth0 a tun1/tun0), tiene (al menos) dos opciones para solucionarlo.

  • tabla de enrutamiento "personalizada"

Puede haber más de una tabla de enrutamiento y, según la regla/política, puede administrar qué tráfico sería manejado por otra tabla que no sea la predeterminada. De esta manera, puede configurar una tabla de enrutamiento personalizada donde el GW predeterminado sería tun1 y solo el tráfico proveniente de tun0 apuntará a esta tabla de enrutamiento personalizada.

  • Espacio de nombres de red

De esta manera, puede aislar interfaces tun completas de eth0 (con enrutamiento interno entre espacios de nombres) para poder tener una tabla de enrutamiento simple (predeterminada) configurada en el espacio de nombres para que solo el tráfico de tun0 pueda llegar a tun1.

Respuesta2

Suponiendo que la secuencia deseada es que el tráfico de su LAN debe ir desde la máquina local -> tun0 -> tun1, esto es probablemente lo que está sucediendo, sin embargo, está sucediendo de una manera que no es visible en una ruta de seguimiento.

Tomemos un paquete destinado a una dirección de Internet arbitraria; usaré 8.8.8.8 en este ejemplo.

La computadora recoge el paquete y busca cómo enviarlo. Ve que debe enviarse a través de tun1 (debido a que las 2 rutas siguientes son equivalentes a una ruta predeterminada, pero más limitadas, por lo que se prefieren a la ruta predeterminada; en este caso, se accede a la primera ruta).

 0.0.0.0/1 via 10.8.1.1 dev tun1
 128.0.0.0/1 via 10.8.1.1 dev tun1

Pero aquí está la parte que puede no ser obvia. Si observa la configuración de tun1, encontrará que tiene un punto final que es 101.133.213.73. Hay una ruta específica para esta dirección IP que pasa por tun0

 101.133.213.73 via 10.8.3.1 dev tun0

Del mismo modo, existe otra ruta.

  191.72.65.45  via 182.160.0.1 dev eth0 proto static metric 100 

Esta ruta hace que el tráfico enviado a través de tun0 sea directamente accesible a través de la interfaz Ethernet.

Como se trata de una ruta muy específica, el tráfico hacia 101.133.213.73 pasará por tun0. Por lo tanto, todo el tráfico que fluye hacia Internet (a través de tun1) debe pasar por 101.133.213.73, que es en sí mismo un túnel.Entonces sí, los datos fluirán a través de ambos túneles.

Un traceroute no mostrará esto porque el paquete no sabe que está siendo canalizado a través de un túnel. Dicho esto, aún puedes comprobar que esto sucede mirando los niveles inferiores: Generar tráfico mientras estás en otra ventana haciendo un "sudo tcpdump -n -i any". Verá que cada vez que se envía un paquete a Internet en general, se enviará un paquete a través de cada uno de eth0, tun0, tun1, y lo mismo ocurrirá con los paquetes devueltos. Todos los paquetes asociados con tun0 tendrán el destino 101.133.213.73.

información relacionada