Weiterleiten des gesamten Datenverkehrs über VPN unter Ubuntu Linux

13

Nachdem ich jetzt Stunden damit verbracht habe, Fehler zu beheben, potenzielle Lösungen auf dieser und anderen Websites zu durchsuchen, bin ich zurückgetreten, um den Rat meiner Besserwisser einzuholen. 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 erfolgreich über das VPN an eine beliebige Universitäts-IP weiterleiten. Abgesehen von diesen spezifischen IP-Bereichen kann ich jedoch keine Route beschwören, die den gesamten Netzwerkverkehr über das VPN erfolgreich 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 AKZEPTIEREN
iptables -A FORWARD -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 sie genau zu transkribieren.

Außerdem habe ich versucht, kleinere IP-Bereiche und bestimmte IPs ohne Erfolg weiterzuleiten. Ich bin mir nicht sicher, was falsch läuft, da das Ausmaß der Effekte, die ich beobachten konnte, Fehler bei der Namensauflösung und Fehler bei der Weiterleitung des Datenverkehrs über das VPN sind. Was mache ich hier falsch?

Bearbeiten-

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

Standard über 192.168.1.254 dev eth0 proto static 
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 beliebigen Datenverkehr über dieses VPN in MS Windows erfolgreich über den Cisco AnyConnect-Client mit Standardkonfiguration weitergeleitet. So sieht die Routing-Tabelle aus, wenn der AnyConnect-Client funktioniert (dies ist ein anderer Computer hinter demselben Router unter 192.168.1.254).

IPv4-Routentabelle
================================================== =========================
Aktive Routen:
Netzwerkziel-Netzmasken-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 On-Link 127.0.0.1 306
        127.0.0.1 255.255.255.255 On-Link 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 On-Link 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
================================================== =========================
Geschicklichkeit
quelle
Ich stelle mir vor, dass es klar sein wird, dass das Netzwerkrouting für mich ziemlich neu ist, daher würde ich mich über ein ziemlich hohes Maß an Ausführlichkeit bei den Antworten freuen.
Deftfyodor
1
Es wäre hilfreich, wenn Sie angeben könnten, ob Sie einen Client verwenden (anyconnect?), Und wenn Sie Ihre Routing-Tabelle veröffentlichen könnten, danke.
Marius Matutiae
Übrigens mit ip route.
user1686
2
Ja, bitte verwenden Sie keine veralteten Routing-Befehle: Verwenden Sie ip route show für die Routing-Tabelle. Veraltete Befehle verbergen einige der Komplexitäten, die auch bei VPNs möglich und hilfreich sind, geschweige denn bei VLANs, ...
MariusMatutiae
@grawity, @MariusMatutiae - Sicher, ich habe die Frage mit der Befehlsausgabe bearbeitet. Vielen Dank, dass Sie den ip routeBefehl erwähnt haben. Ich war noch nie darauf gestoßen.
Deftfyodor

Antworten:

3

Ihr lokales Netzwerk ist 192.168.1.0/24, wie in dieser Zeile in Ihrer Routing-Tabelle dargestellt:

 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 Standardrouter:

 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 Daten über Ihr lokales Gateway geleitet, 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  

Welches ist der Weg zu Ihrem VPN-Anbieter.

BEARBEITEN:

Ich hatte nicht bemerkt, dass die Routing-Tabelle einfach diejenige ist, die von Ihrem VPN ohne Ihr Eingreifen erhalten wird. Dies kann (indirekt) darauf hinweisen, dass Ihr Dienstanbieter bereit ist, nur den in Ihrer Tabelle explizit zulässigen Datenverkehr über die Schnittstelle tun0 weiterzuleiten, und möglicherweise weitere Schritte unternommen hat, um den gesamten anderen Datenverkehr zu blockieren. In diesem Fall sind Ihre Bemühungen erfolglos.

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

Zunächst müssen Sie herausfinden, ob es ein Gateway gibt, das bereit ist, Ihre Verbindung auf der anderen Seite zu akzeptieren, da wir dessen IP-Adresse benötigen. Ich werde Ihnen vier Methoden geben, um dies zu tun.

