Routing des gesamten Datenverkehrs über VPN unter Ubuntu Linux

43031
deftfyodor

Nachdem ich jetzt stundenlang nach Fehlern gesucht und mögliche Lösungen auf dieser und anderen Seite durchforstet habe, bin ich zurückgetreten, um den Rat meiner Kunden zu erbitten. Ich arbeite daran, den gesamten Netzwerkverkehr auf einer Ubuntu-Instanz über ein Cisco VPN an einer Universität zu leiten. Mit dem integrierten Netzwerkmanager oder vpnc kann ich erfolgreich eine Verbindung zum VPN herstellen und den Datenverkehr an eine beliebige IP der Universität über das VPN weiterleiten. Abgesehen von diesen spezifischen IP-Bereichen kann ich jedoch anscheinend keine Route beschwören, die den gesamten Netzwerkverkehr über das VPN abbildet.

Bisher habe ich versucht:

route add -net 0.0.0.0 gw homeportal dev tun0 
route add -net 0.0.0.0 tun0 
route add -net 0.0.0.0 gw 128.122.252.77 dev tun0 
route add -net 0.0.0.0 gw 128.122.252.77 dev eth0 
iptables -A FORWARD -o tun0 -j ACCEPT iptables -A VORWÄRTS -i tun0 -j AKZEPTIEREN iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE 

Und viele andere dumme, unwirksame Dinge, an die ich mich nicht gut genug erinnern kann, um genau abschreiben zu können.

Darüber hinaus habe ich versucht, kleinere IP-Bereiche und bestimmte IPs zu routen, und zwar jeweils ohne Erfolg. Ich bin nicht wirklich sicher, was falsch läuft, da das Ausmaß der Auswirkungen, die ich beobachten konnte, Fehler bei der Namensauflösung und Fehler beim Routen des Datenverkehrs über das VPN sind. Was mache ich hier falsch?

Bearbeiten-

Hier ist die Ausgabe von ip route shownach dem Start der VPN-Verbindung mit VPNC:

Voreinstellung via 192.168.1.254 dev eth0 proto statisch  10.0.0.0/8 dev tun0 scope link  91.230.41.0/24 dev tun0 scope link  128.122.0.0/16 dev tun0 scope link  128.122.252.68 über 192.168.1.254 dev eth0 src 192.168.1.32  128.122.253.46 dev tun0 scope link  128.122.253.79 dev tun0 scope link  172.16.0.0/12 dev tun0 scope link  192.168.0.0/16 dev tun0 scope link  192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.32 metrik 1  193.175.54.0/24 dev tun0 scope link  193.205.158.0/25 dev tun0 scope link  193.206.104.0/24 dev tun0 scope link  195.113.94.0/24 dev tun0 scope link  203.126.200.0/24 dev tun0 scope link  203.174.165.128/25 dev tun0 scope link  212.219.93.0/24 dev tun0 scope link  216.165.0.0/17 dev tun0 scope link 

Mehr Informationen-

Ich habe in MS Windows beliebig viel Verkehr über dieses VPN über den Cisco AnyConnect-Client mit der Standardkonfiguration erfolgreich weitergeleitet. So sieht die Routing-Tabelle aus, wenn der AnyConnect-Client funktioniert (dies ist ein anderer Computer hinter dem gleichen Router bei 192.168.1.254).

