
Estou tentando colocar uma VPN em execução. Gostaria que os programas solicitassem explicitamente a interface em vez de rotear TODO o tráfego, como acontece com curl --interface
.
curl --interface ppp0 ip.bsd-unix.net
deveria enviar através da VPN, mas de alguma forma, usando tcpdump
ou iftop
,Posso ver o tráfego passando pela eth0, mesmo quando o IP de origem é 10.10.1.2. Aqui está o meu ip route show
:
default via 149.x.y.z dev eth0
10.10.1.1 dev ppp0 proto kernel scope link src 10.10.1.2
149.x.y.128/25 dev eth0 proto kernel scope link src 149.x.y.172
Alguns IPs obscurecidos. O segundo é adicionado pelo xl2tp quando ele inicia e a interface ppp0 é criada. 149.etc é minha LAN e 10.etc é minha VPN.
Além disso, quando eu ping -I ppp0 8.8.8.8
posso ver a atividade do ppp0 e recebo respostas com ms mais altos, o que sugere que eles estão passando pela VPN.
Responder1
Eu meio que presumi que se o IP de origem de um pacote correspondesse ao de uma interface, ele usaria essa interface. E se esse não fosse o comportamento inerente do IP, então minha segunda rota teria feito isso acontecer: a src
parte da rota era uma pista falsa para mim.
Então, meus programas se vinculam ao endereço ppp0, que define o IP de origem, certo? Fiz o que @davidgo disse e criei uma tabela de roteamento separada...
echo 200 custom | sudo tee -a /etc/iproute2/rt_tables
... em seguida, adicionei uma regra para usar a tabela personalizada para pacotes que possuem esse IP de origem ...
sudo ip rule add from 10.10.1.2 lookup custom
...e adicionei uma regra à tabela personalizada para usar o ppp0 para qualquer tráfego obtido, passando pelo gateway do ppp0.
sudo ip route add default via 10.10.1.1 dev ppp0 table custom
curl ip.bsd-unix.net
me dá meu IP residencial e curl --interface ppp0 ip.bsd-unix.net
o IP remoto da minha VPN. Funciona!
Ainda assim, estou interessado em saber por que o ping passou pelo ppp0 corretamente o tempo todo.