Bereitstellen eines OpenVPN-Dienstes

Dieses Image stellt nur die grundlegende Funktionalität sicher. Wenn Sie in der Lage sind, es selbst zu konfigurieren, wird empfohlen, es selbst aufzubauen oder sich an der Implementierungsmethode dieses Images zu orientieren. Vor der Verwendung benötigen Sie Grundkenntnisse in Linux und Docker. Dieses Image wurde auf Debian 9 getestet. Hier wird beschrieben, wie es auf Debian 9 verwendet wird, was in der Regel auch auf andere Systeme wie Ubuntu anwendbar ist. Der Standardport für diesen Dienst ist 1190/UDP. Bitte stellen Sie sicher, dass diese Regel in Ihrer Firewall erlaubt ist.

Vorbereitungen

Sie müssen außerdem die folgenden Änderungen auf Ihrem Server vornehmen. Führen Sie den folgenden Befehl aus:

echo net.ipv4.ip_forward=1 >>/etc/sysctl.conf
sysctl -p

Wenn auf Ihrem Server ufw installiert ist, müssen Sie außerdem die folgenden Zeilen am Anfang von /etc/ufw/before.rules hinzufügen. Passen Sie eth0 und das Netzwerksegment entsprechend Ihrer tatsächlichen Serverschnittstelle und Konfiguration an. Beachten Sie, dass dies vor den *filter-Regeln (falls vorhanden) hinzugefügt werden muss.

*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 172.27.27.0/24 -o eth0 -j MASQUERADE
COMMIT

Ändern Sie die folgende Konfiguration in /etc/default/ufw auf ACCEPT.

DEFAULT_FORWARD_POLICY="ACCEPT"

Führen Sie abschließend den folgenden Befehl aus, um den ufw-Firewall-Dienst auf dem Server neu zu starten.

ufw reload

Wenn auf Ihrem Server ufw nicht installiert ist, stellen Sie sicher, dass die FORWARD-Regel von iptables auf ACCEPT gesetzt ist, und führen Sie den folgenden Befehl aus.

Achtung

Nach einem Neustart des Servers müssen Sie diese Regel möglicherweise erneut anwenden. Es wird empfohlen, ufw zu installieren.
iptables -P FORWARD ACCEPT

Initialisierung der Konfiguration

Jetzt erstellen wir ein Verzeichnis, um die Konfiguration unseres OpenVPN-Dienstes zu speichern:

mkdir -p ~/lamda-openvpn-server

Führen Sie als Nächstes den folgenden Befehl aus, um den OpenVPN-Dienst zu initialisieren:

docker run -it --rm --privileged --net host -v ~/lamda-openvpn-server:/etc/openvpn rev1si0n/openvpn ovpn-server-new

Warten Sie, bis der Befehl abgeschlossen ist. Sie können nun die Konfiguration des Dienstes im Verzeichnis ~/lamda-openvpn-server sehen. Die Konfigurationsdatei ist config.ovpn. Sie können diese Datei mit einem Editor öffnen. Es wird empfohlen, nur die folgenden Felder zu ändern.

# VPN-Netzwerksegment und Subnetzmaske
server 172.27.27.0 255.255.255.0
# Port des VPN-Dienstes
port 1190

# Oder wenn Sie möchten, dass eine Netzwerkschnittstelle auf dem Server für VPN-Clients zugänglich ist
# Sie können auch eine Route hinzufügen, beachten Sie jedoch, dass Sie dann nur auf die IP-Adresse des aktuellen Hosts in diesem Netzwerksegment zugreifen können
# Wenn Clients vollen Zugriff auf dieses Netzwerksegment benötigen, sind zusätzliche Einstellungen erforderlich
push "route 192.168.68.0 255.255.255.0"

# Ändern Sie 114 in den von Ihnen gewünschten DNS-Server
push "dhcp-option DNS 114.114.114.114"

Erstellen von Client-Verbindungszertifikaten

Nachdem die Bearbeitung abgeschlossen ist, erstellen wir nun einen Client. myname kann in einen anderen gewünschten Namen geändert werden, darf aber nicht doppelt vergeben werden.

docker run -it --rm --privileged --net host -v ~/lamda-openvpn-server:/etc/openvpn rev1si0n/openvpn ovpn-client-new myname

Nach der Erstellung verwenden Sie die folgenden Befehle, um die Anmeldeinformationen für diesen Client abzurufen:

# Hinweis: Die IP in der Konfiguration ist die automatisch ermittelte öffentliche IP. Wenn sie nicht korrekt ist, muss sie manuell geändert werden.
#
# Generiert die ovpn-Konfiguration und leitet sie zur Speicherung in die Datei myname.ovpn um. Diese Datei kann für Apps wie OpenVPN-Connect verwendet werden.
docker run -it --rm --privileged --net host -v ~/lamda-openvpn-server:/etc/openvpn rev1si0n/openvpn ovpn-client-profile ovpn myname >myname.ovpn
# Generiert ein OpenVPNProfile für die Verwendung mit lamda, das direkt in lamda verwendet werden kann.
# Es enthält einen auskommentierten Abschnitt für properties.local. Sie können die darin enthaltene openvpn.*-Konfiguration
# nach /data/usr/properties.local kopieren, um eine automatische VPN-Verbindung zu ermöglichen.
docker run -it --rm --privileged --net host -v ~/lamda-openvpn-server:/etc/openvpn rev1si0n/openvpn ovpn-client-profile lamda myname

Widerrufen von Client-Zertifikaten

Wenn Sie ein Client-Zertifikat widerrufen müssen, führen Sie den folgenden Befehl aus. Nach dem Widerruf muss der OpenVPN-Dienst möglicherweise neu gestartet werden.

docker run -it --rm --privileged --net host -v ~/lamda-openvpn-server:/etc/openvpn rev1si0n/openvpn ovpn-client-revoke myname

Starten des OpenVPN-Dienstes

Jetzt können Sie den folgenden Befehl ausführen, um den OpenVPN-Dienst im Vordergrund zu starten. Sie können die Verbindungsprotokolle der Clients direkt einsehen und Fehler beheben.

docker run -it --rm --name openvpn-server --privileged --net host -v ~/lamda-openvpn-server:/etc/openvpn rev1si0n/openvpn run

Wenn Sie sicher sind, dass alles korrekt ist, wird empfohlen, den Dienst im Hintergrund auszuführen. Verwenden Sie diesen Befehl, um den Dienst im Hintergrund zu starten.

docker run -d --rm --name openvpn-server --privileged --net host -v ~/lamda-openvpn-server:/etc/openvpn rev1si0n/openvpn run

Referenzdokumentation

Grundlegende Dokumentation: https://openvpn.net/community-resources/reference-manual-for-openvpn-2-4/

Routing-Einstellungen: https://community.openvpn.net/openvpn/wiki/BridgingAndRouting