не могу проложить IP-маршрут через VPN

не могу проложить IP-маршрут через VPN

Я пытаюсь запустить VPN. Я бы хотел, чтобы программы явно запрашивали интерфейс, а не маршрутизировали ВЕСЬ трафик, как с curl --interface.

curl --interface ppp0 ip.bsd-unix.netследует отправлять через VPN, но каким-то образом, используя tcpdumpили iftop,Я вижу, что трафик проходит через eth0, даже если исходный IP-адрес — 10.10.1.2. Вот мой 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

Некоторые IP-адреса скрыты. Второй добавляется xl2tp при запуске и создании интерфейса ppp0. 149.etc — это моя локальная сеть, а 10.etc — это мой VPN.


Кроме того, когда я ping -I ppp0 8.8.8.8вижу активность ppp0, я получаю ответы с более высоким значением мс, что говорит о том, что они проходят через VPN.

решение1

Я как бы предположил, что если исходный IP пакета совпадает с IP интерфейса, он будет использовать этот интерфейс. И если это не было неотъемлемым поведением IP, то мой второй маршрут сделал бы это возможным: часть srcмаршрута была для меня отвлекающим маневром.

Итак, мои программы привязываются к адресу ppp0, который устанавливает их исходный IP, верно? Я сделал то, что сказал @davidgo, и создал отдельную таблицу маршрутизации...

echo 200 custom | sudo tee -a /etc/iproute2/rt_tables

...затем добавил правило использования пользовательской таблицы для пакетов с этим исходным IP-адресом...

sudo ip rule add from 10.10.1.2 lookup custom

...и добавил правило в пользовательскую таблицу, чтобы использовать ppp0 для любого трафика, проходящего через шлюз ppp0.

sudo ip route add default via 10.10.1.1 dev ppp0 table custom

curl ip.bsd-unix.netдает мне мой домашний IP и curl --interface ppp0 ip.bsd-unix.netдает мне удаленный IP моего VPN. Это работает!

И все же мне интересно, почему ping все это время проходил через ppp0 корректно.

Связанный контент