¿Cómo enrutar todo el tráfico VPN a través de una interfaz de hardware específica?

¿Cómo enrutar todo el tráfico VPN a través de una interfaz de hardware específica?

Tengo una computadora con dos interfaces eth y una interfaz wlan. También está conectado a una VPN (openvpn), por lo que también tiene una interfaz tun0. Ahora, me gustaría asegurarme de que todo el tráfico VPN se envíe mediante la interfaz WLAN y no a través de Ethernet. De forma predeterminada, se envía a través de eth1, por lo que puedo ver al ejecutar iftop. Mi tabla de enrutamiento está a continuación.

$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         Teltonika.lan   0.0.0.0         UG    100    0        0 eth1
default         192.168.222.1   0.0.0.0         UG    600    0        0 wlan0
link-local      *               255.255.0.0     U     1000   0        0 eth0
172.89.0.0      *               255.255.255.0   U     0      0        0 tun0
192.0.2.1       192.168.222.1   255.255.255.255 UGH   600    0        0 wlan0
192.168.0.0     *               255.255.0.0     U     100    0        0 eth1
192.168.3.0     *               255.255.255.0   U     100    0        0 eth0
192.168.222.0   *               255.255.255.0   U     600    0        0 wlan0

Respuesta1

En Linux puedes ajustar las reglas de enrutamiento usando los comandos ip ruley ip route. Este último es un equivalente más avanzado del routecomando.

En su caso, puede obtener el comportamiento deseado al tener una tabla de enrutamiento separada donde la puerta de enlace predeterminada en wlan0la interfaz sea la única (o de todos modos la preferida) puerta de enlace predeterminada presente, y luego establecer una regla de enrutamiento que indique que todo el tráfico proveniente de la tun0interfaz debe usarse esta tabla de enrutamiento separada.

Esto se puede obtener, por ejemplo, mediante los dos comandos siguientes:

ip route add default via 192.168.222.1 table 100  # <-- 100 is an arbitrary number for the separate routing table
ip rule add iif tun0 table 100

mientras que para aclararlos, use:

ip rule del iif tun0 table 100
ip route flush table 100

Puede probar los comandos en vivo, después de establecer la VPN, y ver que todo funciona según lo previsto.

Entonces es posible que desee ejecutar esos comandos (o su mejor equivalente para su configuración general) cuando openvpnsea necesario. Para hacerlo, la forma más sencilla es colocar esos comandos en dos scripts (respectivamente) y luego llamarlos a través de OpenVPN route-upy route-pre-downganchos.

Dependiendo de cómo utilice realmente OpenVPN, deberá ejecutar openvpnespecificando --route-up script-that-adjusts-routing.shy --route-pre-down script-that-undoes-routing.sh(y posiblemente también --script-security 2) desde la línea de comando, o agregar estas configuraciones en el .conf archivo OpenVPN de su túnel.

Si ya tiene route-upscripts route-pre-down, entonces necesita agregar los comandos de ajuste a sus scripts preexistentes, y esto puede requerir cuidado adicional dependiendo de lo que hagan estos scripts.

información relacionada