Como rotear todo o tráfego VPN através de uma interface de hardware específica?

Como rotear todo o tráfego VPN através de uma interface de hardware específica?

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 rulee ip route. Este último é um equivalente mais avançado para o routecomando.

No seu caso, você pode obter o comportamento desejado tendo uma tabela de roteamento separada, onde o gateway padrão na wlan0interface é 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 tun0interface 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 openvpnnecessário. Para fazer isso, a maneira mais simples é colocar esses comandos em dois scripts (respectivamente) e depois chamá-los por meio de ganchos route-upe OpenVPN route-pre-down.

Dependendo de como você realmente usa o OpenVPN, você precisa executar openvpna especificação --route-up script-that-adjusts-routing.she --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-upscripts 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.

informação relacionada