OpenVPN und Webserver auf dem gleichen Port

In der Vergangenheit hatte ich z.B. in Hotelzimmern immer wieder nur über einem unverschlüsselten WLAN AP Internet Zugang. In solchen Fällen habe ich mir oftmals eine sichere VPN Verbindung gewünscht. Nachdem es diese Woche wieder so war, habe ich die Sache endlich angepackt.
OpenVPN einrichten ist ja kein Problem und funktioniert in der Regel auch aus Hotelzimmern, wenn der Dienst auf Port 443/TCP (HTTPS-Port) lauscht. Leider verfügt mein Root-Server nur über eine IPv4 Adresse und ich würde auch gerne https für meinen Webserver weiterhin nutzen.

Die Frage ist also, wie sich HTTPS und OpenVPN ein Port teilen können?

Nach ein bisschen Suchen bin ich auf die OpenVPN Option port-share gestoßen. Hiermit leitet OpenVPN alle Verbindungen, mit denen er nichts anfangen kann, an einen anderen Port weiter. Meine ersten Tests waren jedoch sehr ernüchternd. Die Lösung führte zu einem sehr langsamen Aufbau der Webseiten.

Der nächste Kandidat war sslh. sslh lauscht z.B. auf Port 443 und versucht zu entscheiden, ob die eingehende Verbindung zu SSH, OpenVPN oder HTTPS gehört. Je nach Verbindungsart wird die Verbindung an einen anderen Port weitergeleitet.

Und meine Tests zeigten, dass sslh wunderbar funktioniert.

Einziger Haken: Da die Verbindung weitergeleitet werden, sehen SSH, OpenVPN und der Webserver als Quelladresse nur noch 127.0.0.1. Dies sollte man bei den Sicherheitseinstellungen im Hinterkopf haben, da z.B. fail2ban nicht mehr funktioniert.

Trotzdem: Problem solved!

0