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 rule
y ip route
. Este último es un equivalente más avanzado del route
comando.
En su caso, puede obtener el comportamiento deseado al tener una tabla de enrutamiento separada donde la puerta de enlace predeterminada en wlan0
la 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 tun0
interfaz 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 openvpn
sea 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-up
y route-pre-down
ganchos.
Dependiendo de cómo utilice realmente OpenVPN, deberá ejecutar openvpn
especificando --route-up script-that-adjusts-routing.sh
y --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-up
scripts 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.