Leiten Sie den gesamten Datenverkehr über OpenVPN


39

Ja, diese Frage wurde hundert Mal gestellt, und ich habe überall gesucht, ohne Erfolg.

Der Titel sagt eigentlich schon alles.

Ich habe einen OpenVPN-Server (unter Ubuntu) und kann über meinen Client (Windows 8) eine Verbindung dazu herstellen ...

Das Problem beginnt, wenn ich versuche, den gesamten Datenverkehr über das VPN weiterzuleiten.

Ich habe die pushFlags in der server.conf hinzugefügt:

push "redirect-gateway def1"
push "dhcp-option DNS 8.8.8.8"

Wenn ich vom Client aus eine Verbindung herstelle, gibt der Client Folgendes aus:

Wed May 07 21:38:40 2014 SENT CONTROL [StretchVPN-CA]: 'PUSH_REQUEST' (status=1)
Wed May 07 21:38:41 2014 PUSH: Received control message: 'PUSH_REPLY,redirect-gateway def1,dhcp-option DNS 8.8.8.8,route-gateway <Remote Router IP>,ping 10,ping-restart 120,ifconfig 192.168.0.201 255.255.255.0'
Wed May 07 21:38:41 2014 OPTIONS IMPORT: timers and/or timeouts modified
Wed May 07 21:38:41 2014 OPTIONS IMPORT: --ifconfig/up options modified
Wed May 07 21:38:41 2014 OPTIONS IMPORT: route options modified
Wed May 07 21:38:41 2014 OPTIONS IMPORT: route-related options modified
Wed May 07 21:38:41 2014 OPTIONS IMPORT: --ip-win32 and/or --dhcp-option options modified
Wed May 07 21:38:41 2014 do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0
Wed May 07 21:38:41 2014 open_tun, tt->ipv6=0
Wed May 07 21:38:41 2014 TAP-WIN32 device [Local Area Connection 4] opened: \\.\Global\{1F145805-92FC-454E-8FD9-0A6017DD4AD1}.tap
Wed May 07 21:38:41 2014 TAP-Windows Driver Version 9.9
Wed May 07 21:38:41 2014 Notified TAP-Windows driver to set a DHCP IP/netmask of 192.168.0.201/255.255.255.0 on interface {1F145805-92FC-454E-8FD9-0A6017DD4AD1} [DHCP-serv: 192.168.0.0, lease-time: 31536000]
Wed May 07 21:38:41 2014 Successful ARP Flush on interface [35] {1F145805-92FC-454E-8FD9-0A6017DD4AD1}
Wed May 07 21:38:46 2014 TEST ROUTES: 1/1 succeeded len=0 ret=1 a=0 u/d=up
Wed May 07 21:38:46 2014 C:\WINDOWS\system32\route.exe ADD <Remote Router IP> MASK 255.255.255.255 172.20.10.1
Wed May 07 21:38:46 2014 ROUTE: CreateIpForwardEntry succeeded with dwForwardMetric1=25 and dwForwardType=4
Wed May 07 21:38:46 2014 Route addition via IPAPI succeeded [adaptive]
Wed May 07 21:38:46 2014 C:\WINDOWS\system32\route.exe ADD 0.0.0.0 MASK 128.0.0.0 192.168.0.3
Wed May 07 21:38:46 2014 ROUTE: CreateIpForwardEntry succeeded with dwForwardMetric1=30 and dwForwardType=4
Wed May 07 21:38:46 2014 Route addition via IPAPI succeeded [adaptive]
Wed May 07 21:38:46 2014 C:\WINDOWS\system32\route.exe ADD 128.0.0.0 MASK 128.0.0.0 192.168.0.3
Wed May 07 21:38:46 2014 ROUTE: CreateIpForwardEntry succeeded with dwForwardMetric1=30 and dwForwardType=4
Wed May 07 21:38:46 2014 Route addition via IPAPI succeeded [adaptive]
Wed May 07 21:38:46 2014 Initialization Sequence Completed

Ich habe versucht, die Flags auf der Client-Seite beim Öffnen der Verbindung zu verwenden:

openvpn --config "C:\Program Files\OpenVPN\config\client.ovpn" --redirect-gateway def1 --route-method exe

Aber wenn ich auf whatsmyip.org gehe, steht immer noch die IP-Adresse meiner Kunden.

Hat jemand dieses Problem gehabt und geschafft, es zu lösen?

Danke vielmals


Haben Sie versucht push "route 0.0.0.0 0.0.0.0"oder versucht , Routen zu verschieben? Vergessen Sie nicht die Route zurück in das VPN!
Lub

Ja das ist autmatically gemacht , wenn die Push „Redirect-Gateway def1“ verwendet wird ... Es fügt 0.0.0.0 Maske 127.0.0.0 und 127.0.0.0 Maske 127.0.0.0 (Überholmanöver die Standardroute , ohne das ein Löschen schon da)
Nur Glück wirklich

