Ich bin gerade dabei, OpenVPN auf einem persönlichen VPS einzurichten, hauptsächlich für die Verbindung durch eine übermäßig restriktive Firewall. Alle unten genannten Setups funktionieren, wenn sie über eine Verbindung mit angemessener Firewall verwendet werden.
Ich habe versucht:
- OpenVPN läuft auf dem Standardport
- OpenVPN läuft auf Port 443 (ich starte OpenVPN manuell über die Befehlszeile auf dem VPS und sehe, dass der Server fast sofort die Schließung der Verbindung meldet. Ich gehe davon aus, dass dies auf DPI in der Firewall zurückzuführen ist).
- STunnel läuft auf Port 443, um auf OpenVPN zuzugreifen und DPI zu umgehen. Dies ist am erfolgreichsten und ermöglicht eine Verbindung und Internetzugriff über das VPN für ca. 10–20 Sekunden, bevor die Verbindung zwangsweise geschlossen wird.
Gibt es noch etwas, das ich versuchen kann?
Antwort1
Verbindungen, die nach einer gewissen Zeit unterbrochen werden, weisen manchmal auf eine Art Byte-pro-Sekunde-Begrenzung hin. Versuchen Sie herauszufinden, ob eine Verlangsamung Ihrer VPN-Verbindung funktioniert. Wenn Sie OpenVPN für UDP konfiguriert haben, versuchen Sie es auch mit TCP (443 UDP kann blockiert werden, während 443 TCP möglicherweise nicht erkannt wird).
Besuchen Sie eine bekannte Site, die SSL verwendet, und überprüfen Sie das Zertifikat. Machen Sie das Gleiche dann zu Hause. Wenn die Angaben nicht übereinstimmen, verwendet Ihr Standort einen transparenten HTTPS-SSL-Proxy und kann Ihren HTTPS-Verkehr tatsächlich sehen.
Möglicherweise wird etwas, das nicht Port 443 ist, nicht so genau überwacht. Versuchen Sie es mit 22.
Es mag dumm klingen, aber versuchen Sie es über Port 80 und sehen Sie, was dabei herauskommt. Sie können auch versuchen, einen HTTP-Tunnel zwischen Ihnen und dem VPS einzurichten, damit der Datenverkehr wie HTTP-Anfragen aussieht.
Wenn Sie sich verrückt fühlen, versuchen SieJod.
Antwort2
Ich glaube, ich weiß, warum sich die Stunnel-Methode so verhält. Das liegt daran, dass Sie eine „statische Route“ für den Stunnel-Server festlegen müssen. Lassen Sie mich das erklären. Wenn Sie sich mit einem OpenVPN-Server verbinden, ändert dieser Ihre Routing-Tabelle und leitet alle Ihre Pakete durch das VPN, außer den OpenVPN-Paketen. Tatsächlich fügt OpenVPN eine Route für die IP-Adresse Ihres Servers hinzu. Aber wenn Sie Stunnel verwenden, um sich mit Ihrem OpenVPN-Server zu verbinden, verbinden Sie OpenVPN mit einer Loopback-Schnittstelle und es gibt keine Route zu Ihrem Server außerhalb Ihres VPN, also wollen Stunnel-Pakete zum Server und sie gehen zu Ihrem VPN und Ihre VPN-Pakete gehen zu Stunnel :)
Sie müssen also eine Route zu Ihrer Server-IP hinzufügen, die über Ihr VPN (Ihren Heimrouter) hinausgeht.
Und zum Problem mit der Methode Port 443 würde ich sagen, dass Ihre Firewall vielleicht SPI oder DPI verwendet und so problemlos OpenVPN-Pakete von HTTPS-Paketen (SSL) unterscheiden kann. Am besten verwenden Sie also Stunnel. Wenn die Firewall SSL-Pakete blockiert, ist es besser, Obfsproxy oder Fteproxy zu verwenden, um dies zu umgehen.
(ich weiß, dass der Beitrag zu alt ist, aber ich habe wochenlang nach einer Antwort auf dasselbe Problem gesucht und wollte daher mitteilen, was ich darüber gelernt habe)
Antwort3
Die Antwort von Reza Askari war genau die Antwort auf die dritte Frage. Dies ist sowohl auf meinem Linux-Computer als auch auf Android passiert.
Auf dem Computer, bevor Sie eine Verbindung zu OpenVPN herstellen über
sudo openvpn --config configFile.ovpn
Sie sollten eine Regel hinzufügen, um den Stunnel-Server aus dem OpenVPN-Tunnel zu entfernen.
sudo /sbin/ip route add stunnel_ip via default_gateway_ip
Stellen Sie dann eine Verbindung zu Ihrem OpenVPN-Server her. Wenn Sie fertig sind, können Sie die Regel folgendermaßen entfernen:
sudo /sbin/ip route del stunnel_ip
Um es einfacher zu machen und nichts zu vergessen, erstellen Sie ein Shell-Skript, das die Regel hinzufügt und OpenVPN ausführt. Wenn OpenVPN beendet wird, wird die Regel gelöscht:
sudo /sbin/ip route add stunnel_ip via default_gateway_ip
sudo openvpn --config configFile.ovpn
sudo /sbin/ip route del stunnel_ip
Verwenden Sie unter Android den Client „OpenVPN for Android“ von „Arne Schwabe“ und „SSLDroid“ von „Balint Kovacs“.
Schließen Sie dann im OpenVPN-Client „SSLDroid“ aus dem VPN-Profil aus, das durch den Stunnel geht.
Ich hätte Rezas Antwort oder Kommentar dort gerne positiv bewertet, aber diese Reputationsbewertungsregel hat mich daran gehindert.
Antwort4
Ergänzend zur Antwort von LawrenceC möchte ich noch hinzufügen, dass der ausgehende DDoS-Schutz vor Slow Loris und anderen „Low and Slow“-DDoS-Angriffen, die von diesem Netzwerk ausgehen, die Schließung von Sitzungen nach einer bestimmten Zeitspanne erzwingt.
Wie bereits erwähnt, kann dies auch an einer Begrenzung des Datenverkehrsvolumens liegen, es gibt jedoch noch einen anderen Grund für eine solche Begrenzung: Mit der heutigen Technologie (2021) ist die Begrenzung der Bandbreite pro Gerät trivial und verwendet keine Sitzungstimeouts mehr, um dies durchzusetzen. Der ausgehende DDoS-Schutz kann jedoch auch Sitzungen beenden, die einen konstanten Datenstrom senden, der ein Protokoll verwendet, dessen Verhalten von Natur aus sporadisch ist, insbesondere wenn der Datenverkehr Pakete enthält, die entweder zu einheitlich oder zu fragmentiert sind, um dem Verhalten legitimer HTTPS-Sitzungen zu entsprechen (so sehen viele DDoS-Angriffe vom Flood-Typ aus).
Stateful Firewalls haben in den letzten Jahren große Fortschritte gemacht, und die Verhinderung genau dieses Verhaltens stand im Zusammenhang mit der Verhinderung von Datenexfiltration sowie den gerade aufgeführten DDoS-Schutzmaßnahmen auf der Tagesordnung.
Um dieses Ziel heute mit einer gut konstruierten Firewall zu erreichen, bedarf es weitaus mehr als nur einiger Ratschläge zu den zu verwendenden Konfigurationen.