So richten Sie einen OpenVPN-Server unter Debian ein, um VPN-Verkehr ins Internet zu leiten

So richten Sie einen OpenVPN-Server unter Debian ein, um VPN-Verkehr ins Internet zu leiten

Ich richte einen OpenVPN-Server auf Debian ein.

Ich habe den Server konfiguriert und Clients können eine Verbindung herstellen – ihnen werden IP-Adressen im Bereich 10.11.22.0/24 zugewiesen.

Ich habe Folgendes in meiner server.conf-Datei:

client-to-client
status /var/log/openvpn-status.log
verb 3

server 10.11.22.0 255.255.255.0

# This ensures Internet-bound traffic to-from clients can pass through the VPN
push "redirect-gateway def1"
push "dhcp-option DNS (my DNS address)"

Ich habe die IP-Weiterleitung aktiviert (eingestellt in /etc/sysctl.conf)

Ich denke, ich muss iptables eine NAT-Regel hinzufügen, wahrscheinlich in der Form

iptables -t nat -A POSTROUTING -s 10.11.22.0/24 -o eth0 -j MASQUERADE

(Korrekturen willkommen!)

Meine Frage ist: Wo sollte diese Regel stehen, damit sie dauerhaft bleibt (damit sie Neustarts übersteht)?

Ich schätze, in einer idealen Welt würde die Regel hinzugefügt, wenn der VPN-Server hochfährt, und entfernt, wenn er ausfällt, aber der Server ist in systemctl sowieso auf automatischen Start eingestellt, also spielt das wahrscheinlich keine Rolle.

Ich möchte es nur an der richtigen Stelle tun, damit ein anderer Systemadministrator nicht überrascht wird und es finden kann.

Antwort1

Im Allgemeinen sollte die Firewall unabhängig vom VPN sein. In Debian kann sie mithilfe von netfilter-persistentund iptables-persistentPaketen verwaltet (gespeichert und wiederhergestellt) werden (beide sind erforderlich).

Es ist jedoch möglich, beim Starten oder Herunterfahren des OpenVPN-Servers beliebige Befehle auszuführen, für die er eine Skriptschnittstelle besitzt. Verwenden Sie in diesem Fall nicht netfilter-persistent&, iptables-persistentda Ihre Firewall sonst möglicherweise aufgebläht wird (denken Sie an das folgende Szenario: Skript hat eine Regel hinzugefügt, dann wird die Firewall gespeichert, dann entfernt das Skript die Regel, Neustart – Firewall geladenGerettetZustand mit der Regel, dann wird das Skript ausgeführt und fügt hinzuein andererRegel; nach einigen Wiederholungen sehen Sie mehrere gleiche Regeln in der Firewall).

Fügen Sie zunächst zur OpenVPN-Konfiguration Folgendes hinzu:

script-security 2
up /etc/openvpn/add-rule.sh
down sudo /etc/openvpn/remove-rule.sh

script-securityist erforderlich, damit Skripte überhaupt ausgeführt werden können.

Es ist sehr wahrscheinlich, dass Sie keinen Root-Zugriff haben userund/oder groupZugriff auf die Serverkonfiguration haben (was gut ist!), sodass Ihr downSkript mit den Berechtigungen dieses Benutzers/dieser Gruppe ausgeführt wird. Daher müssen Sie erneut Berechtigungen erlangen, um die Regel entfernen zu können. Erstellen Sie eine Datei /etc/sudoers.d/openvpn-remove-rule, die die folgende Zeile enthält, die es diesem Benutzer ermöglicht, den besagten Befehl auszuführen:

<user> ALL=(ALL) NOPASSWD: /etc/openvpn/remove-rule.sh

(ersetzen Sie <user>es wahrscheinlich durch den Benutzer, der in der OpenVPN-Konfiguration festgelegt ist nobody). chmod 0400 /etc/sudoers.d/openvpn-remove-ruleAndernfalls wird sudo das Laden ablehnen.

Erläuterungwarum wir ein Skript brauchenund nicht einfach einen iptables-Befehlsaufruf über sudo direkt in die OpenVPN-Konfiguration einfügen. Kurz gesagt: Sicherheit.

Im Gegenteil, upder Befehl wird ausgeführt, bevor die Root-Berechtigungen gelöscht werden. Aus Konsistenzgründen schlage ich jedoch vor, auch hierfür ein Skript zu verwenden.

Der Inhalt dieser Skripte ist offensichtlich. Geben Sie einfach Ihre iptables-Befehle ein, die beim Starten und Herunterfahren des Servers ausgeführt werden müssen. (Grundsätzlich können Sie dort beliebige Befehle verwenden, nicht nur iptables.) Machen Sie beide Skripte ausführbar.

Lesen Sie man openvpnals Referenz die Skriptschnittstelle.

verwandte Informationen