In dieser Anleitung installieren wir einen WireGuard VPN Server unter Proxmox in einem effizienten Linux-Container. Die Installation von WireGuard ist dank eines Installationsskripts und der Verwendung von LXC-Vorlagen innerhalb von wenigen Minuten durchzuführen. Die kostenlose VPN-Lösung kann dafür verwendet werden, um einen Tunnel in mit dem privaten Netzwerk Zuhause herzustellen oder um Mitarbeiter vom Home-Office aus mit der IT-Infrastruktur des Unternehmens zu verbinden.
Die Implementierung eines virtuellen privaten Netzwerks (VPN) mit WireGuard profitiert von einer leichten Einrichtung, die selbst den meisten Anfängern gelingt. Das VPN-Protokoll ist schnell, zuverlässig und durch die hohe Sicherheit eines der besten VPN-Protokolle unserer Zeit.
Ich habe auch eine Anleitung für die Installation von WireGuard-VPN auf einem Hostsystem mit Linux auf meinem Blog veröffentlicht, falls du kein Proxmox verwendest oder den VPN-Server lieber in eine virtuelle Maschine installieren möchtest. Die in diesem Tutorial verwendete Methode ist jetzt noch einfacher umzusetzen und ausgezeichnet für die Installation von WireGuard unter Proxmox-VE. Folge der Schritt-für-Schritt-Anleitung für die Einrichtung.
Inhaltsverzeichnis: Wireguard VPN unter Proxmox-VE mit LXC (Schritt-für-Schritt Anleitung)
Einen WireGuard VPN-Server unter Proxmox installieren: Container (LXC) erstellen: Schritt 1
Überprüfe zunächst, ob deine Container-Templates unter Proxmox noch aktuell sind. Dieser Beitrag hilft dir bei der Aktualisierung: [Verwaltung von LXC-Vorlagen].
In dieser Installationsanleitung für die Installation von WireGuard unter Proxmox-VE verwenden wir eine aktuelle Version von Linux Debian 11.3.0 (Bullseye). Erstelle zunächst einen neuen Container über die Weboberfläche von Proxmox mit den folgenden Konfigurationen (Optional – Mehr geht immer):
- Unprivilegierter Container (Ja)
- 1-2 Kerne
- Wähle ein aktuelles Debian-Container-Template
- 1024-2048 MB RAM
- 1024-2048 MB Swap
- 12 GB Festplattenspeicher
- Vergebe eine statische IP-Adresse (Empfohlen)
Übernehme die Einstellungen und schließe die Einrichtung des Linux-Containers (LXC) unter Proxmox ab. Der Container sollte noch nicht gestartet werden, da wir zuvor noch eine kleine Konfiguration am Hostsystem vornehmen müssen.
Konfiguration über die Proxmox-Shell am Hostsystem vornehmen: Schritt 2
Verwende die Proxmox-Shell über die angemeldete Weboberfläche und verwende den Nano-Editor, um wichtige Konfigurationen für den WireGuard-Server im Container vorzunehmen. Alternativ kannst du dich auch über einen SSH-Client deiner Wahl mit dem Proxmox-Host verbinden. Passe den Inhalt vom nächsten Befehl „Container_ID“ mit der dreistelligen Identifikationsnummer deines soeben erstellten Linux-Containers an.
nano /etc/pve/lxc/Container_ID.conf
Füge ganz unten diese beiden Zeilen an das untere Ende der Datei hinzu:
lxc.cgroup.devices.allow: c 10:200 rwm
lxc.mount.entry: /dev/net dev/net none bind,create=dir
Speichere die Änderungen ab (STRG +S) und verlasse den Nano-Editor wieder (STRG +X).
Jetzt müssen wir noch Zugriffsrechte für ein bestimmtes Verzeichnis einpflegen. Das gelingt dir mit diesem Befehl:
chown 100000:100000 /dev/net/tun
Die Konfiguration am Proxmox-Server ist jetzt abgeschlossen. Du kannst die SSH-Verbindung jetzt wieder trennen. Widmen wir uns im nächsten Abschnitt der WireGuard-VPN-Server Installation im LXC.
Wireguard im LXC für Proxmox-VE installieren: Schritt 3
Starte den Linux-Container über die Weboberfläche deines Proxmox-Servers und beginne mit der routinemäßigen Aktualisierung des Systems. Erlaube zuerst den SSH-Zugriff [Anleitung] und verbinde dich mit deinem Container. Verwende anschließend den folgenden Befehl:
apt update && apt upgrade -y
Jetzt installieren wir WireGuard über das sehr einfach gehaltene Installationsskript, dass wir mit dem folgenden Befehl herunterladen und ausführen können:
wget git.io/wireguard -O wireguard-install.sh && bash wireguard-install.sh
Anschließend müssen einige Fragen beantwortet werden. Dieser Leitfaden unterstützt dich bei der Eingabe der abgefragten Informationen:
Hinweise:
Damit du dich von außerhalb deines LAN-Netzwerks von deinem VPN-Client aus mit deinem WireGuard-Server für den Aufbau eines Tunnels verbinden kannst, benötigst du eine öffentliche statische-IP-Adresse oder einen DynDNS-Dienst, dessen Zugangsdaten im Router eingepflegt werden müssen. Ich verwende dafür den kostenlosen DynDNS-Service von ddnss.de.
Der standardisierte Port von WireGuard lautet 51820 (UDP) und muss innerhalb der NAT-Einstellungen im Router für die IP-Adresse deines WireGuard-Servers freigegeben werden. Da dieser sonst nicht nach außen hin erreichbar sein wird. Der Port kann bei Bedarf oder zur Erhöhung der Sicherheit verändert werden. Verwendest du eine weitere Firewall, müssen auch hier gesonderte Freigaben erteilt werden.
Welcome to this WireGuard road warrior installer!
This server is behind NAT. What is the public IPv4 address or hostname?
Public IPv4 address / hostname [123.456.789]: meinevpn.ddnss.de
What port should WireGuard listen to?
Port [51820]:
Enter a name for the first client:
Name [client]: client1
Select a DNS server for the client:
1) Current system resolvers
2) Google
3) 1.1.1.1
4) OpenDNS
5) Quad9
6) AdGuard
DNS server [1]: 1
BoringTun will be installed to set up WireGuard in the system.
Should automatic updates be enabled for it? [Y/n]: Y
WireGuard installation is ready to begin.
Press any key to continue...
Das Installationsskript hat die größte Arbeit bereits für uns erledigt. Wir müssen aber noch eine kleine Anpassung an der WireGuard-Konfigurationsdatei vornehmen, damit die mit dem Server verbundenen Clients auch ordnungsgemäß kommunizieren können (Routing).
Öffne die Datei zunächst mit dem Nano-Editor und füge die folgenden Zeilen innerhalb des Segments [Interfaces] hinzu:
nano /etc/wireguard/wg0.conf
Füge diese beiden Zeilen in den beschriebenen Bereich ein:
[Interfaces]
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
Speichere die Änderungen an der Konfigurationsdatei ab (STRG +S) und verlasse die Datei anschließend wieder (STRG + X). An diesem Punkt ist die WireGuard-Installation unter Proxmox fast abgeschlossen.
Wir müssen keine Client- und Server-Schlüsselpaare (Privat- und Public Keys) mehr generieren, da die Schlüssel bereits vom Skript generiert und in die Konfigurationsdatei eingepflegt worden sind. Gerade dieser Aspekt macht die Implementierung der Open-Source-VPN-Lösung sehr anfängerfreundlich.
Überprüfe und aktiviere den WireGuard-Service nach der erfolgreichen Installation
Überprüfe zunächst, ob der WireGuard-Service ordnungsgemäß ausgeführt wird. Dafür kannst du den folgenden Befehl verwenden:
systemctl status wg-quick@wg0
Sollte der Service noch nicht gestartet worden sein, kannst du diese Befehle verwenden, um den WireGuard-Service zu aktivieren und die Konfiguration einzulesen:
systemctl enable wg-quick@wg0.service
systemctl daemon-reload
systemctl start wg-quick@wg0
Die Verwaltung von Clients unter WireGuard
Während der Installation wurde der erste Client für die WireGuard-VPN angelegt. Er hat in dieser Anleitung den Namen [client1] erhalten. Für jeden Client, der mit dem VPN-Server verbunden werden soll, benötigen wir eine eigene Konfiguration. Wir können das zuvor heruntergeladene Installationsskript verwenden, um weitere Clients anzulegen.
Das Werkzeug für die Verwaltung kann mit diesem Befehl aufgerufen werden:
bash wireguard-install.sh
Die folgende Auswahl steht uns für die Client-Verwaltung zur Verfügung:
- Einen neuen Client hinzufügen
- Einen Client entfernen
- WireGuard deinstallieren
- Programm verlassen
Einen VPN-Client mit dem WireGuard Server im Proxmox-Container verbinden (Aufbau eines Tunnels)
Bei der Erstellung eines neuen Clients z.B. mit dem Namen „client2“ wird uns nach der Anlegung des Benutzerprofils ein QR-Code angezeigt. Wenn du nun dein Smartphone mit der geöffneten Kamera-App vor dem QR-Code positionierst, wird das Profil auf deinem Gerät exportiert.
Von dort aus kann die Konfiguration auf beliebige viele Geräte und Plattformen verteilt werden, da die WireGuard-Clients (erhältlich für Android, iOS, Windows, Linux und Mac) über eine direkte Import-Möglichkeit verfügen. Nach dem erfolgreichen Import des entsprechenden WireGuard-Clients, musst du nur noch auf „Verbindung aufbauen“ klicken, und schon bist du mit dem virtuellen privaten Netzwerk (VPN) deines Zuhauses oder mit dem Firmennetzwerk verbunden.
Wichtig für die Einrichtung:
Jeder Client, der sich über einen VPN-Tunnel mit dem Netzwerk verbinden können soll, benötigt ein zuvor angelegtes Benutzerprofil (WireGuard-Client-Konfiguration).
Beispiele für Unternehmen:
Mitarbeiter 1 (client1)
Mitarbeiter 2 (client2)
Beispiele für private Zwecke:
Handy (client1)
Notebook (client2)
Computer (client3)
Eine Client-Konfiguration manuell exportieren:
Falls dir das Exportieren der Client-Profile mittels QR-Codes eher nicht zusagt, lassen sich die Profile auch einfach aus dem Proxmox-Container exportieren. Die Profile werden in dem folgenden Verzeichnis gespeichert:
cd ~
Verwende den Nano-Editor und öffne eine WireGuard-Client-Konfigurationsdatei:
nano client1.conf
Markiere mit dem Mauszeiger den kompletten Inhalt und kopiere alle Zeilen mit dem Shortcut (STRG + C) in die Zwischenablage deines Computers. Das funktioniert über einen SSH-Client wie beispielsweise Putty ausgezeichnet. Erstelle auf deinem Desktop-Client nun eine neue Textdatei, in der du die Konfiguration hinein kopierst. Benenne die Datei jetzt client1.conf und importiere diese in die gewünschte WireGuard-Client-Software.
Zusammenfassung: Installation und Einrichtung abgeschlossen
Wir haben in diesem Tutorial einen WireGuard VPN-Server in einem Linux-Container unter Proxmox installiert und über das Internet freigegeben. Jetzt kannst du dich von überall auf der Welt aus über das Internet mit deinem Netzwerk verbinden. Die Installation und Einrichtung eines virtuellen, privaten Netzwerks ist mit WireGuard zum Kinderspiel geworden.
Durch die Plattform-Unabhängigkeit ist die VPN-Software für alle möglichen Betriebssysteme erhältlich. Vergiss nicht, deinen neuen Server (LXC) in die Backup-Routine deiner verwendeten Backup-Software aufzunehmen.