Estou tentando obter minha tabela de roteamento para rotear todo o tráfego de saída através do tun1, mas ainda ter acesso ao servidor via openvpn (tun0). A primeira coisa que eu tentei foi rotear 0.0.0.0/0 como gateway padrão, mas isso (obviamente) quebrará o ping / vpn etc no eth0. A próxima coisa que eu tentei foi criar uma própria tabela de rotas para a eth0:
regra ip:
32764: from all to (PUBLIC EXTERNAL IP) lookup eth0
32765: from (PUBLIC EXTERNAL IP) lookup eth0
32766: from all lookup main
32767: from all lookup default
ip route mostrar tabela eth0:
default via (GW .1) dev eth0
(EXTERNAL PUBLIC IP)/24 dev eth0 scope link src (EXTERNAL PUBLIC IP)
que foi um sucesso. Agora posso fazer ping / login via vpn etc através de eth0 sem uma rota padrão passando por eth0.
Sem um gateway padrão, tive que adicionar meu provedor tun1 manualmente.
regra ip:
32757: from all to 80.67.8.220 lookup eth0
32758: from 80.67.8.220 lookup eth0
Até aí tudo bem, eu posso conectar com o vpn (tun1 aparece como uma interface etc). Que executa este script de roteamento uma vez conectado:
ip route flush table tun1
ip route add default via $route_vpn_gateway dev $dev table tun1
ip rule add from $ifconfig_local/32 table tun1
ip rule add to $ifconfig_local/32 table tun1
ip route flush cache
Eu posso pingar o provedor através do ip virtual, mas se eu adicionar 0.0.0.0/0 via tun1 e tentar pingar google.com, o tempo limite de ping.
rota ip:
0.0.0.0/0 via IP RECEIVED FROM PROVIDER dev tun1
10.254.254.0/24 via 10.254.254.2 dev tun0
10.254.254.2 dev tun0 proto kernel scope link src 10.254.254.1
(PUBLIC EXTERNAL IP)/24 dev eth0 proto kernel scope link src (PUBLIC EXTERNAL IP)
cat / etc / iproute2 / rt_tables:
23 tun1
40 eth0