1) Versuchen Sie den folgenden Befehl, wenn der PC mit dem VPN verbunden ist:

   sudo dhclient -v tun0

Wenn alles gut geht, sollten Sie eine Antwort sehen, die diese Zeile enthält:

 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 gerade ziemlich durcheinander gebracht haben.

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

  ip neigh show

Sie sollten eine Liste der über das ARP-Protokoll kontaktierten PCs mit MAC- und IP-Adresse erhalten. 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 ist einer der aufgelisteten PCs, höchstwahrscheinlich der mit der Adresse, die auf .1 oder .254 endet, falls vorhanden.

4) Verwenden Sie den Befehl tcpdump:

  sudo tcpdump -n -i tun0

und sehen Sie sich die IP-Adressen an, die vom Befehl ausgegeben wurden.

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

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

  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.

Lassen Sie mich wiederholen: Da Ihr Provider über sein VPN nur Datenverkehr zu einigen ausgewählten IP-Adressen zugelassen hat, hat er möglicherweise zusätzliche Maßnahmen (= Firewall) ergriffen, um zu verhindern, dass ein intelligenter Benutzer seinen allgemeinen Datenverkehr über 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.

MariusMatutiae
quelle
Vielen Dank für die sehr ausführliche Antwort, aber in der zweiten Hälfte habe ich ein bisschen Schluckauf. die Ausgabe von ip addr show dev tun0Lesevorgängen 10: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1412 qdisc pfifo_fast state UNKNOWN group default qlen 500 link/none inet 192.168.128.193/24 brd 192.168.128.255 scope global tun0 valid_lft forever preferred_lft foreverohne zu beobachtende Peer-Adresse. Außerdem wurde die zuvor veröffentlichte Routing-Tabelle von mir überhaupt nicht geändert - sie wurde vollständig vom VPN-Client generiert.
Deftfyodor
@deftfyodor Bitte sehen Sie meine Bearbeitung.
Marius Matutiae
Mit dem Befehl tcpdump konnte ich das Gateway tatsächlich erkennen und den Standardverkehr dorthin leiten. Leider funktioniert es immer noch nur für die speziell bereitgestellten IP-Bereiche. Ich bin sicherlich geneigt zu glauben, dass es eine zusätzliche Sicherheitsmaßnahme gibt - ich habe jedoch überhaupt kein Problem damit, beliebigen Datenverkehr über dasselbe VPN in MS Windows mit dem AnyConnect-Client weiterzuleiten -, also muss die Geschichte sicherlich mehr enthalten.
Deftfyodor
@deftfyodor Können Sie überprüfen, ob sich Ihre Routing-Tabelle in Windos von der in Linux unterscheidet?
Marius Matutiae
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 weitergeleitet wird und das VPN-Gateway als Schnittstelle verwendet wird. Ich habe die Frage bearbeitet, um die Windows-Routing-Tabelle anzuzeigen.
Deftfyodor
3

Allen Ihren routeBefehlen fehlen Netzmasken, daher stimmen sie nur mit der spezifischen 0.0.0.0Adresse überein , nicht mit dem gesamten Internet. So ersetzen Sie 0.0.0.0mit 0.0.0.0/0in dem ersten Befehl , der Sie versuchen:

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

Es kann eine Einschränkung geben, bei der ich nicht sicher bin, ob Ihr VPN-Client sich selbst löst: Der Tunnelendpunkt muss vom Routing über das VPN ausgeschlossen werden, er muss über Ihre eth0Schnittstelle weitergeleitet werden. Wenn das Hinzufügen dieser Standardroute Ihr VPN unterbricht, fügen Sie eine bestimmte Route für Ihren VPN-Endpunkt hinzu:

ip route add <ENDPOINT>/32 dev eth0

Teun Vink
quelle
2
Ich denke, der zweite soll sein ip route, nein? Auch wenn es immer eine gute Idee ist, Netzmasken hinzuzufügen, scheint es , dass routebeim Hinzufügen von 0.0.0.0
user1686