Ich mache mir Sorgen, wenn Sie den Client unter Windows als "Run As Administrator" ausführen! Dieses Problem kann auftreten, wenn Sie den OVPN-Windows-Client ohne Administrator ausführen.
Kousha

Antworten:


35

Ich habe dies mit einem OpenVPN-Server getestet und das Einrichten der Option "Redirect-Gateway def1" in der Client- und Serverkonfiguration funktioniert einwandfrei. Wenn ich auf whatismyip.org zugreife, sehe ich die IP meines OpenVPN-Servers. Unten ist die Client-Konfiguration, die ich verwende:

client
dev tun
proto udp
# THE IP OF THE REMOTE OPENVPN SERVER:
remote ip_address port
resolv-retry infinite
nobind
persist-key
persist-tun
# THE CSR FILE:
pkcs12 certificate.p12
ns-cert-type server
cipher AES-256-CBC
comp-lzo
redirect-gateway def1
verb 3

Ich habe auch mit angehängtem Redirect-Gateway die Option def1 auf den Befehl openvpn getestet und das gleiche Ergebnis erzielt. Die Serverkonfiguration ist:

port 1194
proto udp
dev tun

dh /etc/openvpn/easy-rsa/keys/dh1024.pem
ca /etc/openvpn/easy-rsa/keys/ca.crt
# ENSURE THE DOMAIN NAME/FILENAME IS CORRECT:
cert /etc/openvpn/easy-rsa/keys/cert.crt
key /etc/openvpn/easy-rsa/keys/cert.key

server 10.5.3.0  255.255.255.0
# YOUR LOCAL SERVER IP HERE:
client-config-dir ccd
route 10.5.3.0 255.255.255.0
ifconfig-pool-persist ipp.txt
cipher AES-256-CBC
comp-lzo
persist-key
persist-tun

status log/openvpn-status.log 5
status-version 2
log-append log/openvpn.log
verb 3  # verbose mode
management localhost port /etc/openvpn/management-password

# ROUTE THE CLIENT'S INTERNET ACCESS THROUGH THIS SERVER:
push "redirect-gateway def1"
push "remote-gateway vpn_server_ip"
push "dhcp-option DNS 8.8.8.8"
keepalive 10 60

Versuchte das heute ... Immer noch kein Glück. Ich stelle fest, dass Sie einen TUN-Adapter anstelle eines TAP-Adapters verwenden ... Ich werde es stattdessen versuchen und zurückmelden: D
Just Lucky Really

1
Okie, die Verwendung eines TUN-Adapters scheint zu funktionieren ... Obwohl die zuzuweisenden Routen mich ein wenig beunruhigen ... verwende ich 192.168.1.0/24 für das VPN-Netzwerk und 192.168.0.0/ 24 ist mein Server LAN. Also in meinem Serverkonfiguration, habe ich hinzugefügt route 192.168.1.0 255.255.255.0und push "route 192.168.0.0 255.255.255.0"aber mein Kunde keinen Zugriff bekommen auf andere Subnetze abgesehen von der es 192.168.1.0/24 Netz ... Ich werde ein wenig herumzustochern mehr
einfach Glück Wirklich

19

Vielleicht haben Sie vergessen, Ihr NAT zu ändern? Führen Sie diese 3 Befehle als root aus

Befehle:

iptables -I FORWARD -i tun0 -o eth0 \
         -s 10.8.0.0/24 -m conntrack --ctstate NEW -j ACCEPT

iptables -I FORWARD -m conntrack --ctstate RELATED,ESTABLISHED \
         -j ACCEPT

iptables -t nat -I POSTROUTING -o eth0 \
          -s 10.8.0.0/24 -j MASQUERADE

Bildbeschriftung:

  • tun0: Ihre virtuelle VPN-Netzwerkkarte
  • eth0: deine normale netzwerkkarte
  • 10.8.0.0: Ihr VPN-Netzwerk IP-Block

1
Dieser NAT-Änderungsschritt ist sehr wichtig. Ich könnte dieses Arbeiten gerade nicht erhalten, ohne über 3 Befehlen auszuführen.
Nitesh Kumar Anand

6
Beachten Sie, dass diese Befehle auf dem OpenVPN-Server und nicht auf dem Client ausgeführt werden müssen.
Kem Mason

1
Ich habe festgestellt, dass nur das Ändern der natTabelle auch auf meinem Server funktioniert.
Ginhing

1
Müssen wir die iptables-Regeln beibehalten, falls der openVPN-Server neu gestartet wird?
DWils

@DWils Ja, Sie müssen sie in ein Startskript einfügen. Überprüfen Sie diese Q & A: askubuntu.com/questions/270693/…
Arne

1

Nach langem Suchen nach der Antwort scheint es, als hätte ich das gelöst, vielleicht teilweise, aber zumindest sehr einfach:

Ich benutze Xubuntu 14.04 und OpenVPN-Paket aus der Hauptquelle. In Einstellungen> System> Netzwerk habe ich die vorinstallierte DNS-Adresse 127.0.1.1durch die von Google ersetzt. 8.8.8.8Jetzt kann ich den gesamten Datenverkehr über den VPN-Server sehen.

