Eu tenho um computador com duas interfaces eth e uma interface wlan. Ele também está conectado a uma VPN (openvpn), portanto também possui uma interface tun0. Agora, gostaria de ter certeza de que todo o tráfego VPN seja enviado usando a interface wlan, e não pela Ethernet. Por padrão, ele é enviado pela eth1, pelo que posso ver na execução do iftop
. Minha tabela de roteamento está abaixo.
$ 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
Responder1
No Linux você pode ajustar as regras de roteamento usando comandos ip rule
e ip route
. Este último é um equivalente mais avançado para o route
comando.
No seu caso, você pode obter o comportamento desejado tendo uma tabela de roteamento separada, onde o gateway padrão na wlan0
interface é o único (ou de qualquer forma preferido) gateway padrão presente e, em seguida, definir uma regra de roteamento informando que todo o tráfego proveniente da tun0
interface deve ser usado esta tabela de roteamento separada.
Isso pode ser obtido, por exemplo, por meio dos dois comandos a seguir:
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
enquanto para esclarecê-los, use:
ip rule del iif tun0 table 100
ip route flush table 100
Você pode testar os comandos ao vivo, após estabelecer a VPN, e ver se tudo funciona conforme o esperado.
Então você pode querer que esses comandos (ou seu melhor equivalente para sua configuração geral) sejam executados quando openvpn
necessário. Para fazer isso, a maneira mais simples é colocar esses comandos em dois scripts (respectivamente) e depois chamá-los por meio de ganchos route-up
e OpenVPN route-pre-down
.
Dependendo de como você realmente usa o OpenVPN, você precisa executar openvpn
a especificação --route-up script-that-adjusts-routing.sh
e --route-pre-down script-that-undoes-routing.sh
(e possivelmente também --script-security 2
) na linha de comando ou adicionar essas configurações no .conf
arquivo OpenVPN do seu túnel.
Se você já possui route-up
scripts route-pre-down
, será necessário adicionar os comandos de ajuste aos scripts pré-existentes, e isso pode exigir cuidados adicionais dependendo do que esses scripts fazem.