
Estoy intentando ejecutar una VPN. Me gustaría que los programas soliciten explícitamente la interfaz en lugar de enrutar TODO el tráfico, como con curl --interface
.
curl --interface ppp0 ip.bsd-unix.net
debería enviar a través de la VPN, pero de alguna manera, usando tcpdump
o iftop
,Puedo ver tráfico pasando por eth0, incluso cuando la IP de origen es 10.10.1.2. Aquí está mi 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
Algunas IP oscurecidas. El segundo lo agrega xl2tp cuando se inicia y se crea la interfaz ppp0. 149.etc es mi LAN y 10.etc es mi VPN.
Además, cuando hago ping -I ppp0 8.8.8.8
, puedo ver la actividad ppp0 y recibo respuestas con ms más altos, lo que sugeriría que están pasando por la VPN.
Respuesta1
En cierto modo supuse que si la IP de origen de un paquete coincide con la de una interfaz, usaría dicha interfaz. Y si ese no fuera un comportamiento inherente de IP, entonces mi segunda ruta habría hecho que eso sucediera: la src
parte de la ruta fue una pista falsa para mí.
Entonces, mis programas se vinculan a la dirección ppp0, que establece su IP de origen, ¿verdad? Hice lo que dijo @davidgo e hice una tabla de enrutamiento separada...
echo 200 custom | sudo tee -a /etc/iproute2/rt_tables
... luego agregó una regla para usar la tabla personalizada para paquetes que tienen esa IP de origen...
sudo ip rule add from 10.10.1.2 lookup custom
...y agregó una regla a la tabla personalizada para usar ppp0 para cualquier tráfico que reciba, pasando por la puerta de enlace de ppp0.
sudo ip route add default via 10.10.1.1 dev ppp0 table custom
curl ip.bsd-unix.net
me da la IP de mi casa y curl --interface ppp0 ip.bsd-unix.net
me da la IP remota de mi VPN. ¡Funciona!
Aún así, me interesa saber por qué el ping pasó ppp0 correctamente todo el tiempo.