OpenVPN mit Stunnel - wie lege ich eine Ausnahme für Stunnel an
Hallo,
es geht nun um das gleiche Thema wie hier:
Openvpn per stunnel verstecken (Openvpn läuft ausserhalb stunnel problemlos) (Raspberry Pi - Android)
Der relevante OVPN-Server-Teil sieht bei mir so aus:
Anders als der Threadersteller des erwähnten Thread, möchte ich sämtlichen Traffic über das VPN leiten. Meine Frage ist nun genau die Frage wie ich auf dem Client eine Ausnahme für Stunnel erzeuge so dass die Stunnelverbindung nicht in das VPN geleitet wird?
Die Server-Config ändern ist nicht gut da ich diese Config auch für eine Verbindung ohne Stunnel nutzen möchte. Sonst bräuchte ich eine weitere OVPN-Instanz auf dem Server.
Der Parameter route-nopull ist für mich alleine keine Lösung.
Vielen Dank schonmal für eure Hilfe.
es geht nun um das gleiche Thema wie hier:
Openvpn per stunnel verstecken (Openvpn läuft ausserhalb stunnel problemlos) (Raspberry Pi - Android)
Der relevante OVPN-Server-Teil sieht bei mir so aus:
mode server
tls-server
ifconfig 10.0.9.1 255.255.255.0
ifconfig-pool 10.0.9.30 10.0.9.50 255.255.255.0
ifconfig-pool-persist /etc/openvpn/client/ipp10090.txt
topology subnet
proto tcp-server
dev tun1
port 55554
push "topology subnet"
push "dhcp-option DNS 192.168.3.102"
push "route 192.168.3.0 255.255.255.0 10.0.9.1"
push "route-gateway 10.0.9.1"
push "redirect-gateway def1 bypass-dhcp"
push "ping 10"
push "ping-restart 60"
push "ping-timer-rem"
client-config-dir /etc/openvpn/ccdtcp
Anders als der Threadersteller des erwähnten Thread, möchte ich sämtlichen Traffic über das VPN leiten. Meine Frage ist nun genau die Frage wie ich auf dem Client eine Ausnahme für Stunnel erzeuge so dass die Stunnelverbindung nicht in das VPN geleitet wird?
Die Server-Config ändern ist nicht gut da ich diese Config auch für eine Verbindung ohne Stunnel nutzen möchte. Sonst bräuchte ich eine weitere OVPN-Instanz auf dem Server.
Der Parameter route-nopull ist für mich alleine keine Lösung.
Vielen Dank schonmal für eure Hilfe.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 606611
Url: https://administrator.de/contentid/606611
Ausgedruckt am: 25.11.2024 um 14:11 Uhr
34 Kommentare
Neuester Kommentar
Könntest du das an einem Beispiel aufzeigen?
Wie denn wenn man noch nicht einmal weiss was für ein OS du auf dem Client hast...??Die Logik dahinter ist doch auch ohne Beispiel ganz einfach.... Du willst einen Gateway Redirect machen am Client. Das bedeutet IP technisch geht dann zwangsweise alles in den Tunnel. Logisch, denn das Default Gateway wird auf den VPN Server gelegt.
Hast du jetzt aber eine dedizierte Hostroute zur Host IP Adresse des Ziel Stunnel Rechners dann hat diese eine höhere Metrik zur Default Route. Für den Traffic der also explizit der statischen Route entspricht gilt nicht die OVPN Tunnel Default Route !
Bei Winblows ist das sowas wie: "route add 192.168.1.0 mask 255.255.255.0 10.10.0.2 -p"
Das "-p" am Ende bewirkt das die Route permanent ist also nach dem nächsten Reboot nicht wieder verschwindet. Ohne das "-p" kannst du also deine Routen testen ohne das was passiert...
Bei Linux ist das: sudo ip route add 192.168.1.0/24 via 10.10.0.2
Noch ein paar Worte zu deiner gruseligen OpenVPN Konfig !:
Deine Server Konfig hat 2 ganz gravierende Fehler:
- 1.) Gateway redirect und Split Tunneling zusammen zu konfigurieren ist natürlich IP technischer Blödsinn. Weisst du hoffenmtlich auch selber, die Frage ist also warum du so einen Unsinn machst ?? Das hiesige_OpenVPN_Tutorial weisst im Kapitel OVPN Server explizit darauf hin wie man mit diesen beiden Route Optionen umgeht !! Das solltest du also dringenst anpassen. Lesen und verstehen...!
- 2.) TCP Encapsulation bei OpenVPN ist keine gute und besonders intelligente Wahl. Sogar die offizielle OpenVPN Doku rät dringenst davon ab. Vermutlich hast du sie nicht gelesen..?! Der Grudn ist klar, es erhöht massiv den Paket Overhead auf Kosten der Nutzdaten und kostet erheblich Performance durch das TCP Handling. Zudem kann es Fragmentierungsprobleme bescheren (MTU Mismatch) die zusätzlich auf Kosten der Performance gehen. Hier ist man also immer gut beraten wenn irgend möglich UDP zu verwenden ! Solltest du auch machen wenn dir der Durchsatz etwas wert ist.
a) ip route add, muss das in das Client-OVPN-File
Oha...wenns bei solchen banalen Fragen schon scheitert... Nein, natürlich nicht, das ist ein Windows Shell (cmd) Befehl der Eingabeaufforderung !
b) welche Adressen muss ich wo nehmen.
Die Logik ist einfach:route add <Zielnetz oder Host> mask <Maske_zum_Ziel> <Next_Hop_IP> -p
Analog ist das auf unixoiden OS
Ich habe diesen Teil auch aus einem Tutorial und habe es nicht hinterfragt.
Wie gruselig. Vielleicht solltest du dann besser einmal die offizielle OpenVPN Dokumentation lesen statt dubiose Tutorial von irgendwelchen Laien ?!Warum ist es ein Fehler wenn man die Route pushed?
Das ist per se kein Fehler !Das du aber gemacht hast ist einen gateway redirect und Split Tunneling (push route) zu definieren, was ja kompletter Quatsch ist, denn wenn man eh ALLES in den Tunnel redirected benötigt man logischerweise ja keine dedizierten push route Kommandos mehr für eintzelne Netz und auch umgekehrt. Das eine schliesst logischerweise das ander aus und es ist schlicht falsch beides in der Konfig Datei zu machen weil das dann immer ein indifferentes Routing ergebit durch diese Fehlkonfiguration. OpenVPN Doku lesen !!
weil der Sender sofort eine Rückmeldung erhält ob das IP-Paket angekommen ist.
Muss dann aber immer unnötig retransmitten was viel mehr Overhead mit noch weniger Nettodaten schafft. Aber egal...wenns bei dir hilft ist das OK.Zitat von @blacksun:
kannst du das bitte mal an einem konkreten Beispiel aufzeigen?
Zitat von @aqui:
Die Logik ist einfach:
route add <Zielnetz oder Host> mask <Maske_zum_Ziel> <Next_Hop_IP> -p
Die Logik ist einfach:
route add <Zielnetz oder Host> mask <Maske_zum_Ziel> <Next_Hop_IP> -p
kannst du das bitte mal an einem konkreten Beispiel aufzeigen?
route add 192.168.50.0 mask 255.255.255.0 192.168.1.2 -p
Das .50.0 er Netz ist das Zielnetz also das Netz was der Router mit der statischen Route erreichen soll. Die Hostadresse .1.2 sagt ihm über welche IP Adresse er dieses IP Netz erreicht.
Das Prozedere des Routers ist dann ganz einfach...
Kommt ein IP Paket bei ihm an das als Zieladresse eine .50.x hat sieht er in seiner Routing Tabelle nach. Dort steht ja durch die o.a. statische Route (die immer höchste Prio hat) das er alles was an .50.x gehen muss einfach an die .1.2 senden soll.
Folglich schickt der Router das IP Paket dann an die .1.2 in der Hoffnung das es dann dort irgendwie ins 50er Netz weitergeht.
Die .1.2 als sog. "Next Hop" muss natürlich von ihm aus direkt erreichbar sein also ein IP Netz was direkt an ihm angeschlossen ist.
Eigentlich kinderleicht, oder ?
Guckst du auch hier:
Routing von 2 und mehr IP Netzen mit Windows, Linux und Router
Damit ist das dann nun hoffentlich sonnenklar für dich ?!
Lesen und verstehen...
Das Prozedere des Routers ist dann ganz einfach...
Kommt ein IP Paket bei ihm an das als Zieladresse eine .50.x hat sieht er in seiner Routing Tabelle nach. Dort steht ja durch die o.a. statische Route (die immer höchste Prio hat) das er alles was an .50.x gehen muss einfach an die .1.2 senden soll.
Folglich schickt der Router das IP Paket dann an die .1.2 in der Hoffnung das es dann dort irgendwie ins 50er Netz weitergeht.
Die .1.2 als sog. "Next Hop" muss natürlich von ihm aus direkt erreichbar sein also ein IP Netz was direkt an ihm angeschlossen ist.
Eigentlich kinderleicht, oder ?
Guckst du auch hier:
Routing von 2 und mehr IP Netzen mit Windows, Linux und Router
Damit ist das dann nun hoffentlich sonnenklar für dich ?!
Lesen und verstehen...
Aus Client-Sicht, welches Netz/welche IP muss nun geroutet werden
Welches Netz geroutet wird wissen wir hier ja nicht, dazu wäre einmal eine kurze Skizze deines Netzes erforderlich damit man weiss was du willst.Zudem weiss man ja auch nicht welche IP Netze du per OVPN Server auf den Client per Push überträgst.
In der Regel ist das ja immer das lokale LAN. Z.B. dann "push "route 192.168.3.0 255.255.255.0" wenn dieses das .3.0er Netz ist.
Wenn du z.B. noch ein anderes IP Netz erreichen willst vom Client das oder die hinter dem OVPN Server liegen dann konfigurierst du ein weiteres Push Kommando was auch dieses Netz dann dem Client bekannt gemacht wird. Z.B. "push "route 172.16.30.0 255.255.255.0".
Wenn du mehrere IP Netze hinterm Server hast z.B. im 172.16er Bereich dann kannst du z.B. mit einem größeren Prefix sagen "push "route 172.16.0.0 255.255.0.0" (Man achte auf den /16er Prefix !). Das routet dann alle 172.16er Netze in den OVPN Tunnel.
Natürlich funktioniert das auch mit einer Hostroute für einen ganz bestimmten einzelnen Rechner z.B. "push "route 192.168.50.100 255.255.255.255".
Am Client (Windows) kannst du dann immer mit route print dir ansehen wie die Routing Tabelle bei aktivem VPN Client aussieht und ob die Netze oder Hosts auch in den Tunnel geroutet werden. Bei unixoiden OpenVPN Endgeräten ist das ip route show oder netstat -r -n.
Wie bereits gesagt...kinderleicht und eine einfache Logik.
So wie du dir das vorstellst funktioniert es aber nicht. Mal abgesehen davon, dass sich mir der Sinn der zusätzlichen stunnel-Verbindung nicht wirklich erschließt, gibt es nur zwei Möglichkeiten dein Ziel zu erreichen:
1) Du leitest nicht das Default-Gateway über dein OpenVPN-Netz, sondern nur das Netz, auf welches hinter deinem OVPN-Server zugegriffen werden soll. Dann wird der stunnel über das Default-Gateway des Clients aufgebaut.
2) Du setzt eine Route für deinen stunnel-Server auf das jeweilig lokale Gateway. Das bringt folgende Schwierigkeiten mit sich:
2.1) Du kennst die IP-Adresse des lokalen Gateways nicht
2.2) Du kennst die IP-Adresse deines stunnel-servers nicht (da DDNS)
Du kannst dir also hier höchstens ein Script bauen (siehe hier: https://openvpn.net/vpn-server-resources/explanation-of-client-side-scri ..), welches die beiden Informationen ermittelt und entsprechend die Route setzt, bzw. wieder löscht. Das ganze hängt dann vom OS des Clients ab.
1) Du leitest nicht das Default-Gateway über dein OpenVPN-Netz, sondern nur das Netz, auf welches hinter deinem OVPN-Server zugegriffen werden soll. Dann wird der stunnel über das Default-Gateway des Clients aufgebaut.
2) Du setzt eine Route für deinen stunnel-Server auf das jeweilig lokale Gateway. Das bringt folgende Schwierigkeiten mit sich:
2.1) Du kennst die IP-Adresse des lokalen Gateways nicht
2.2) Du kennst die IP-Adresse deines stunnel-servers nicht (da DDNS)
Du kannst dir also hier höchstens ein Script bauen (siehe hier: https://openvpn.net/vpn-server-resources/explanation-of-client-side-scri ..), welches die beiden Informationen ermittelt und entsprechend die Route setzt, bzw. wieder löscht. Das ganze hängt dann vom OS des Clients ab.
OK, mit dem Gateway Redirect sendet der OVPN Client dann alles in den OVPN Tunnel. Am Client liegt es also dann de facto nicht und die sind dann generell raus.
Fragt sich dann was am OVPN/Stunnel Server passiert ?! Hier wäre mal der Inhalt der Routing Tabelle interessant !
route print wenn es eine Winblows Gurke ist oder ip route show bzw. netstat -r -n wenn es ein unixoider Server ist.
Die Routing Tabelle sagt ja explizit und sehr genau WAS dann WOHIN geroutet wird !
Fragt sich dann was am OVPN/Stunnel Server passiert ?! Hier wäre mal der Inhalt der Routing Tabelle interessant !
route print wenn es eine Winblows Gurke ist oder ip route show bzw. netstat -r -n wenn es ein unixoider Server ist.
Die Routing Tabelle sagt ja explizit und sehr genau WAS dann WOHIN geroutet wird !
Zitat von @blacksun:
nun, soweit ich das gelesen habe, sieht der verschlüsselte Traffic von OpenVPN von aussen nicht wie normaler SSL-Traffic aus da OVPN wohl eine andere Verschlüsselung benutzt.
Als Lösung wird vorgeschlagen dass man den OVPN-Traffic mit stunnel oder obfuscation in einen SSL-Tunnel packt so dass es für eine DPI nach normalem Verkehr aussieht und ihn nicht blockiert.
Dass das ganze erheblich Performance kostet (einmal durch TCP anstatt UDP bei OVPN, und durch das zweite Verpacken durch stunnel), das ist mir bewusst. Aber eine langsamere Verbindung ist immer noch besser als gar keine Verbindung.
Also: Was möchtest du jetzt genau? In deiner initialen Fragestellung schreibst du, dass du eine stunnel-Verbindung parallel zu deiner OpenVPN-Verbindung aufbauen willst. Jetzt schreibst du, dass du deine OpenVPN-Verbindung über den stunnel aufbauen möchtest. Letzteres ist ja wohl mehr als einfach. Erst die stunnel-Verbindung aufbauen und dann die OpenVPN-Verbindung. Da musst du auch an den Routen nix machen, da die bereits bestehende Tunnel-Verbindung einfach so bleibt, wie Sie ist.Zitat von @BirdyB:
So wie du dir das vorstellst funktioniert es aber nicht. Mal abgesehen davon, dass sich mir der Sinn der zusätzlichen stunnel-Verbindung nicht wirklich erschließt, gibt es nur zwei Möglichkeiten dein Ziel zu erreichen:
1) Du leitest nicht das Default-Gateway über dein OpenVPN-Netz, sondern nur das Netz, auf welches hinter deinem OVPN-Server zugegriffen werden soll. Dann wird der stunnel über das Default-Gateway des Clients aufgebaut.
2) Du setzt eine Route für deinen stunnel-Server auf das jeweilig lokale Gateway. Das bringt folgende Schwierigkeiten mit sich:
2.1) Du kennst die IP-Adresse des lokalen Gateways nicht
2.2) Du kennst die IP-Adresse deines stunnel-servers nicht (da DDNS)
So wie du dir das vorstellst funktioniert es aber nicht. Mal abgesehen davon, dass sich mir der Sinn der zusätzlichen stunnel-Verbindung nicht wirklich erschließt, gibt es nur zwei Möglichkeiten dein Ziel zu erreichen:
1) Du leitest nicht das Default-Gateway über dein OpenVPN-Netz, sondern nur das Netz, auf welches hinter deinem OVPN-Server zugegriffen werden soll. Dann wird der stunnel über das Default-Gateway des Clients aufgebaut.
2) Du setzt eine Route für deinen stunnel-Server auf das jeweilig lokale Gateway. Das bringt folgende Schwierigkeiten mit sich:
2.1) Du kennst die IP-Adresse des lokalen Gateways nicht
2.2) Du kennst die IP-Adresse deines stunnel-servers nicht (da DDNS)
nun, soweit ich das gelesen habe, sieht der verschlüsselte Traffic von OpenVPN von aussen nicht wie normaler SSL-Traffic aus da OVPN wohl eine andere Verschlüsselung benutzt.
Als Lösung wird vorgeschlagen dass man den OVPN-Traffic mit stunnel oder obfuscation in einen SSL-Tunnel packt so dass es für eine DPI nach normalem Verkehr aussieht und ihn nicht blockiert.
Dass das ganze erheblich Performance kostet (einmal durch TCP anstatt UDP bei OVPN, und durch das zweite Verpacken durch stunnel), das ist mir bewusst. Aber eine langsamere Verbindung ist immer noch besser als gar keine Verbindung.
An sich ist das ganze wohl schon möglich.
Ja, aber nicht so, wie du dir das vorstellstUnter Android verwende ich den OVPN-Client von Arne Schwabe auf nicht gerouteten Androiden. In der App kann man einfach in den Einstellungen sagen welche Apps nicht durch den OVPN-Tunnel sollen. Hier wähle ich die Stunnel-App und schon läuft es mit der obigen TCP-Konfig für OVPN die ich auch ohne Stunnel nutze.
Es mag sein, dass dein Android-Client da irgendwelche Komfort-Funktionen eingebaut hat, die dann bestimmte Sachen ausklammern. Der Standard-OpenVPN-Client hat das eben nicht.Unter Windows läuft es, warum auch immer, komplett ohne Anpassungen. Hier funktionieren die normalen OVPN-Konfigs auf Server und Client-Seite für TCP.
Einzig auf Client-Seite ändert man in der OVPN-Konfig remote auf localhost ab und setzt den Port auf den Port auf dem der Stunnel-Client lauscht.
Richtig.Einzig auf Client-Seite ändert man in der OVPN-Konfig remote auf localhost ab und setzt den Port auf den Port auf dem der Stunnel-Client lauscht.
Nur auf einem unixoiden Client, da muss man wohl etwas anpassen.
In den Tutorials zu OVPN + Stunnel wird zu dem Thema immer das gleiche erwähnt:
push "route x.x.x.x 255.255.255.255 net_gateway"
Ich möchte dies aber nicht pushen um nicht eine weitere Konfig/OVPN-Instanz auf Serverseite zu benötigen, sondern dies direkt in der entsprechenden Client-Konfig setzen.
Es heißt an die Stelle der x müsse die IP des Servers. Aber auch hier stellt sich die Frage welche das sein soll, die öffentliche IP (also DDNS-Name), die des Servers im privaten LAN hinter dem DSL-Router (192.168.3.x) oder die der tun-Schnittstelle auf dem Server (10.0.8.1).
Und der zweite Punkt ist was dieses net_gateway sein soll. Ist das ein OVPN-Parameter oder soll das ein Platzhalter für den Namen einer Schnittstelle sein, oder soll hier auch eine IP hin.
Du hast leider immer noch nicht die Grundlagen zum Thema Routing gelesen oder verstanden. Im Routing geht es nur um IP-Adressen. Irgendwelche DNS-Namen haben da nichts verloren. Du kannst keine Route an Hand des DNS-Namens setzen.In den Tutorials zu OVPN + Stunnel wird zu dem Thema immer das gleiche erwähnt:
push "route x.x.x.x 255.255.255.255 net_gateway"
Ich möchte dies aber nicht pushen um nicht eine weitere Konfig/OVPN-Instanz auf Serverseite zu benötigen, sondern dies direkt in der entsprechenden Client-Konfig setzen.
Es heißt an die Stelle der x müsse die IP des Servers. Aber auch hier stellt sich die Frage welche das sein soll, die öffentliche IP (also DDNS-Name), die des Servers im privaten LAN hinter dem DSL-Router (192.168.3.x) oder die der tun-Schnittstelle auf dem Server (10.0.8.1).
Und der zweite Punkt ist was dieses net_gateway sein soll. Ist das ein OVPN-Parameter oder soll das ein Platzhalter für den Namen einer Schnittstelle sein, oder soll hier auch eine IP hin.
EDIT:
Hier ist so ein Tutorial zu dem Thema:
https://medium.com/@jayden.chua/stunnel-openvpn-server-on-ubuntu-18-04-1 ...
Zu deinen Punkten 2.1 und 2.2, ich interpretiere das Tutorial so dass diese eine Zeile auf Client-Seite diesen beiden Punkte erledigen soll (ohne weitere Skripte??).
An die X.x.x.x kommt der DDNS-Namen, und net_gateway, ist das ein Kommando aus Linux heraus, oder aus OVPN heraus, der genau den Punkt 2.2 durchführt, also das Gateway ermittelt???
Ja, Punkt 2.2. geht dann auch mit net_gateway. Und an die Stelle mit dem x.x.x.x kommt die öffentliche IP deines Servers. Also die IP auf die dein DDNS-Name auflöst. Die musst du halt ermitteln, denn nochmal: Routing geht nicht mit DNS-Namen, nur mit IP-Adressen.Hier ist so ein Tutorial zu dem Thema:
https://medium.com/@jayden.chua/stunnel-openvpn-server-on-ubuntu-18-04-1 ...
Zu deinen Punkten 2.1 und 2.2, ich interpretiere das Tutorial so dass diese eine Zeile auf Client-Seite diesen beiden Punkte erledigen soll (ohne weitere Skripte??).
An die X.x.x.x kommt der DDNS-Namen, und net_gateway, ist das ein Kommando aus Linux heraus, oder aus OVPN heraus, der genau den Punkt 2.2 durchführt, also das Gateway ermittelt???
Ich denke schon dass es am Client liegt, denn dass alles in den OVPN-Tunnel geleitet wird, das ist falsch.
Siehe dem Titel des Threads, darf die Stunnel-Verbindung nicht in den OVPN-Tunnel.
Solche Ausnahmen muss man unter unixoiden OSen, soweit ich das herausfinden konnte, über routing-Einträge vornehmen.
Siehe dem Titel des Threads, darf die Stunnel-Verbindung nicht in den OVPN-Tunnel.
Solche Ausnahmen muss man unter unixoiden OSen, soweit ich das herausfinden konnte, über routing-Einträge vornehmen.
Wenn die stunnel-Verbindung vorher schon besteht, dürfte das keine Rolle spielen.
Ich denke es geht um genau das was du mir bisher erklären wolltest, also dass man diese redirect gateway für eine ganz bestimmte Verbindung übersteuert, also dass alles in den Tunnel soll, ausser die Verbindung des Stunnel-Clients.
Der Stunnel-Client möcht sich verbinden zu irgendwas.ddns.de auf Port 4444.
Der Stunnel-Client möcht sich verbinden zu irgendwas.ddns.de auf Port 4444.
Ganz dunkel meine ich mit zu erinnern dass es beim Routing auch Prioritäten gab.
Die zusätzliche Route müsste also eine höhere Prio bekommen wie das redirect gateway um sozusagen auszubrechen.
Aber wie?
Brauchst du eigentlich nicht, da die spezifischere Route eher greift, als die allgemeine RouteDie zusätzliche Route müsste also eine höhere Prio bekommen wie das redirect gateway um sozusagen auszubrechen.
Aber wie?
Jetzt muss auf Clientseite dafür gesorgt werden dass eine Verbindung auf irgendwas.ddns.de:4444 NICHT mehr unter redirect gateway fällt.
Und hier würde ich als Laie sagen, das was du oben rot geschrieben hast mit Zielhost, da muss irgendwas.ddns.de:4444 hin.
Da es sich nur um die eine IP handelt, wäre Subnetzmaske 255.255.255.255.
Aber was ist der Next-Hop?
Next-Hop wäre dann eben das lokale Gateway, denn darüber soll die Verbindung ja geroutet werdenUnd hier würde ich als Laie sagen, das was du oben rot geschrieben hast mit Zielhost, da muss irgendwas.ddns.de:4444 hin.
Da es sich nur um die eine IP handelt, wäre Subnetzmaske 255.255.255.255.
Aber was ist der Next-Hop?
Verstehst du mein Problem? Ich meine die Idee, was du mir sagen wolltest, das habe ich meine ich schon verstanden. Aber mir fehlt es an der konkreten Umsetzung.
Ich hatte ja gerade BirdyB geantwortet dass in Tutorials zu dem Thema es heißt:
route x.x.x.x 255.255.255.255 net_gateway
Das ist ja genau das was du mir erklärt hast. Die 4 X stehen für den DDNS-Namen, und das net_gateway für den Next_Hop.
Nein. Keine DDNS-Namen beim Routing!route x.x.x.x 255.255.255.255 net_gateway
Das ist ja genau das was du mir erklärt hast. Die 4 X stehen für den DDNS-Namen, und das net_gateway für den Next_Hop.
Ich interpretiere die Tutorials so dass es auf Clientseite nur eine Zeile in der OVPN-Konfig benötigt und keine weiteren Skripte usw., sondern dass dieses net_gateway eben das Gateway nach aussen ermittelt, also den Next-Hop.
Ja, korrekt.
Wenn wirklich alle Dienste wie Stunnel und die zahllosen anderen Connections UDP usw. zentral auf dem OVPN Server laufen ist das doch kein Problem. Dieser Server ist dann für den Client auch der zentrale Router auf alle diese Links, IP Netze usw.
Essentiell wichtig ist dann das auf diesem Server IP Forwarding aktiviert ist damit dieser die Zielnetze die der Client anfragt routen kann. Ohne aktives IP Forwarding (Routing) klappt das logischerweise nicht.
Da der Client ja ein Gateway Redirect macht schickt er all seinen Traffic generell in den Tunnel. Sprich sowie der OVPN Client aktiv ist geht dessen Traffic generell komplett in den Tunnel zum OpenVPN Server.
Am OpenVPN Server ist es dann essentiell wichtig das der alle diese Zielnetze kennt um die Client Requests entsprechend routen zu können.
Wie bereits mehrfach gesagt: Der OVPN Server ist der erste Routing Hop des OVPN Clients. Folglich muss also der Server eine wasserdichte Routing Tabelle haben in die Zielnetze, Firewall Regeln (sofern auf ihm überhaupt eine Firewall aktiv ist !) und natürlich IP Forwarding.
Der OVPN Server bestimmt einzig und allein WO der Traffic des Clients in die Zielnetze hingeht.
Traceroute und/oder Pathping (Winblows) sind also immer deine besten Freunde hier !
Essentiell wichtig ist dann das auf diesem Server IP Forwarding aktiviert ist damit dieser die Zielnetze die der Client anfragt routen kann. Ohne aktives IP Forwarding (Routing) klappt das logischerweise nicht.
Da der Client ja ein Gateway Redirect macht schickt er all seinen Traffic generell in den Tunnel. Sprich sowie der OVPN Client aktiv ist geht dessen Traffic generell komplett in den Tunnel zum OpenVPN Server.
Am OpenVPN Server ist es dann essentiell wichtig das der alle diese Zielnetze kennt um die Client Requests entsprechend routen zu können.
Wie bereits mehrfach gesagt: Der OVPN Server ist der erste Routing Hop des OVPN Clients. Folglich muss also der Server eine wasserdichte Routing Tabelle haben in die Zielnetze, Firewall Regeln (sofern auf ihm überhaupt eine Firewall aktiv ist !) und natürlich IP Forwarding.
Der OVPN Server bestimmt einzig und allein WO der Traffic des Clients in die Zielnetze hingeht.
Traceroute und/oder Pathping (Winblows) sind also immer deine besten Freunde hier !
ich kann vom Client eine OVPN-Verbindung (ohne Stunnel) per UDP zum OVPN-Server aufbauen
"ohne Stunnel"" ist ja unsinnig, sorry. Der Client "sieht" ja nur seine Default Route auf den Server. Er schickt dann seinen sämtlichen Traffic in den VPN Tunnel bei einem Redirect. Wenn er das Stunnel Zielnetz erreichen will dann natürlich auch den Stunnel Traffic. Die o.a. Aussage ist also technisch falsch oder zumindestens sehr unglücklich formuliert, weisst du auch sicher selber....?!ich kann alle Netze erreichen, sowohl öffentlich als auch meinen privaten.
Aber wenn das stimmt geht doch alles ?! Das inkludiert ja dann auch den Stunnel Netz oder wie ist das zu verstehen ?? Was diskutieren wir dann hier also ??Die Beschreibung ist generell wirr und mit den obigen Angaben noch verworrener. Jetzt sagst du mit einmal der nicht der OpenVPN Server eine Stunnel Connection aufbaut sondern mit einmal der Client....
Was denn nun ??
Wenn der Client parallel zu OpenVPN auch noch eine zusätzliche VPN Verbindung aufbaust, sprich also 2 parallele VPN Tunnel (OVPN plus Stunnel) hast dann hast du ja auf dem Client einen Konflikt.
Vermutlich greifen dann irgendwelche Gateway Prioritäten, denn der Client hat ja mit einem aktiven OpenVPN Tunnel der ihm per Gateway Redirect zwingt ALLES an Traffic in den OVPN Tunnel zu leiten jetzt einen gravierenden Konflikt mit dem Stunnel VPN. Dessen Traffic fällt dann hinten über oder noch schlimmer...wenn dort auch ein Gateway Redirect erzwungen wird dreht sich der Client im Kreis...
Das ist doch eine simple Logik, die aber mit deinen immer wechselnden Beschreibungen nicht klarer wird.
Generell ist natürlich 2 unterschiedliche VPN protokolle auf einem Endgerät zu haben die nichts voneinander wissen keine besonders intelligente Idee. Das weisst du sicher auch selber....
Die Routing Tabellen zeigen ja auch das es keinerlei Routen in ein etwaiges Stunnel Interface gibt. tun0 ist das OpenVPN Tunnel Interface und dort zeigt ja auch wie gewollt die default Route hin. Works as designed...
Von Stunnel ist (jedenfalls am Client) weit und breit nix zu sehen in der Routing Tabelle !!
OK, dann bleibt es also glücklicherweise beim Server das der das dann beides macht und der Client reint nur OpenVPN. Gut....
Wenn ja: Was ergibt ein Traceroute dahin ??
Ist das Stunnel Interface ggf. eine Bridging was über den Tunnel nur ein eh vorhandenes lokales LAN bridged ?
Wichtig ist die Routing Tabelle des Servers NICHT der Clients !!
Auf dem Server also bitte einmal ein ip route show oder netstat -r -n ausführen !
Dort MUSS ja eine Route über den Stunnel Link zu sehen sein !
Letztlich ist es ganz einfach: Alles was der Server über Stunnel erreichen kann kann dann auch der OVPN Client. Das ist auch logisch, denn der OVPN Client schickt ja alles an den Server und der routet dann weiter.
Spannend ist hier aber die Rückroute !!
Der OVPN Client kommt ja am Server mit einer IP Adresse des internen OVPN Netzwerkes 10.0.9.x an.
Erreicht diese IP nun das Endgerät am anderen Ende des Stunnel Tunnels und hat dieses keine Route die das 10.0.9.0er Netz wieder zurück in den Stunnel Tunnel zum Server schickt dann landet das Antwort Paket für den OVPN Client im Nirwana.
Geht dann über den lokalen Router dort und da RFC 1918 Privatnetz dann in den Datenmülleimer beim Provider. Genau das ist vermutlich deine Situation, das die Rückroute nicht via Stunnel Tunnel geht !
Auf der remoten Stunnel Seite müssen also beide IP Netze 192.168.100.0 und 10.0.9.0 in den Stunnel Tunnel geroutet werden !
Sprich von remote (Stunnel Ende) muss man den OVPN Server mit beiden IP Adressen in seinem 192.168.100.0 und 10.0.9.0 Netz pingbar sein !
Traceroute ebenso denn das zeigt dir auch den Routing Weg an.
wenn ich mit ifconfig schaue, dann gibt es keinen weiteren Eintrag.
Sehr komisch... Du kannst aber Endgeräte am remoten Stunnel Ende über den Stunnel Link vom Server aus pingen ??Wenn ja: Was ergibt ein Traceroute dahin ??
Ist das Stunnel Interface ggf. eine Bridging was über den Tunnel nur ein eh vorhandenes lokales LAN bridged ?
Wichtig ist die Routing Tabelle des Servers NICHT der Clients !!
Auf dem Server also bitte einmal ein ip route show oder netstat -r -n ausführen !
Dort MUSS ja eine Route über den Stunnel Link zu sehen sein !
Letztlich ist es ganz einfach: Alles was der Server über Stunnel erreichen kann kann dann auch der OVPN Client. Das ist auch logisch, denn der OVPN Client schickt ja alles an den Server und der routet dann weiter.
Spannend ist hier aber die Rückroute !!
Der OVPN Client kommt ja am Server mit einer IP Adresse des internen OVPN Netzwerkes 10.0.9.x an.
Erreicht diese IP nun das Endgerät am anderen Ende des Stunnel Tunnels und hat dieses keine Route die das 10.0.9.0er Netz wieder zurück in den Stunnel Tunnel zum Server schickt dann landet das Antwort Paket für den OVPN Client im Nirwana.
Geht dann über den lokalen Router dort und da RFC 1918 Privatnetz dann in den Datenmülleimer beim Provider. Genau das ist vermutlich deine Situation, das die Rückroute nicht via Stunnel Tunnel geht !
Auf der remoten Stunnel Seite müssen also beide IP Netze 192.168.100.0 und 10.0.9.0 in den Stunnel Tunnel geroutet werden !
Sprich von remote (Stunnel Ende) muss man den OVPN Server mit beiden IP Adressen in seinem 192.168.100.0 und 10.0.9.0 Netz pingbar sein !
Traceroute ebenso denn das zeigt dir auch den Routing Weg an.
Auch die Tabelle auf dem Client ist wichtig.
Nein, das ist unsinnig. Logisch, denn den Client schickt eh alles in den OVPN Tunnel. Wo und warum ist denn da eine Routing Tabelle wichtig ??ping ist ja das erste womit man prüft ob eine funktionierende Verbindung besteht.
Richtig !Relevant ist aber immer die Absender IP des Pings. Wichtig ist also für einen Ping vom Server zu einem Endgerät am Ende des Stunnel Tunnels das der Server unbedingt seine OVPN IP Adresse 10.0.9.x als Absender IP verwendet ! Also ping -c 4 -S 10.0.9.1 x.y.z.h
x.y.z.h ist hier die Endgeräte IP am Stunnel Netz. Hast du das so gepingt ??
Nur so kannst du doch sicher verifizieren das auch die Rückroute aus dem Stunnel Netz zum Server auch OK und richtig ist. Eigentlich sollte dieser Ping von deinem Server scheitern.
Scheitert das wider Erwarten nicht, dann wäre es unverständlich warum dann der Client Traffic in dieses Netz nicht geroutet wird. Dann bleibt nur noch iptables Firewall oder Firewall an den Clients oder sowas.
Auch wenn du es nicht glaubst, es gibt da nichts:
Glaube ich schon... Das sieht ja auch gut aus, denn dort gibt es ja 2 Tunnel. 10.0.9.0 ist OpenVPN und 10.0.8.0 der Stunnel Tunnel.Das Routing vom DSL Router ist auch absolut OK und hat in der Tat mit der eigentlichen Aufgabestellung nix zu tun.
das glaube ich nicht. Darum kümmert sich OVPN.
Sorry, jetzt wirds schon wieder wirr und unverständlich... Das liegt daran das du keinerlei Skizze erstellt hast und das IP Routing hier nicht sauber beschrieben hast ??
Wir gehen jetzt davon aus das der Server einmal das OpenVPN Netz bedient und einmal das Stunnel Netz.
Jetzt nach der Äußerung ist das wohl wieder falsch und der Stunnel ist nur ein Overlay !?!
Sprich du hast VPN seitig ALLES mit OpenVPN gemacht und sattelst dann dort von OVPN Client zu OVPN Client noch einen Stunnel obendrauf ?? Ist das jetzt so richtig ?!
Wenn ja hast du Recht !
Dann "sehen" IP technisch die OVPN Clients nur das internen OVPN Netz, dann passiert das Routing in den Stunnel Tunnel rein nur auf den Clients. Der Server ist dann komplett aussen vor. Das würde aber dann erzwingen das du eine Clit zu Client Kommunikation im OpenVPN erlaubst was dann zwingend das Kommando client-to-client in der OVPN Server Konfig erzwingt. Andernfalls ist eine direkt Client Kommunikation nicht möglich.
Desweiteren wirst du durch diesen Tunnel in einem Tunnel massiv in MTU Problematiken rennen, denn die Stunnel MTU muss dann erheblich kleiner sein um Fragmentierung zu vermeiden. Fragmentierung bedeutet das diese Frames dann geblockt werden.
Was dann aber der Sinn dieses doppelten Tunnels sein soll erschliesst sich einem nicht wirklich. Normal ist sowas Blödsinn. Wozu auch wenn du alles schon wasserdicht sicher mit OpenVPN überträgst.
Verstehen tut man das nicht wirklich...
Hoffentlich ist denn nun endlich diese letzte Version deines Designs die die man verstehen muss...
Du bestätigst da ja auch den hier befürchteten Unsinn einen Tunnel im Tunnel zu machen. Was soll der tiefere Sinn davon sein ?
Gut, aber wenigstens ist nach der endlosen Eierei die Technik denn nun endlich mal geklärt.
Dann muss man natürlich beide Welten vollkommen getrennt sehen aus IP Adressierungs Sicht. Der Stunnel Link ist dann wie eine separate IP Punkt zu Punkt Verbindung zu sehen. Dadurch das die eh einen Bridge Charakter hat wird man darüber nicht routen können bzw. wenn dann nur über die Primärinterfaces die routingtechnisch zu sehen sind in der Routing Tabelle. Der Stunnel Tunnel hat ja keine virtuellen Interfaces und ist deshalb nicht sichtbar in der Routing Tabelle. Vermutlich schliesst das dann ein Routing mehrere IP Netze schon rein physisch aus.
Ob das so ist müsste man einmal in einem Laboraufbau testen. Generell ist das aber Unsinn. Allein schon die massive MTU Problematik von solchen Doppeltunnels wäre schon ein NoGo. Wie gesagt...die Sinnhaftigkeit erschliesst sich einem da nicht wirklich.
Gut, aber wenigstens ist nach der endlosen Eierei die Technik denn nun endlich mal geklärt.
Dann muss man natürlich beide Welten vollkommen getrennt sehen aus IP Adressierungs Sicht. Der Stunnel Link ist dann wie eine separate IP Punkt zu Punkt Verbindung zu sehen. Dadurch das die eh einen Bridge Charakter hat wird man darüber nicht routen können bzw. wenn dann nur über die Primärinterfaces die routingtechnisch zu sehen sind in der Routing Tabelle. Der Stunnel Tunnel hat ja keine virtuellen Interfaces und ist deshalb nicht sichtbar in der Routing Tabelle. Vermutlich schliesst das dann ein Routing mehrere IP Netze schon rein physisch aus.
Ob das so ist müsste man einmal in einem Laboraufbau testen. Generell ist das aber Unsinn. Allein schon die massive MTU Problematik von solchen Doppeltunnels wäre schon ein NoGo. Wie gesagt...die Sinnhaftigkeit erschliesst sich einem da nicht wirklich.