OpenVPN und Nginx über Standard-Ports

Update 17.01.2017:

  • Die Datenübertragung erfolgt bei mir ausschließlich verschlüsselt. Daher bietet es sich an OpenVPN über den Port 80 zu betreiben. Die Umleitungen von Port 80 zu 443 interessieren mich im Logfile sowieso nicht.
if ($scheme = http) {
    rewrite ^ https://$server_name$request_uri? permanent;
}

Update 31.05.2016:

  • Iptables hinzugefügt
  • Ein großer Nachteil ist, dass der Webserver Nginx Anfragen über localhost erhält. Sowohl eine Auswertung von Logfiles, als auch Dienste wie "fail2ban" funktionieren ggf. nicht wie gewünscht.

OpenVPN kann in der (SSL-)Datenübertragung "versteckt" werden. Damit trotzdem andere Dienste über den Port 80 (443) - Update 17.01.2017 auf dem Server erreichbar sind, fungiert OpenVPN als Proxy und leitet keine VPN-Datenpackete an einen Webserver weiter.

Nginx

Zuerst müssen alle Ports in den Konfigurationsdateien der Webseiten geändert werden:

cd /etc/nginx/sites-available
sudo nano "webside configs"

Dort sollten folgende Zeilen zu finden sein:

server {
    listen 80;
    listen 443 ssl default_server;

    server_name ...

(Es muss der Port "443" in z.B. "4443" geändert werden.) - Update 17.01.2017 Es muss der Port "80" in z.B. "8008" geändert werden.

server {
    listen 8008;
    listen 443 ssl default_server;

    server_name ...

OpenVPN

Die Parameter der Client-Konfiguration aus meinem Beitrag OpenVPN installieren und härten. muss in den folgenden Zeilen angepasst werden:

# TCP operation # UDP operation
proto tcp # udp
# Remote host name or IP address
remote sharky.koeln 80 # 1194

Dem OpenVPN-Server muss nun noch mitgeteilt werden, dass er für ihn nicht bestimmte Verbindungen weiterleitet.

# TCP operation # UDP operation
proto tcp # udp
# Share the OpenVPN port with another application
port-share 127.0.0.1 8008
# TCP/UDP port number for both local and remote.
port 80 # 1194

Dienste neustarten

sudo service nginx restart && sudo service openvpn restart

Iptables

Der folgende Eintrag muss ggf. in "Iptables" gesetzt werden, um Zugriff auf das Netzwerk und das Internet zu haben.

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to-source $(ifconfig eth0 | grep -i 'inet addr:' | cut -d: -f2 | awk '{ print $1}')