In der Tabelle von Wireshark fehlt eine Zeichenfolge wie DNS: Alle Daten werden wie TCP über einen verschlüsselten Kanal übertragen. Ich kann DHCP- und DNS-Datenverkehr sehen, wenn ich mir tun0(Notebooks intern) anschaue . Wenn ich den wlan0Datenverkehr (extern zwischen Notebook und WLAN-Router) untersuche, erhalte ich nur graue TCP-Pakete.

Ich denke, es passiert, weil die DNS-Abfrage bei der Dekodierung von Zeichen zu Zahlen nicht benötigt wird und wie ein gewöhnliches Datenpaket in einem gemeinsamen Stream abläuft.

Ich werde froh sein, Ihre Überlegungen zu kennen, es wird nicht überraschen, wenn ich völlig falsch liege


Ich habe vergessen: Diese Methode hat einen unbestreitbaren Vorteil - sie funktioniert auch dann, wenn ein VPN-Server kein DNS-Rerouting unterstützt.
Xrobot

Übrigens, wir könnten einen Trick machen: Wenn wir von Zeit zu Zeit falsche, sichtbare, unschuldige DNS-Anfragen senden, könnte dies indirekt eine Bestätigung unserer Loyalität gegenüber dem Großen Bruder sein.
Xrobot

1

Fügen Sie der Serverkonfigurationsdatei die folgende Anweisung hinzu:

push "redirect-gateway def1"

Wenn sich Ihre VPN-Einrichtung über ein drahtloses Netzwerk befindet, in dem sich alle Clients und der Server im selben drahtlosen Subnetz befinden, fügen Sie das lokale Flag hinzu:

push "redirect-gateway local def1"

Wenn Sie die Option "Redirect-Gateway" auf Clients übertragen, wird der gesamte IP-Netzwerkverkehr, der von Client-Computern ausgeht, über den OpenVPN-Server geleitet. Der Server muss so konfiguriert werden, dass er mit diesem Datenverkehr umgehen kann, z. B. indem er per NAT an das Internet oder über den HTTP-Proxy des Servers geleitet wird.

Unter Linux könnten Sie einen Befehl wie den folgenden verwenden, um den VPN-Client-Datenverkehr zum Internet zu NAT:

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

Dieser Befehl setzt voraus, dass das VPN-Subnetz 10.8.0.0/24 ist (der Server-Direktive in der OpenVPN-Serverkonfiguration entnommen) und dass die lokale Ethernet-Schnittstelle eth0 ist.

Wenn das Redirect-Gateway verwendet wird, leiten OpenVPN-Clients DNS-Abfragen über das VPN weiter, und der VPN-Server muss sie verarbeiten. Dies kann erreicht werden, indem eine DNS-Serveradresse an verbundene Clients gesendet wird, die ihre normalen DNS-Servereinstellungen während der Zeit, in der das VPN aktiv ist, ersetzen. Zum Beispiel:

push "dhcp-option DNS 10.8.0.1"

Windows-Clients (oder Nicht-Windows-Clients mit einigen zusätzlichen clientseitigen Skripten) werden so konfiguriert, dass 10.8.0.1 als DNS-Server verwendet wird. Als DNS-Serveradresse kann jede Adresse verwendet werden, die von Clients aus erreichbar ist.


0

Wenn Ihr OpenVPN-Client unter Windows 10 (oder ähnlichem) ausgeführt wird, müssen Sie auf ein anderes Problem achten, nämlich die verbindliche Reihenfolge der NICs. Die vorhandenen DNS-Servereinstellungen auf dem LAN- oder Wifi-Adapter haben möglicherweise Vorrang vor den DNS-Servereinstellungen für die Tunnelschnittstelle, sodass Windows weiterhin den ursprünglichen DNS-Server verwendet, obwohl alles aus OpenVPN-Sicht korrekt eingerichtet ist.

Sie können das Problem beheben, wie in diesem Microsoft-Forumsbeitrag beschrieben.

https://social.technet.microsoft.com/Forums/windowsserver/en-US/1cc5b647-6e51-482b-8998-ac5c3900938c/how-to-force-vpn-clients-to-use-the-dnsserver-from- ihr-vpn-adapter-nicht-der-dnsserver-von-ihrem? forum = winserverNIS



0

Ich hatte das gleiche Problem und fand heraus, dass die Serverkonfiguration bei Verwendung des PiVPN-Setup-Skripts für Open VPN die folgende Zeile enthält:

drücke "redirect-gateway def1 bypass-dhcp"

bereits. Auf dem IOS-Client wird alles automatisch durch den Tunnel geleitet (so steht es im Protokoll).

Auf dem Tunnelblick-Client müssen Sie diese Zeile in der client.ovpn-Zeile hinzufügen:

Redirect-Gateway def1 Bypass-DHCP

und es sollte perfekt funktionieren. Zumindest auf meinem Mac.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.