Wie verwende ich OpenVPN durch eine restriktive Firewall?

13

Ich bin derzeit in der Situation, OpenVPN auf einem persönlichen VPS einzurichten, um die Verbindung hauptsächlich über eine zu restriktive Firewall herzustellen. Alle im Folgenden genannten Setups funktionieren bei Verwendung über eine ausreichend Firewall-Verbindung.

Ich habe versucht:

  1. OpenVPN läuft auf dem Standardport
  2. OpenVPN läuft auf Port 443 (Ich starte OpenVPN manuell von der Kommandozeile des VPS aus und sehe, dass der Server fast sofort meldet, dass die Verbindung geschlossen wurde. Ich gehe davon aus, dass dies ein Ergebnis von DPI auf der Firewall ist.)
  3. STunnel läuft auf Port 443, um auf OpenVPN zuzugreifen und DPI auszuweichen. Dies ist die erfolgreichste und ermöglicht eine Verbindung und einen Internetzugang über das VPN für ~ 10-20 Sekunden, bevor die Verbindung zwangsweise geschlossen wird.

Kann ich noch etwas versuchen?

RL Stine
quelle
1
Sehr geehrter Herr, welchen "persönlichen VPS" -Anbieter haben Sie, der sich so sehr bemüht, dass Sie kein VPN betreiben können ?! Außerdem ist nicht klar, ob Sie versuchen, den VPS als OpenVPN-Server zu verwenden, oder ob Sie ihn zum Client machen möchten.
allquixotic
Woops! Ich hätte klarer sein sollen. Der VPS-Anbieter ist Linode und blockiert definitiv nichts. ;) Das Problem ist, dass ich mich von einem Client (meinem Laptop) mit dem VPN verbinde, dessen Internetzugang stark durch eine Firewall geschützt ist.
RL Stine
1
Wie Sie angedeutet haben, wird eine VPN-Lösung im Allgemeinen von allem, was eine Stateful Packet Inspection durchführt, relativ leicht erkannt. Das erzwungene Trennen der Verbindung könnte auf Datenverkehrsanalysemethoden zurückzuführen sein, die die https-Verbindung von stunnel untersuchen und sagen: "Moment mal, Standard-HTTP-Anforderungs- / Antwortverbindungen sind nicht annähernd so gesprächig." - Im Grunde steckst du fest. Sie können jedoch einen HTTPS-Proxy ausprobieren. Vielleicht etwas, wo Sie die Anfrage als HTTP-Body (über SSL) an ein Servlet übergeben und Ihre Anfrage weiterleiten ... o_O
allquixotic
3
Möglicherweise möchten Sie berücksichtigen, dass das Umgehen von durch eine Unternehmensfirewall implementierten Einschränkungen wahrscheinlich einen Verstoß gegen die Unternehmensrichtlinien darstellt. Ich schlage vor, Sie sprechen mit dem Firewall-Administrator über das Problem.
Ansgar Wiechers

Antworten:

11

Verbindungen, die nach einer bestimmten Zeit unterbrochen werden, weisen manchmal auf ein Limit von Bytes pro Sekunde hin. Versuchen Sie herauszufinden, ob die Verlangsamung Ihrer VPN-Verbindung funktioniert. Wenn Sie OpenVPN für UDP konfiguriert haben, versuchen Sie TCP (443 UDP kann blockiert sein, 443 TCP kann unentdeckt bleiben).

Besuchen Sie eine bekannte Site, die SSL verwendet, und überprüfen Sie das Zertifikat. Dann mache dasselbe zu Hause. Wenn sie nicht übereinstimmen, verwendet Ihr Standort einen transparenten HTTPS-SSL-Proxy und kann Ihren HTTPS-Datenverkehr tatsächlich anzeigen.

Möglicherweise wird etwas, das nicht Port 443 ist, nicht so genau überwacht. Versuchen Sie es mit 22.

Es klingt vielleicht dumm, aber versuchen Sie es über Port 80 und sehen Sie, was Sie bekommen. Sie können auch versuchen, einen HTTP-Tunnel zwischen Ihnen und dem VPS einzurichten, damit der Datenverkehr wie HTTP-Anforderungen aussieht.

