
Ich versuche, ein VPN zum Laufen zu bringen. Ich möchte, dass Programme die Schnittstelle explizit anfordern, anstatt den GESAMTEN Verkehr umzuleiten, wie bei curl --interface
.
curl --interface ppp0 ip.bsd-unix.net
sollte über das VPN senden, aber irgendwie, mit tcpdump
oder iftop
,Ich sehe, dass der Datenverkehr stattdessen über eth0 läuft, selbst wenn die Quell-IP 10.10.1.2 ist.. Hier ist meins 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
Einige IPs sind verdeckt. Die zweite wird von xl2tp beim Start hinzugefügt und die ppp0-Schnittstelle erstellt. 149.etc ist mein LAN und 10.etc ist mein VPN.
Außerdem ping -I ppp0 8.8.8.8
kann ich beim Senden PPP0-Aktivität sehen und erhalte Antworten mit höherer ms-Zahl, was darauf schließen lässt, dass sie über das VPN laufen.
Antwort1
Ich bin irgendwie davon ausgegangen, dass, wenn die Quell-IP eines Pakets mit der einer Schnittstelle übereinstimmt, diese Schnittstelle verwendet wird. Und wenn das kein inhärentes IP-Verhalten wäre, dann hätte meine zweite Route das bewirkt: Dieser src
Teil der Route war für mich eine Ablenkung.
Meine Programme werden also an die ppp0-Adresse gebunden, die ihre Quell-IP festlegt, richtig? Ich habe getan, was @davidgo gesagt hat, und eine separate Routing-Tabelle erstellt ...
echo 200 custom | sudo tee -a /etc/iproute2/rt_tables
…dann wurde eine Regel hinzugefügt, um die benutzerdefinierte Tabelle für Pakete mit dieser Quell-IP zu verwenden …
sudo ip rule add from 10.10.1.2 lookup custom
... und der benutzerdefinierten Tabelle eine Regel hinzugefügt, um ppp0 für sämtlichen Datenverkehr zu verwenden, der durch das Gateway von ppp0 geht.
sudo ip route add default via 10.10.1.1 dev ppp0 table custom
curl ip.bsd-unix.net
gibt mir meine Heim-IP und curl --interface ppp0 ip.bsd-unix.net
die Remote-IP meines VPN. Es funktioniert!
Dennoch interessiert mich, warum der Ping die ganze Zeit über korrekt über ppp0 lief.