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
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