IPv4-Routentabelle ================================================== =========================== Aktive Routen: Netzwerk-Zielnetzmaske Gateway-Schnittstellenmetrik 0.0.0.0 0.0.0.0 192.168.1.254 192.168.1.13 30 10.0.0.0 255.0.0.0 192.168.128.1 192.168.128.197 2 91.230.41.0 255.255.255.0 192.168.128.1 192.168.128.197 2 127.0.0.0 255.0.0.0 Auf dem Link 127.0.0.1 306 127.0.0.1 255.255.255.255 Auf der Verbindung 127.0.0.1 306 127.255.255.255 255.255.255.255 On-Link 127.0.0.1 306 128.122.0.0 255.255.0.0 192.168.128.1 192.168.128.197 2 128.122.252.68 255.255.255.255 192.168.1.254 192.168.1.13 31 172.16.0.0 255.240.0.0 192.168.128.1 192.168.128.197 2 192.168.0.0 255.255.0.0 192.168.128.1 192.168.128.197 2 192.168.1.0 255.255.255.0 On-Link 192.168.1.13 286 192.168.1.13 255.255.255.255 On-Link 192.168.1.13 286 192.168.1.254 255.255.255.255 On-Link 192.168.1.13 31 192.168.1.255 255.255.255.255 On-Link 192.168.1.13 286 192.168.31.0 255.255.255.0 On-Link 192.168.31.1 276 192.168.31.1 255.255.255.255 On-Link 192.168.31.1 276 192.168.31.255 255.255.255.255 On-Link 192.168.31.1 276 192.168.128.0 255.255.255.0 On-Link 192.168.128.197 257 192.168.128.197 255.255.255.255 On-Link 192.168.128.197 257 192.168.128.255 255.255.255.255 On-Link 192.168.128.197 257 192.168.203.0 255.255.255.0 On-Link 192.168.203.1 276 192.168.203.1 255.255.255.255 On-Link 192.168.203.1 276 192.168.203.255 255.255.255.255 On-Link 192.168.203.1 276 193.175.54.0 255.255.255.0 192.168.128.1 192.168.128.197 2 193.205.158.0 255.255.255.128 192.168.128.1 192.168.128.197 2 193.206.104.0 255.255.255.0 192.168.128.1 192.168.128.197 2 195.113.94.0 255.255.255.0 192.168.128.1 192.168.128.197 2 203.126.200.0 255.255.255.0 192.168.128.1 192.168.128.197 2 203.174.165.128 255.255.255.128 192.168.128.1 192.168.128.197 2 212.219.93.0 255.255.255.0 192.168.128.1 192.168.128.197 2 216.165.0.0 255.255.128.0 192.168.128.1 192.168.128.197 2 224.0.0.0 240.0.0.0 Auf der Verbindung 127.0.0.1 306 224.0.0.0 240.0.0.0 On-Link 192.168.1.13 286 224.0.0.0 240.0.0.0 On-Link 192.168.203.1 276 224.0.0.0 240.0.0.0 On-Link 192.168.31.1 276 224.0.0.0 240.0.0.0 On-Link 192.168.128.197 10000 255.255.255.255 255.255.255.255 On-Link 127.0.0.1 306 255.255.255.255 255.255.255.255 On-Link 192.168.1.13 286 255.255.255.255 255.255.255.255 On-Link 192.168.203.1 276 255.255.255.255 255.255.255.255 On-Link 192.168.31.1 276 255.255.255.255 255.255.255.255 On-Link 192.168.128.197 10000 ================================================== =========================== 
9
Ich kann mir vorstellen, dass das Routing von Netzwerken für mich ziemlich neu ist, daher würde ich mich über ein ziemlich hohes Maß an Ausführlichkeit bei den Antworten freuen. deftfyodor vor 9 Jahren 0
Es wäre hilfreich, wenn Sie angeben könnten, ob Sie einen Client verwenden (anyconnect?), Und wenn Sie Ihre Routing-Tabelle posten könnten, vielen Dank. MariusMatutiae vor 9 Jahren 1
Übrigens: Verwenden Sie "ip route". grawity vor 9 Jahren 0
Ja, bitte verwenden Sie keine veralteten Routing-Befehle: Verwenden Sie für die Routing-Tabelle ** ip route show **. Veraltete Befehle verbergen einige der Komplexitäten, die auch bei VPNs möglich und hilfreich sind, ganz zu schweigen von VLANs, ... MariusMatutiae vor 9 Jahren 2
@grawity, @MariusMatutiae - Sicher, ich habe die Frage mit der Befehlsausgabe bearbeitet. Vielen Dank, dass Sie den Befehl "ip route" erwähnt haben. Ich war noch nie darauf gestoßen. deftfyodor vor 9 Jahren 0

2 Antworten auf die Frage

2
Teun Vink

Bei allen Ihren routeBefehlen fehlen Netzmasken, daher stimmen sie nur mit der spezifischen 0.0.0.0Adresse überein, nicht mit dem gesamten Internet. Ersetzen Sie also 0.0.0.0mit 0.0.0.0/0dem ersten Befehl, den Sie versucht haben:

