OpenVPN verbindet, routet aber normal weiter
Ich habe auf meinem debian Server OpenVPN eingerichtet. Als Client kommt die OpenVPN Connect APP für Android zum Einsatz.
Für die Einrichtung bin ich (VPN Anfänger) einer Anleitung gefolgt. Wenn ich in der APP die VPN Verbindung starte, wird in der Statuszeile das Schlüssel Symbol angezeigt; auf dem Server sehe ich in der /etc/openvpn/openvpn-status.log auch, dass der Client verbunden ist.
Was mich nun etwas verwirrt:
1. Der Client ist für andere Sites (z. B. http://www.utrace.de/) weiterhin mit seiner Original IP sichtbar, nicht wie von mir erwartet mit der des Servers.
2. Eine Traceroute APP zeigt keinen Unterschied, ob VPN verbunden ist oder nicht. Die Route ist jeweils die gleiche, die IP meines VPN-Servers taucht darin nicht auf.
Wo liegt mein Denkfehler, was habe ich falsch konfiguriert?
debian Server: OpenVPN server.conf
Android client: OpenVPN client.ovpn (statt "example.net" steht bei remote natürlich die echte Domain)
debian Server: iptables Regeln
Für die Einrichtung bin ich (VPN Anfänger) einer Anleitung gefolgt. Wenn ich in der APP die VPN Verbindung starte, wird in der Statuszeile das Schlüssel Symbol angezeigt; auf dem Server sehe ich in der /etc/openvpn/openvpn-status.log auch, dass der Client verbunden ist.
Was mich nun etwas verwirrt:
1. Der Client ist für andere Sites (z. B. http://www.utrace.de/) weiterhin mit seiner Original IP sichtbar, nicht wie von mir erwartet mit der des Servers.
2. Eine Traceroute APP zeigt keinen Unterschied, ob VPN verbunden ist oder nicht. Die Route ist jeweils die gleiche, die IP meines VPN-Servers taucht darin nicht auf.
Wo liegt mein Denkfehler, was habe ich falsch konfiguriert?
debian Server: OpenVPN server.conf
port 1194
;proto tcp
proto udp
;dev tap
dev tun
;dev-node MyTap
ca ca.crt
cert vpn-server.crt
key vpn-server.key # This file should be kept secret
dh dh4096.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
;server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100
;server-bridge
;push "route 192.168.10.0 255.255.255.0"
;push "route 192.168.20.0 255.255.255.0"
;client-config-dir ccd
;route 192.168.40.128 255.255.255.248
;client-config-dir ccd
;route 10.9.0.0 255.255.255.252
;learn-address ./script
;push "redirect-gateway def1 bypass-dhcp"
;push "dhcp-option DNS 8.8.8.8"
;push "dhcp-option DNS 8.8.4.4"
;push "dhcp-option DNS 208.67.222.222"
;push "dhcp-option DNS 208.67.220.220"
;client-to-client
;duplicate-cn
keepalive 10 120
;tls-auth ta.key 0 # This file is secret
;cipher BF-CBC # Blowfish (default)
;cipher AES-128-CBC # AES
;cipher DES-EDE3-CBC # Triple-DES
comp-lzo
;max-clients 100
;user nobody
;group nogroup
persist-key
persist-tun
status openvpn-status.log
;log openvpn.log
;log-append openvpn.log
verb 3
;mute 20
Android client: OpenVPN client.ovpn (statt "example.net" steht bei remote natürlich die echte Domain)
client
;dev tap
dev tun
;dev-node MyTap
;proto tcp
proto udp
remote vpn.example.net 1194
;remote-random
resolv-retry infinite
nobind
;user nobody
;group nogroup
persist-key
persist-tun
;http-proxy-retry # retry on connection failures
;http-proxy [proxy server] [proxy port #]
;mute-replay-warnings
ca ca.crt
cert android1.crt
key android1.key
ns-cert-type server
;tls-auth ta.key 1
;cipher AES-128-CBC
comp-lzo
verb 3
;mute 20
debian Server: iptables Regeln
$iptables -A INPUT -i venet0:0 -m state --state NEW -p udp --dport 1194 -j ACCEPT
iptables -A INPUT -i tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -o venet0:0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i $my_interface -o tun+ -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0:0 -j MASQUERADE
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 370021
Url: https://administrator.de/forum/openvpn-verbindet-routet-aber-normal-weiter-370021.html
Ausgedruckt am: 23.12.2024 um 18:12 Uhr
28 Kommentare
Neuester Kommentar
Hi,
du hast eine Verbindung durch das VPN von deinem Android Device zu dem Server hergestellt.
Was du nicht erstellt hast ist irgendein Routing zu andere Netzen bzw. zu 0.0.0.0 durch das VPN.
Das der Client für andere Sites mit seiner originalen IP sichtbar ist ist also richtig, aber vielleicht nicht erwünscht.
Wenn du allenTraffic durch das VPN routen willst fehlt die z.B. der Eintrag push "redirect-gateway xxxx"
siehe z.B. hier
CH
du hast eine Verbindung durch das VPN von deinem Android Device zu dem Server hergestellt.
Was du nicht erstellt hast ist irgendein Routing zu andere Netzen bzw. zu 0.0.0.0 durch das VPN.
Das der Client für andere Sites mit seiner originalen IP sichtbar ist ist also richtig, aber vielleicht nicht erwünscht.
Wenn du allenTraffic durch das VPN routen willst fehlt die z.B. der Eintrag push "redirect-gateway xxxx"
siehe z.B. hier
CH
Richtig !
Vermutlich hat er die server.conf Datei falsch eingerichtet und dort mit "push route..." nur das lokale Gateway auf den VPN Client geroutet, dann ist logisch das dann nur der VPN Traffic für das remote lokale Netz in den Tunnel geht aber kein kompletter Redirect der allen Traffic in den Tunnel routet.
Das muss man in der server.conf natürlich entsprechend einrichten mit:
push "redirect-gateway def1"
Siehe auch:
https://openvpn.net/index.php/open-source/documentation/howto.html#redir ...
Dann klappt das auch sofort !
Wie Kollege Spirit-of-Eli oben schon zu Recht bemerkt fehlen sämtliche Routing Kommandos in der .conf Datei auf dem Server. Klar und logisch das es dann nicht funktionieren kann denn dann wird einzig nur die VPN Verbindung auf den Server selber gemacht und nix anderes.
Mit den HE Netzwerk Tools auf dem Smartphone und einem Traceroute hätte man das auch selber ganz ohne Thread hier gesehen:
https://play.google.com/store/apps/details?id=net.he.networktools&hl ...
Für Debian ist es auch hier beschrieben:
https://jankarres.de/2013/05/raspberry-pi-openvpn-vpn-server-installiere ...
oder hier im Forum:
OpenVPN Server installieren auf pfSense Firewall, Mikrotik. DD-WRT oder GL.inet Router
Vermutlich hat er die server.conf Datei falsch eingerichtet und dort mit "push route..." nur das lokale Gateway auf den VPN Client geroutet, dann ist logisch das dann nur der VPN Traffic für das remote lokale Netz in den Tunnel geht aber kein kompletter Redirect der allen Traffic in den Tunnel routet.
Das muss man in der server.conf natürlich entsprechend einrichten mit:
push "redirect-gateway def1"
Siehe auch:
https://openvpn.net/index.php/open-source/documentation/howto.html#redir ...
Dann klappt das auch sofort !
Wie Kollege Spirit-of-Eli oben schon zu Recht bemerkt fehlen sämtliche Routing Kommandos in der .conf Datei auf dem Server. Klar und logisch das es dann nicht funktionieren kann denn dann wird einzig nur die VPN Verbindung auf den Server selber gemacht und nix anderes.
Mit den HE Netzwerk Tools auf dem Smartphone und einem Traceroute hätte man das auch selber ganz ohne Thread hier gesehen:
https://play.google.com/store/apps/details?id=net.he.networktools&hl ...
Für Debian ist es auch hier beschrieben:
https://jankarres.de/2013/05/raspberry-pi-openvpn-vpn-server-installiere ...
oder hier im Forum:
OpenVPN Server installieren auf pfSense Firewall, Mikrotik. DD-WRT oder GL.inet Router
Fehlen weitere Routing Infos, wie sollten diese aussehen?
Nein !Mehr ist nicht zu tun.
Du solltest niemals Google DNS 8.8.8.8 usw. als DNS Server konfigurieren. Das machen heutzutage nur noch Dummies oder blutige Laien. Jedermann weiss das Google Profile deines Surfverhaltens damit erstellt und über Dritte vermarktet. Musst du selber wissen was dir die Privatsphäre wert ist.
DHCP brauchst du in der server.conf gar nicht konfigurieren und auch kein DNS. Wenn du einen Redirect machst, und unbedingt DNS konfigurieren willst, dann n immst du deinen DNS Server vom Heimnetz oder dort wohin du den Redirect machst.
Der DNS ist in der Regel immer der heimische Router der als DNS Proxy agiert.
Lasse das also besser weg. Damit sind dann alle deine o.a. push dhcp Konfigs falsch.
Den OpenVPN Server hast du mit service openvpn restart neu gestartet nach Änderung der Konfig Datei ?
Mir ist auch unklar, waum in der letzten Protokoll Zeile ifconfig 10.8.0.6 10.8.0.5 steht
Eigentlich sollte er die 10.8.0.2 bekommen als erster Client wenn du einen 24er Prefix im internen OVPN Netz verwendest ?! (.1 = Server)Hängt aber auch davon ab WIE du die interne IP Distribution an die Clients konfiguriert hast. Mit dem ifconfig-pool-persist ipp.txt gibst du hier ja eine Verteilung vor. Entweder besser weglassen oder das darin korrigieren !
https://openvpn.net/archive/openvpn-users/2006-05/msg00316.html
Mit ifconfig-push 10.8.0.2 10.8.0.1 kannst du das in der client.conf beim Client auch erzwingen.
Generell solltest du alles überflüssige hier erstmal weglassen oder auskommentieren und mit den Defaults arbeiten.
Lass das "ifconfig-push 10.8.0.2 10.8.0.1" auf dem Client mal komplett weg, dann vergibt der Server das dynamisch.
Damit hättest du dann eine simple Standard Konfig.
Damit muss es gehen !
Wenn du nicht pingen kannst WAS pingst du denn da als Ziel ??
Erstmal ist es wichtig das du den Server selber pingst !!! Also die 10.8.0.1
Das muss IMMER klappen !
Dann mal das lokale LAN Interface des Servers
Dann mal sowas wie 8.8.8.8
Nimm immer die nackte IP, denn das umgeht erstmal ggf. vorhandene DNS Probleme.
Wie gesagt die HE Tools für Android und iOS sind sehr hilfreich dafür:
https://play.google.com/store/apps/details?id=net.he.networktools&hl ...
Wenn das Pingen der OVPN Server IP schon scheitert, dann hast du ein Firewall Problem auf dem Server und dann ist es auch klar, das der gesamte Rest nicht funktioniert !
Damit hättest du dann eine simple Standard Konfig.
Damit muss es gehen !
Wenn du nicht pingen kannst WAS pingst du denn da als Ziel ??
Erstmal ist es wichtig das du den Server selber pingst !!! Also die 10.8.0.1
Das muss IMMER klappen !
Dann mal das lokale LAN Interface des Servers
Dann mal sowas wie 8.8.8.8
Nimm immer die nackte IP, denn das umgeht erstmal ggf. vorhandene DNS Probleme.
Wie gesagt die HE Tools für Android und iOS sind sehr hilfreich dafür:
https://play.google.com/store/apps/details?id=net.he.networktools&hl ...
Wenn das Pingen der OVPN Server IP schon scheitert, dann hast du ein Firewall Problem auf dem Server und dann ist es auch klar, das der gesamte Rest nicht funktioniert !
Wenn du nicht pingen kannst WAS pingst du denn da als Ziel ??
Erstmal ist es wichtig das du den Server selber pingst !!! Also die 10.8.0.1
Das muss IMMER klappen !
Dann mal das lokale LAN Interface des Servers
Dann mal sowas wie 8.8.8.8
Nimm immer die nackte IP, denn das umgeht erstmal ggf. vorhandene DNS Probleme.
Erstmal ist es wichtig das du den Server selber pingst !!! Also die 10.8.0.1
Das muss IMMER klappen !
Dann mal das lokale LAN Interface des Servers
Dann mal sowas wie 8.8.8.8
Nimm immer die nackte IP, denn das umgeht erstmal ggf. vorhandene DNS Probleme.
Kurz zu Ergänzung, falls du einen Windows Rechner mit aktiver Firewall versuchst zu pingen wird dies ohne zusätzliche Regel zum erlauben des VPN Netzes nicht funktionieren. Windows blockt alle Subnetz, die es nicht kennt.
Bitte nicht alles zitieren !
So kann man doch niemals lesen und verstehen was du antwortest
Irgendwo her muss er das ja bekommen ! Der OVPN Server vergibt ohne Konfig immer fortlaufend...
Kannst ja spaßeshalber das interne Netz mal umbiegen auf 172.31.31.0 /24 und mal checken was er dann macht ?!
Interessant wäre die Routing Tabelle auf dem Client !!
Dort schlägt vermutlich der Gateway Redirect fehl, deshalb "kennt" er nur das VPN Netz 10.8.0.0 /24, routet also nur Pakete mit diesem Netz in den Tunnel.
Alles andere rennt dann außerhalb des Tunnels...vermutlich ?!
Um das sicher sagen zu können braucht man die Routing Tabelle des Clients bei aktivem VPN Client !
So kann man doch niemals lesen und verstehen was du antwortest
wo kommt da jetzt die 10.8.0.2 her?
OpenVPN macht ein Point to Point Netzwerk intern mit Hostrouten !bekomme weiterhin den "ifconfig 10.8.0.6 10.8.0.5" Logfile–Eintrag beim Aufbau der VPN Verbindung.
Da stimmt irgendwas nicht !Irgendwo her muss er das ja bekommen ! Der OVPN Server vergibt ohne Konfig immer fortlaufend...
Kannst ja spaßeshalber das interne Netz mal umbiegen auf 172.31.31.0 /24 und mal checken was er dann macht ?!
Interessant wäre die Routing Tabelle auf dem Client !!
Dort schlägt vermutlich der Gateway Redirect fehl, deshalb "kennt" er nur das VPN Netz 10.8.0.0 /24, routet also nur Pakete mit diesem Netz in den Tunnel.
Alles andere rennt dann außerhalb des Tunnels...vermutlich ?!
Um das sicher sagen zu können braucht man die Routing Tabelle des Clients bei aktivem VPN Client !
Zitat von @Herr-N:
Ich versuche auf dem Android Client nur PING auf IPs, die ich auch mit meinem ubuntu Desktop anpingen kann.
Ich versuche auf dem Android Client nur PING auf IPs, die ich auch mit meinem ubuntu Desktop anpingen kann.
Das heißt ja nicht viel, befindet sich dein Ubuntu System in dem selben Subnetz wie die IPs, die du versuchst zu pingen?
War das jetzt versteckte Ironie? (Die Frage meine ich absolut ernst.)
Nein, denn du hast über die Zitatfunktion hier den gesamten Text zitiert (beige eingefärbt) was extrem nervig ist beim Lesen.Der ubuntu Rechner und das Android Smartphone sind im selben LAN.
- Der Ubuntu Rechner hat einen Default Route auf den Internet Router und kann diesen und z.B. die 8.8.8.8 pingen ?
- Hast du beachtet das du auf deinem Internet Router eine statische Route für das interne OVPN Netzwerk eintragen musst ? Klar, denn sonst kann der Internet Router Pakete mit der Quelladresse 10.8.0.0 /24 nicht rückrouten ! Dort muss also sowas stehen wie: Ziel: 10.8.0.0, Maske: 255.255.255.0, Gateway: <ip_adresse_ubuntu>
dass ich auf dem Strato Server ein Firewall–Problem habe
Wie vermutet !Auf dem Starto MUSST dü übrigens NAT (Masquerading) aus dem internen VPN Netz machen da sonst die 10er IP ins Internet gehen würde und der Provider die filtert.
Im lokalen Test Setup müsste man das nicht unbedingt...ist aber hilfreicher, damit man 2 identisches Setups hat.
Nun frage ich mich allerdings, ob ich durch iptables -P FORWARD ACCEPT möglicherweise eine Sicherheitslücke aufgemacht habe.
Das kannst du ganz einfach mit dem ct Netzwerkcheck ausprobieren:https://www.heise.de/security/dienste/Netzwerkcheck-2114.html
Ansonsten lässt du mal einen nmap Scan auf den Server los, was auch die weltweiten Angreifer alle Minute machen:
Netzwerk Management Server mit Raspberry Pi
Wenn du fail2ban (hoffentlich) auf dem Server installiert hast wirst du das auch selber wissen !
Wenn du dir dann mal das Log ansiehst weisst du wovon wir reden
Lesenswert dazu:
https://www.heise.de/ct/ausgabe/2015-4-Dienste-sicher-ins-Netz-bringen-2 ...
Lesenswert dazu:
https://www.heise.de/ct/ausgabe/2015-4-Dienste-sicher-ins-Netz-bringen-2 ...
Welche s Log meinst Du?
Das fail2ban Log !Dort kann man ja die Angriffe im Sekundentakt mitverfolgen. Ist auf Internet Routern übrigens identisch.
15 Jahren mal unbefugte Zugriffe gab.
Spricht für dich und deine Absicherung ....zeigt auch nichts unerwartetes:
Das sieht doch dann gut aus und du kannst beruhigt in ein sonniges Wochenende inzwischen bei OPNsense angekommen und damit sehr zufrieden.
Ist auch nicht falsch aber die pfSense_Variante bietet derzeit etwas mehr Stabilität und vor allem Features.nicht-trivial-ratbare Nutzerkennungen.
Bei im Internet erreichbaren Servern sollte ,man immer wenn irgend möglich gar nicht mehr mit Passwörtern arbeiten sondern mit SSH nur noch Schlüssel verwenden:https://www.heise.de/ct/hotline/FAQ-SSH-Secure-Shell-3939853.html