VPN-Routing-Problem in Linux: Wie können Anwendungen, die nur an IP-Adressen gebunden sind, funktionieren?

3

Im Moment habe ich ein PPTP-VPN auf meinem entfernten Ubuntu-VPS eingerichtet. Ich möchte, dass bestimmte Anwendungen über das VPN auf das Internet zugreifen (ua rtorrent, irssi). Derzeit ist es so eingerichtet:

eth0 Link encap: Ethernet HWaddr 00: 16: 3e: 94: 38: ce             inet addr: 66.xxx.xxx.xxx Bcast: 66.xxx.xxx.xxx Maske: 255.255.255.0

eth1 Link encap: Ethernet HWaddr 00: 16: 3e: d7: 58: a1             inet addr: 10.2.0.111 Bcast: 10.255.255.255 Maske: 255.0.0.0

lo Link encap: Lokaler Loopback             inet addr: 127.0.0.1 Maske: 255.0.0.0

ppp0 Link encap: Point-to-Point-Protokoll             Inet Adr: 192.168.10.244 P-t-P: 192.168.9.1 Maske: 255.255.255.255

Im Wesentlichen ist die Art, wie ich dieses Problem manifestiert habe, so.

Wenn ich renne

curl --interface eth0 checkip.dyndns.com

Ich bekomme

<html><head><title>Current IP Check</title></head><body>Current IP Address: 66.xxx.xxx.xxx</body></html>

Und wenn ich renne

curl --interface ppp0 checkip.dyndns.com

Ich bekomme

<html><head><title>Current IP Check</title></head><body>Current IP Address: 95.xxx.xxx.xxx</body></html>

Welches ist richtig.

Allerdings wenn ich renne

curl --interface 192.168.10.244 checkip.dyndns.com

es mal raus und ich bekomme nichts. Das scheint keinen Sinn zu ergeben, da 192.168.10.244 die IP-Adresse von ppp0 ist, und es scheint mir nicht so, dass sie sich vom obigen Befehl unterscheiden sollte. Fehlt mir etwas? Wenn ich das in curl zum Laufen bringen kann, werde ich es in rtorrent und irssi zum Laufen bringen können, wie ich auch möchte. Gibt es gute Ansatzpunkte, um dieses Problem anzugehen?

BEARBEITEN: Behoben! So habe ich es gemacht.

Zuerst habe ich eine neue Routing-Tabelle erstellt:

# echo "200 vpn" >> /etc/iproute2/rt_tables

Dann erstellte ich eine Regel für Anforderungen, die von meiner ppp0-IP-Adresse abgerufen wurden, um aus dieser neuen Tabelle nachzuschlagen

# ip rule add from 192.168.10.244 table 200

Dann habe ich eine Regel in dieser Tabelle erstellt, um ppp0 zu verwenden.

# ip route add default dev ppp0 table 200

Es funktioniert perfekt! Wenn ich jetzt den zuvor fehlgeschlagenen curl-Befehl versuche:

# curl --interface 192.168.10.244 checkip.dyndns.com
<html><head><title>Current IP Check</title></head><body>Current IP Address: 95.xxx.xxx.xxx</body></html>
thatfunkymunki
quelle
Welche Befehle haben Sie für diese Konfiguration verwendet? Ich suche nach einer Lösung, konnte aber nichts finden, was funktioniert.
motto

Antworten:

1

Ihre Begründung ist falsch. Beim Binden an eine IP-Adresse wird nur die Quell-IP-Adresse ausgewählt. Es hat keine Auswirkung auf die Route, die Sie zum Ziel führen. Dies ist das, was Sie steuern möchten.

Um das zu tun, was Sie tun möchten, müssen Sie eine Form des Richtlinienroutings einrichten, das als quellenbasiertes Routing bezeichnet wird. Dazu werden normalerweise zwei Routingtabellen erstellt, eine für jede Verbindung, und die zu verwendende Routingtabelle basierend auf der lokalen Quell-IP-Adresse festgelegt. Sehen Sie eine der vielen wie man s auf Richtlinienrouting .

David Schwartz
quelle
Ich habe dies versucht und habe folgende Ausgabe: #echo 200 vpns & gt; & gt; / etc / iproute2 / rt_tables #ip rule add von 192.168.10.244 tabellen-vpns #ip route add default über 192.168.9.1 dev ppp0 table vpns RTNETLINK antwortet: Kein solcher Prozess
thatfunkymunki
ugh, habe versucht, es richtig aussehen zu lassen, aber im Grunde, wenn ich den Befehl "ip route add default via 192.168.9.1 dev ppp0 table vpns" durchführe, bekomme ich "RNETLINK-Antworten: Kein solcher Prozess". Ist das der falsche Befehl?
thatfunkymunki
Du meinst "Tisch 200", richtig? Routingtabellen sind nummeriert.
David Schwartz
Immer noch das gleiche Ergebnis. RTNETLINK antwortet: Kein solcher Prozess.
thatfunkymunki
Möglicherweise unterstützt Ihr VPS kein Richtlinienrouting.
David Schwartz