ip route add -net 0.0.0.0/0 gw homeportal dev tun0

Es gibt möglicherweise eine Einschränkung, bei der ich mir nicht sicher bin, ob sich Ihr VPN-Client von alleine löst: Der Tunnelendpunkt muss von der Weiterleitung über das VPN ausgeschlossen werden, er muss über Ihre eth0Schnittstelle geroutet werden. Wenn das Hinzufügen dieser Standardroute das VPN unterbricht, fügen Sie eine bestimmte Route für Ihren VPN-Endpunkt hinzu:

ip route add <ENDPOINT>/32 dev eth0

Ich denke, der zweite soll "ip route" sein, nein? Das Hinzufügen von Netzmasken ist zwar immer eine gute Idee, aber _seems_, dass "route" beim Hinzufügen von 0.0.0.0 / 0 annimmt grawity vor 9 Jahren 2
1
MariusMatutiae

Ihr lokales Netzwerk ist 192.168.1.0/24, wie in dieser Zeile in Ihrer Routingtabelle gezeigt:

 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.32 metric 1 

Ihr VPN-Netzwerk ist 10.0.0.0/8, wie in dieser Zeile dargestellt:

 10.0.0.0/8 dev tun0 scope link 

Derzeit ist Ihr Standard-Router:

 default via 192.168.1.254 dev eth0 proto static 

Das ist natürlich das, was Sie nicht wollen, weil es zu Ihrem lokalen LAN gehört: somit werden alle Ihre Sachen über Ihr lokales Gateway geroutet, als ob das VPN nicht vorhanden wäre.

 You do have however, the all-important statement  128.122.252.68 via 192.168.1.254 dev eth0 src 192.168.1.32  

Dies ist der Weg zu Ihrem VPN-Provider.

BEARBEITEN:

Ich hatte nicht gemerkt, dass die Routingtabelle einfach diejenige ist, die von Ihrem VPN ohne Ihren Eingriff abgerufen wird. Dies kann (indirekt) darauf hinweisen, dass Ihr Dienstanbieter bereit ist, nur den in Ihrer Tabelle ausdrücklich zugelassenen Datenverkehr über die Schnittstelle tun0 weiterzuleiten, und weitere Schritte unternommen hat, um den anderen Datenverkehr zu blockieren. In diesem Fall sind Ihre Bemühungen vergeblich.

Vorausgesetzt jedoch, dass Ihr Provider bereit ist, Ihren gesamten Datenverkehr weiterzuleiten, müssen Sie Folgendes tun.

Zuerst müssen Sie herausfinden, ob ein Gateway bereit ist, Ihre Verbindung auf der anderen Seite anzunehmen, da wir seine IP-Adresse benötigen. Ich werde Ihnen vier Methoden dafür geben.

1) Wenn der PC mit dem VPN verbunden ist, versuchen Sie den folgenden Befehl:

 sudo dhclient -v tun0 

Wenn alles gut geht, sollten Sie eine Antwort mit dieser Zeile sehen:

 DHCPOFFER of a.b.c.d from x.y.w.z 

xywz ist die IP-Adresse des lokalen Gateways. Möglicherweise müssen Sie Ihr VPN nach diesem Test herunterfahren und möglicherweise sogar Ihren PC neu starten, da wir die Routing-Tabelle ziemlich durcheinander gebracht haben.

2) Alternativ können Sie versuchen, zu einer der zulässigen Sites zu navigieren (die in Ihrer Routing-Tabelle als durch die tun0- Schnittstelle gehend angezeigt werden) und geben dann den folgenden Befehl aus:

 ip neigh show 

Sie sollten eine Liste der PCs erhalten, die über das ARP-Protokoll kontaktiert werden, mit MAC- und IP-Adresse. höchstwahrscheinlich erhalten Sie entweder keine oder eine Antwort. Wenn Sie eine einzige Antwort erhalten, ist dies Ihr Router.

3) Wenn Sie keine solche Antwort erhalten, können Sie es mit versuchen

 sudo nmap -sn 10.0.0.0/8 

(was sehr langsam sein wird). Ihr Gateway wird eines der aufgelisteten PCs sein, höchstwahrscheinlich das mit der Adresse, die auf .1 oder .254 endet, sofern eine solche vorhanden ist.