Wenn Sie sich verrückt fühlen, versuchen Sie es mit Jod .

LawrenceC
quelle
2
+1, aber vor allem für Jod!
0xC0000022L
5

Ich glaube, ich weiß, warum sich die Tunnelmethode 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 eine Verbindung zu einem OpenVPN-Server herstellen, ändert sich Ihre Routingtabelle und alle Ihre Pakete werden über das VPN weitergeleitet, mit Ausnahme der OpenVPN-Pakete. Tatsächlich fügt openvpn eine Route für die IP-Adresse Ihres Servers hinzu. Wenn Sie stunnel verwenden, um eine Verbindung zu Ihrem OpenVPN-Server herzustellen, wird OpenVPN mit einer Loopback-Schnittstelle verbunden, und es gibt keine Route zu Ihrem Server außerhalb Ihres VPN stunnel :)

Sie müssen also eine Route zu Ihrer Server-IP hinzufügen, die außerhalb Ihres VPN (Ihres Heim-Routers) verläuft.

Und für das Problem mit der Methode Port 443 muss ich sagen, dass die Firewall möglicherweise SPI oder DPI verwendet und OpenVPN-Pakete leicht von HTTPS- (SSL-) Paketen unterscheiden kann. Der beste Weg ist also, stunnel zu verwenden. Wenn die Firewall SSL-Pakete blockiert, ist es besser, obfsproxy oder fteproxy zu verwenden, um sie zu umgehen.

(Ich weiß, dass der Beitrag zu alt ist, aber ich habe wochenlang nach einer Antwort auf das gleiche Problem gesucht, also wollte ich mitteilen, was ich darüber gelernt habe.)

Reza Askari
quelle
Dies gibt keine Antwort auf die Frage. Wenn Sie einen Autor kritisieren oder um Klarstellung bitten möchten, hinterlassen Sie einen Kommentar unter seinem Beitrag. Sie können jederzeit Ihre eigenen Beiträge kommentieren. Wenn Sie über eine ausreichende Reputation verfügen, können Sie jeden Beitrag kommentieren .
Ramhound
3

Die Antwort von Reza Askari war genau die Antwort auf die dritte Frage. Dies geschah sowohl auf meinem Linux-Computer als auch auf Android.

Auf dem Computer, bevor Sie eine Verbindung zu OpenVPN herstellen

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 diese Regel entfernen, indem Sie:

sudo /sbin/ip route del stunnel_ip

Erstellen Sie ein Shell-Skript, das die Regel hinzufügt und OpenVPN ausführt, damit Sie sie nicht vergessen. 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 auf Android den Client "OpenVPN für Android" von "Arne Schwabe" und "SSLDroid" von "Balint Kovacs".

Schließen Sie dann im OpenVPN-Client "SSLDroid" aus dem VPN-Profil aus, das den Tunnel durchläuft.

Ich hätte Rezas Antwort oder Kommentar dort gerne positiv bewertet, aber diese Bewertungsregel hat mich davon abgehalten.

0x00FE
quelle
1

Ich habe es noch nie ausprobiert (also weiß ich, ob es funktioniert!), Aber probiere es mit ssh-Tunneling über 443 aus und starte dein OpenVPN durch den Tunnel. Möglicherweise benötigen Sie einen zusätzlichen Remote-Host, um 443 abzuhören, wenn Sie keinen haben. Hier finden Sie jedoch ein Beispiel für die Verwendung des Proxyservices unter http://www.anonyproz.com/openvpnsshtunnel.pdf [Anmerkung der Redaktion: this Wayback Machine link mag sicherer sein], aber das ist auch Googlable:

https://www.google.com/search?q=ssh%20tunnel%20openvpn .

Ich kenne auch Leute, die diesen Ansatz als Proxy verwenden, weil ihr Arbeitgeber den Zugriff auf Job-Websites wie dice.com blockiert hat, als sie beliebt waren.

MDMoore313
quelle