panguu
Goto Top

OpenVPN setzt zwei Default Gateways, muss immer manuell löschen

Hallo Forum,

ich nutze auf Windows7 den OpenVPN Client mit der standard OpenVPN GUI (http://openvpn.se). Wenn ich meine Verbindung zu dem VPN-Server herstelle, und bei mir auf dem Client in 'ner DOS-Box "route print" ausführe, dann sehe ich, dass mir zwei Routen gesetzt werden:

0.0.0.0 mask 128.0.0.0 und als Gateway die VPN-IP zum VPN-Server.
128.0.0.0 mask 128.0.0.0 und hier das gleiche.

Somit wird ja quasi alles was nicht in den anderen vorhandene Routen gefunden wird, über die VPN-Leitung geschickt. Das Resultat ist, dass wenn ich im Internet eine Seite browse, das Ganze über den Internetzugang der Remoteseite durchgeschleust wird. Ich will aber weiterhin meine Routen behalten.

Dazu öffne ich eine DOS-Box mit Admin-Rechten, und gebe ein

route del 0.0.0.0 mask 128.0.0.0
route del 128.0.0.0 mask 128.0.0.0

danach läuft alles wie es muss. Die folgenden Routen sind ja weiterhin aktiv und für das Arbeiten im Remote-VPN-Netz zuständig:

192.168.0.0 mask 255.255.255.0
192.168.5.0 mask 255.255.255.0
usw...

Nun würde ich diese Arbeit mir gerne ersparen, und das Löschen dieser zwei Routen automatisch nach dem erfolgreichen Verbinden durchführen. Wenn ich mein .ovpn config file betrachte, dann finde ich keinen Eintrag, der irgendwie auf Routen hinzufügen/löschen zeigt. Also vermute ich, dass mir diese zwei Standardrouten irgendwie vom Server übermittelt wurden, kann das sein?

meine connect.ovpn sieht so aus:

#OpenVPN Server conf
tls-client
client
dev tun
proto udp
tun-mtu 1400
remote <ip-des-remote-vpn> 1194
pkcs12 mein-schluessel.p12
cipher BF-CBC
verb 3
ns-cert-type server
tls-remote <ip-des-remote-vpn>


Kann mir jemand sagen, ob ich durch einen Eintrag in meiner clientseitigen .ovpn Configdatei diese Anpassung durchführen kann?

Content-Key: 182838

Url: https://administrator.de/contentid/182838

Printed on: April 26, 2024 at 08:04 o'clock

Member: aqui
aqui Mar 30, 2012, updated at Oct 18, 2012 at 16:50:29 (UTC)
Goto Top
Dein Fehler liegt zu 95% in der Server Konfig Datei ! (es fehlt dort das push route Kommando !!)
Halte dich genau an dieses Tutorial:
OpenVPN Server installieren auf pfSense Firewall, Mikrotik. DD-WRT oder GL.inet Router
was die Server Konfig Datei anbetrifft und dann funktioniert das auch sauber...auch min Win 7 !
Die OpenVPN Konfig ist unabhängig von der verwendeten Hardware !
Member: panguu
panguu Mar 30, 2012 at 14:18:16 (UTC)
Goto Top
Schade, ich hab nämlich keinen Zugriff auf den remote Server face-smile wie kann ich in meiner Config denn diese zwei Routen automatisch wieder löschen, damit das automatisch bei jedem VERBINDEN-KLICK durchgeführt wird? Geht mir nämlich auf die Nerven, ständig die DOS-Box zu öffnen und die zwei Routen zu löschen.
Member: mak-xxl
mak-xxl Mar 31, 2012 at 09:31:14 (UTC)
Goto Top
Moin panguu,

Zitat von @panguu:
... Wenn ich meine Verbindung zu dem VPN-Server herstelle ...

dann kannst Du dieses 'Herstellen' doch per Batch-Datei vornehmen, in der nach der Befehlszeile (evtl. mit 'start /wait [verzögertes Setzen der Routen!]...') für den Verbindungsaufbau die fraglichen Routen gelöscht werden? Solange Du nicht an die Serverkonfiguration herankommst ...

Freundliche Grüße von der Insel - Mario
Member: panguu
panguu Mar 31, 2012 at 09:38:32 (UTC)
Goto Top
Hi Mario,

es ist so. In der .ovpn Datei hier auf meinem Client habe ich bereits ganz am Ende reingeschrieben

up changeroutes.bat

Dadurch wird vom Skript aus die angegebene Datei ausgeführt (hier habe ich sie changeroutes.bat) benannt. In der changeroutes.bat, die im gleichen Verzeichnis wie meine Konfigurationsdatei leigt, habe ich meine Routeneinträge durchgeführt.

Das Problem was es noch gibt ist, dass die Routen zu löschen versucht werden, aber etwas zu früh. Der Server gibt mir die Routen ein paar Sekunden später mit, so erhalte ich sie als letztes face-sad wenn ich noch einen Befehl á-la

pause 5
up changeroutes.bat

oder

wait 5
up changeroutes.bat

verwenden könnte, würde es bestimmt funktionieren. Leider finde ich im OVPN keinen solchen Syntax. Weiß da jemand mehr?
Member: mak-xxl
mak-xxl Mar 31, 2012 at 09:46:41 (UTC)
Goto Top
Moin panguu,

in Deine Batchdatei <changeroutes.bat> baust Du eine Warteschleife etwa so ein:

@ping -n 5 localhost > NUL

Diese Zeile braucht ca. 5 Sekunden ('-n 5') zur Ausführung, danach geht es weiter mit dem nächsten Befehl.

Wenn unbedingt die neuesten Technologien (Win7) genutzt werden sollen:
timeout /T 5 [/NoBreak]

Freundliche Grüße von der Insel - Mario
Member: panguu
panguu Mar 31, 2012 at 10:34:14 (UTC)
Goto Top
Ha du wirst lachen. Ich hab gerade dasselbe gelesen auf diversen Seiten. Da wird dieser Ping-Workaround beschrieben. Danke auch dir für den Hinweis. Ich hab natürlich als erstes den timeout-Befehl probiert und in meiner Batch-Datei in der ersten Zeile (vor den zwei Route-Deletes) mit exakter Pfadangabe gesetzt.

C:\Windows\System32\timeout.exe /T 5
route delete 128.0.0.0 mask 128.0.0.0
route delete 0.0.0.0 mask 128.0.0.0


Auf der DOS-Box funktioniert der Timeout-Befehl, aber nicht über .ovpn. Da meckert Open-VPN mit

"Error Input Redirection is not supported, exiting the process immediately."

Daraufhin habe ich mir zusätzlich vom Windows 2003 Resource Kit die sleep.exe downgeloadet und erstmal im DOS-Fenster probiert. Funktioniert! Und dann habe ich meine Batch-Datei angepasst und statt den Timeout.exe Befehl die sleep.exe verwendet. Siehe da, OpenVPN hat's geschluckt, er führt tatsächlich die Wartezeit aus.

Leider erhalte ich die Routen vom Server erst danach, also bringt das Warten auch nix. So ein Mist!!! Wieso krieg ich vom Server zuallerletzt die Routen zugewiesen?

Meine Batchdatei:
C:\WINDOWS\system32\sleep.exe 10
C:\WINDOWS\system32\route.exe delete 128.0.0.0 mask 128.0.0.0
C:\WINDOWS\system32\route.exe delete 0.0.0.0 mask 128.0.0.0

Mein Log file sagt:
Sat Mar 31 12:27:11 2012 OpenVPN 2.2.2 Win32-MSVC++ [SSL] [LZO2] [PKCS11] built on Dec 15 2011
Sat Mar 31 12:27:11 2012 IMPORTANT: OpenVPN's default port number is now 1194, based on an official port number assignment by IANA. OpenVPN 2.0-beta16 and earlier used 5000 as the default port.
Sat Mar 31 12:27:11 2012 WARNING: Make sure you understand the semantics of --tls-remote before using it (see the man page).
Sat Mar 31 12:27:11 2012 NOTE: the current --script-security setting may allow this configuration to call user-defined scripts
Sat Mar 31 12:27:11 2012 NOTE: --script-security method='system' is deprecated due to the fact that passed parameters will be subject to shell expansion
Sat Mar 31 12:27:16 2012 WARNING: this configuration may cache passwords in memory -- use the auth-nocache option to prevent this
Sat Mar 31 12:27:16 2012 WARNING: normally if you use --mssfix and/or --fragment, you should also set --tun-mtu 1500 (currently it is 1400)
Sat Mar 31 12:27:16 2012 Control Channel MTU parms [ L:1441 D:138 EF:38 EB:0 ET:0 EL:0 ]
Sat Mar 31 12:27:16 2012 Socket Buffers: R=[8192->8192] S=[8192->8192]
Sat Mar 31 12:27:16 2012 Data Channel MTU parms [ L:1441 D:1441 EF:41 EB:4 ET:0 EL:0 ]
Sat Mar 31 12:27:16 2012 Local Options hash (VER=V4): '57657c3f'
Sat Mar 31 12:27:16 2012 Expected Remote Options hash (VER=V4): '778eeec5'
Sat Mar 31 12:27:16 2012 UDPv4 link local (bound): [undef]:1194
Sat Mar 31 12:27:16 2012 UDPv4 link remote: 333.333.333.333:1194
Sat Mar 31 12:27:16 2012 TLS Error: local/remote TLS keys are out of sync: 333.333.333.333:1194
Sat Mar 31 12:27:16 2012 TLS: Initial packet from 333.333.333.333:1194, sid=0c086715 cd1c0292
Sat Mar 31 12:27:16 2012 VERIFY OK: depth=1, /C=DE/ST=B/L=Blabla/O=IrgendEbbesBlabla/OU=IT/CN=IrgendEbbesBlabla_CA/emailAddress=admin@dontspam.please
Sat Mar 31 12:27:16 2012 VERIFY OK: nsCertType=SERVER
Sat Mar 31 12:27:16 2012 VERIFY X509NAME OK: /C=DE/ST=B/O=IrgendEbbesBlabla/OU=IT/CN=333.333.333.333
Sat Mar 31 12:27:16 2012 VERIFY OK: depth=0, /C=DE/ST=B/O=IrgendEbbesBlabla/OU=IT/CN=333.333.333.333
Sat Mar 31 12:27:17 2012 Data Channel Encrypt: Cipher 'BF-CBC' initialized with 128 bit key
Sat Mar 31 12:27:17 2012 Data Channel Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Sat Mar 31 12:27:17 2012 Data Channel Decrypt: Cipher 'BF-CBC' initialized with 128 bit key
Sat Mar 31 12:27:17 2012 Data Channel Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Sat Mar 31 12:27:17 2012 Control Channel: TLSv1, cipher TLSv1/SSLv3 DHE-RSA-AES256-SHA, 1024 bit RSA
Sat Mar 31 12:27:17 2012 [333.333.333.333] Peer Connection Initiated with 333.333.333.333:1194
Sat Mar 31 12:27:19 2012 SENT CONTROL [333.333.333.333]: 'PUSH_REQUEST' (status=1)
Sat Mar 31 12:27:19 2012 PUSH: Received control message: 'PUSH_REPLY,route 192.168.0.0 255.255.255.0,redirect-gateway def1,dhcp-option DOMAIN get-off-my.back,dhcp-option DNS 192.168.0.1,dhcp-option WINS 192.168.0.1,route 10.58.20.1,topology net30,ping 10,ping-restart 60,ifconfig 10.58.20.22 10.58.20.21'
Sat Mar 31 12:27:19 2012 OPTIONS IMPORT: timers and/or timeouts modified
Sat Mar 31 12:27:19 2012 OPTIONS IMPORT: --ifconfig/up options modified
Sat Mar 31 12:27:19 2012 OPTIONS IMPORT: route options modified
Sat Mar 31 12:27:19 2012 OPTIONS IMPORT: --ip-win32 and/or --dhcp-option options modified
Sat Mar 31 12:27:19 2012 ROUTE default_gateway=192.168.178.1
Sat Mar 31 12:27:19 2012 TAP-WIN32 device [OpenVPN-Adapter] opened: \\.\Global\{1E3BEEC4-ACC5-4A99-96D6-0E80D747BEF5}.tap
Sat Mar 31 12:27:19 2012 TAP-Win32 Driver Version 9.9
Sat Mar 31 12:27:19 2012 TAP-Win32 MTU=1500
Sat Mar 31 12:27:19 2012 Notified TAP-Win32 driver to set a DHCP IP/netmask of 10.58.20.22/255.255.255.252 on interface {1E3BEEC4-ACC5-4A99-96D6-0E80D747BEF5} [DHCP-serv: 10.58.20.21, lease-time: 31536000]
Sat Mar 31 12:27:19 2012 Successful ARP Flush on interface [16] {1E3BEEC4-ACC5-4A99-96D6-0E80D747BEF5}
Sat Mar 31 12:27:20 2012 routechange.bat OpenVPN-Adapter 1400 1441 10.58.20.22 10.58.20.21 init
C:\Program Files\OpenVPN\config>C:\WINDOWS\system32\sleep.exe 10
C:\Program Files\OpenVPN\config>C:\WINDOWS\system32\route.exe delete 128.0.0.0 mask 128.0.0.0
The route deletion failed: Element not found.
C:\Program Files\OpenVPN\config>C:\WINDOWS\system32\route.exe delete 0.0.0.0 mask 128.0.0.0
The route deletion failed: Element not found.
Sat Mar 31 12:27:35 2012 TEST ROUTES: 3/3 succeeded len=2 ret=1 a=0 u/d=up
Sat Mar 31 12:27:35 2012 C:\WINDOWS\system32\route.exe ADD 333.333.333.333 MASK 255.255.255.255 192.168.178.1
Sat Mar 31 12:27:35 2012 ROUTE: CreateIpForwardEntry succeeded with dwForwardMetric1=20 and dwForwardType=4
Sat Mar 31 12:27:35 2012 Route addition via IPAPI succeeded [adaptive]
Sat Mar 31 12:27:35 2012 C:\WINDOWS\system32\route.exe ADD 0.0.0.0 MASK 128.0.0.0 10.58.20.21
Sat Mar 31 12:27:35 2012 ROUTE: CreateIpForwardEntry succeeded with dwForwardMetric1=30 and dwForwardType=4
Sat Mar 31 12:27:35 2012 Route addition via IPAPI succeeded [adaptive]
Sat Mar 31 12:27:35 2012 C:\WINDOWS\system32\route.exe ADD 128.0.0.0 MASK 128.0.0.0 10.58.20.21
Sat Mar 31 12:27:35 2012 ROUTE: CreateIpForwardEntry succeeded with dwForwardMetric1=30 and dwForwardType=4
Sat Mar 31 12:27:35 2012 Route addition via IPAPI succeeded [adaptive]
Sat Mar 31 12:27:35 2012 C:\WINDOWS\system32\route.exe ADD 192.168.0.0 MASK 255.255.255.0 10.58.20.21
Sat Mar 31 12:27:35 2012 ROUTE: CreateIpForwardEntry succeeded with dwForwardMetric1=30 and dwForwardType=4
Sat Mar 31 12:27:35 2012 Route addition via IPAPI succeeded [adaptive]
Sat Mar 31 12:27:35 2012 C:\WINDOWS\system32\route.exe ADD 10.58.20.1 MASK 255.255.255.255 10.58.20.21
Sat Mar 31 12:27:35 2012 ROUTE: CreateIpForwardEntry succeeded with dwForwardMetric1=30 and dwForwardType=4
Sat Mar 31 12:27:35 2012 Route addition via IPAPI succeeded [adaptive]
Sat Mar 31 12:27:35 2012 Initialization Sequence Completed

Man sieht hier deutlich, dass meine Route Deletes nicht ausgeführt werden können, da die Routen noch nicht existieren. Die kommen erst später rein.
Member: mak-xxl
mak-xxl Mar 31, 2012 at 10:43:41 (UTC)
Goto Top
Moin panguu,

wegen genau dieser Misere kam auch mein ursprünglicher Vorschlag, den Start von openvpn in eine Batch auzulagern, weil der openvpn-Start- und Konfigurationsprozess dann abgeschlossen ist, bevor weitere Befehle abgearbeitet werden. Wenn Du im Config-File per 'up' einen Batch rufst, ist genau der o.a. Prozess noch nicht abgeschlossen (das wird er erst, nachdem die gerufene Batch beendet ist), also der Eintrag der Routen noch gar nicht vorgenommen - siehe dazu die von Dir gepostete Log-Datei.
Das Warten ist u.U. trotzdem notwendig, weil der Server einige Zeit für das Verteilen der Routen auf die Clients braucht.
Freundliche Grüße von der Insel - Mario
Member: panguu
panguu Apr 01, 2012 at 13:21:38 (UTC)
Goto Top
Na gut,ich kanns ja so machen. Ich müsste halt mal schauen, wie ich die OpenVPN GUI aufrufe mit meiner config-Datei. Das schreib ich in eine Batchdatei und danach ruf ich meine routes-delete auf.

Ist zwar keine schöne kosmetische Lösung, aber hauptsache effektiv. Ich dachte evtl. gäbe es einen bestimmten Syntax der das erledigt,aber ok face-smile danke für das feedback.
Member: mak-xxl
mak-xxl Apr 01, 2012 at 15:55:22 (UTC)
Goto Top
Moin panguu,

so etwa:

@echo off
openvpn.exe --config meineconfig.ovpn  :: notfalls 2x mit Pfad
ping -n 5 localhost > NUL
route del 0.0.0.0 mask 128.0.0.0
route del 128.0.0.0 mask 128.0.0.0

Eine Batch ist immer schön ... face-wink

Schönen Sonntag noch und freundliche Grüße von der Insel - Mario
Member: panguu
panguu Apr 01, 2012 at 16:49:06 (UTC)
Goto Top
Hi und danke für deine Batch, das habe ich schon versucht. Es ist folgendes:

ich wollte ja ursprünglich eine GUI haben, und diese OpenVPN GUI war echt praktisch. Da läuft ein Icon unten rechts im Tray, und ich kann per Mausklick die Verbindung herstellen oder trennen. Wenn ich in meiner Batch diese GUI Tool verwende klappt es selbst dann nicht. Warum? Ganz einfach: ich hab mir 'ne batch geschrieben, indem ich erstmal das Programm aufrufe und dabei mein COnfig File starte:

openvpn-gui-1.0.3.exe --connect meinconfigfile.ovpn --config_dir mein_config_dir und soweiter ...
route delete bla blabla

den genauen Syntax kann man sich mit dem Aufruf von "openvpn-gui-1.0.3.exe --help" anzeigen lassen. Was passiert? Verbindung wird hergestellt, aber es kommt nicht zur nächsten Zeile der Batch, warum? Weil der Prozess openvpn-gui-1.0.3.exe ja noch aktiv ist. Ich kann mich aus DOS-Zeiten ncoh erinnern, da gabs doch den Befehl "call". Ich könnte jetzt natürlich mit call den einen Prozess aufrufen, danach mit sleep 10 Sekunden warten, und dann die Routen löschen. Ist ja aber mal extrem um zig Ecken konfiguriert und ich bin kein Freund solcher Lösungen.

Bei deinem Beispiel (was ich auch schon probiert habe) würde natürlich die Verbindung hergestellt, allerdings habe ich ja dann gar keine GUI. Ich wollte aber ursprünglich eine GUI haben, da ich jederzeit den Status erkennen kann. Manchmal fällt z.B. die Verbindung (aus welchen Gründen auch immer) und ich sehe sofort anhand der Farben (grün, gelb, rot) was nicht stimmt.

Nur mit dem command-Tool "openvpn" würde es natürlich funzen. Hmm... vielleicht schau ich mir noch andere GUI Tools an. Wenn jemand noch 'nen Tip parat hat, bin ich ganz Ohr.

Schönen Sonntag noch.