4) Verwenden Sie den Befehl tcpdump:

 sudo tcpdump -n -i tun0 

und sehen Sie die IP-Adressen, die der Befehl ausgibt.

Wenn Sie auf diesen Test auch keine richtige Antwort erhalten, bedeutet dies, dass jemand die Schrauben in seinem Netzwerk wirklich festgezogen hat.

Aber lassen Sie uns optimistisch sein und nehmen Sie an, Sie haben jetzt eine Kandidaten-IP-Adresse xwyz für den Remote-Router. Sie müssen das Standard-Gateway (als sudo!) Löschen:

 ip route del default via 192.168.1.254 

und füge das Neue hinzu:

 ip route add default via x.w.y.z 

und versuchen zu navigieren.

Ich sage es noch einmal: Da Ihr Provider über sein VPN nur Verkehr zu wenigen ausgewählten IP-Adressen zulässt, kann er möglicherweise zusätzliche Maßnahmen (= Firewall) ergriffen haben, um zu verhindern, dass ein intelligenter Benutzer seinen generischen Datenverkehr durch sein VPN erzwingt. In diesem Fall können Sie nichts tun. Wenn dies nicht der Fall ist, sollten die oben genannten Schritte Ihnen helfen, eine Lösung zu finden.

Vielen Dank für die sehr ausführliche Antwort, obwohl ich in die zweite Hälfte eintrete, erlebe ich ein bisschen einen Schluckauf. Die Ausgabe von "ip addr show dev tun0" lautet "10: tun0:".mtu 1412 qdisc pfifo_fast state UNKNOWN-Gruppenvorgabe qlen 500 link / none inet 192.168.128.193/24 brd 192.168.128.255 Gültigkeitsbereich global tun0 valid_lft für immer Preferred_lft für immer, wobei keine Peer-Adresse zu beachten ist. Darüber hinaus wurde die zuvor veröffentlichte Routing-Tabelle von mir überhaupt nicht geändert - sie wurde vollständig vom VPN-Client generiert. deftfyodor vor 9 Jahren 0
@deftfyodor Bitte sehen Sie meine Bearbeitung. MariusMatutiae vor 9 Jahren 0
Mit dem Befehl tcpdump konnte ich das Gateway tatsächlich unterscheiden und den Standardverkehr dorthin leiten. Leider funktioniert es immer noch nur für die speziell bereitgestellten IP-Bereiche. Ich bin sicher geneigt zu glauben, dass es eine zusätzliche Sicherheitsmaßnahme gibt - allerdings habe ich überhaupt kein Problem damit, beliebigen Verkehr über dasselbe VPN in MS Windows mit dem AnyConnect-Client zu routen - daher muss es sicher mehr sein. deftfyodor vor 9 Jahren 0
@deftfyodor Können Sie überprüfen, ob sich Ihre Routing-Tabelle in Windos von der in Linux unterscheidet? MariusMatutiae vor 9 Jahren 0
Es ist im Allgemeinen ähnlich, obwohl es einige Elemente gibt, die sich unterscheiden. Insbesondere ist 0.0.0.0 so eingestellt, dass es über meinen Netzwerkrouter als Gateway geleitet wird, wobei das VPN-Gateway als Schnittstelle dient. Ich habe die Frage bearbeitet, um die Windows-Routingtabelle anzuzeigen. deftfyodor vor 9 Jahren 0
@deftfyodor Nachdem Sie Ihre Windows-Routingtabelle gesehen haben, kann ich nicht mehr sehen, wie Sie von Ihrem Windows-Computer aus über das VPN auf beliebige IP-Adressen zugreifen können. Das Standardgateway ist das Heimgateway. Sie können dies noch einmal überprüfen, indem Sie versuchen, die URLs von Websites wie * whatismyipaddress.com *, * whatismyip.com * usw. zu laden, und prüfen, ob es einen Unterschied zwischen den Windows- und Linux-Computern gibt. Nur um alle Basen abzudecken: Wie lautet die IP-Adresse von tun0 unter Linux? Verwenden Sie * ip addr show dev tun0 *, pls. MariusMatutiae vor 9 Jahren 0