Installation eines eigenen, sicheren Wireguard VPN Servers auf einem Raspberry Pi oder einem Ubuntu/Debian Server/VM

Im nachfolgenden Artikel beschreibe ich, wie man einen eigenen Wireguard VPN Server installieren kann. Das kann sinnvoll sein, um z.B. von unterwegs auf seinen Computer oder Server zugreifen zu können. Anders als OpenVPN ist Wireguard sehr einfach zu konfigurieren und selbst für Menschen mit weniger IT-Sachverstand problemlos einzurichten.

Die Basis für dieses Projekt ist das Paket PiVPN. Wer jetzt denkt: „Moment, das ist doch für den Raspberry Pi„, der hat grundsätzlich natürlich recht. Allerdings funktioniert das auch absolut problemlos auf normalen Ubuntu und Debian-Systemen.

Diese Anleitung für die Wireguard VPN Installation ist also universell für Raspberry Pi, aber auch alle anderen VMs, Server, usw. die ein Debian-Basiertes Betriebssystem (Debian, Ubuntu, etc.) verwenden.

Vorbereitung

Zunächst muss mittels SSH eine Verbindung zum Zielsystem hergestellt werden und mit einem Root-User angemeldet werden.

Das Zielsystem muss über eine funktionierende Internetverbindung verfügen, damit wir die notwendigen Pakete für Wireguard installieren können.

Du benötigst für den produktiven Betrieb ggf. eine Feste IP-Adresse an deinem Internet-Anschluss oder z.B. einen DynDNS Service (https://www.noip.com/de-DE/free). Sonst würde beim nächsten Mal, wenn dein Provider deine öffentliche IP ändert dein VPN Server nicht mehr erreichbar sein.

Updaten der Repositorys:

sudo apt update
sudo apt upgrade -y

Installation von Wireguard über PiVPN

Nun wird einfach folgender Befehl ausgeführt, der den Download aller notwendigen Pakete vornimmt und den Konfigurationsassistenten automatisch startet.

curl -L https://install.pivpn.io | bash
Output vom vorher genannten Befehl für die Installation von Wireguard VPN via PiVPN
Output vom vorher genannten Befehl für die Installation von Wireguard VPN via PiVPN

Falls bei dir eine Fehlermeldung erscheint, dass Curl nicht gefunden werden konnte, musst du es ggf. zunächst installieren:

sudo apt install curl

Konfigurationsassistent

Willkommensbildschirm des PiVPN Konfigurationsassistenten

Der PiVPN Installationsassistent startet mit der oben zu sehenden Meldung. Diese wird natürlich mit Ok bestätigt.

Die nachfolgenden Meldungen dienen der Information und können bestätigt werden.

Anschließend wird nach einem User gefragt, der die VPN Konfiguration „hält“. Hier wähle ich meinen Admin-User aus. Einen anderen habe ich nicht eingerichtet.

Auswahl des Useraccounts, der die VPN Konfiguration „hält“

Nun folgt der wichtigste Schritt. Hier wird erfragt, welche VPN-Lösung benutzt werden soll. Hier wählen wir natürlich Wireguard-VPN. Stelle sicher, dass im Feld vor Wireguard ein Stern (*) ist.

Auswahl von Wireguard als VPN Typ
Auswahl von Wireguard als VPN Typ

Nun wird nach dem Port gefragt, welcher benutzt werden soll. Ich empfehle den Standard-Port zu belassen. Dieser ist Port 51820 über das UDP. Falls du hier einen anderen Port verwendest, merke dir diese Portnummer – du musst Sie später in deiner Firewall bzw. auf deinem Router freigeben.

Portdefinition für Wireguard
Portdefinition für Wireguard

Im nachfolgenden Dialog wird nach einem DNS-Service gefragt. Hier kannst du dir deine Präferenz frei auswählen. Ich empfehle Quad9 oder Google als DNS-Service. Die Verfügbarkeit ist hier sehr gut.

Nun steht eine Entscheidung an, wie deine bestehende Infrastruktur aussieht. Ist dein Internetanschluss über eine Feste IP erreichbar, oder nutzt du einen DynDNS Service?

Je nachdem kannst du hier deine Auswahl treffen. Meine IP ist fest, deshalb nehme ich die erste Option. Zum Testen verwende im Zweifel ebenfalls die IP.

Bestätige alle weiteren Dialoge mit Ok bzw. Yes.

Damit werden alle Einstellungen getätigt, die Empfohlen sind – u.a. nimmt PiVPN automatisch Sicherheitsupdates vor, damit dein VPN Server stehts sicher ist.

Die letzte Frage, ob ein Reboot durchgeführt werden soll, empfehle ich dir zu bestätigen.

Wireguard VPN User anlegen

Um nach erfolgtem Reboot nun VPN Zugänge anzulegen wird folgender Befehl ausgeführt:

pivpn add

Der Befehl fragt dich nach der Ausführung nach einem Namen für den VPN-Client. Trage hier am Besten etwas sprechendes ein, damit du später noch weißt, um was es sich handelt.

Unter /home/user/configs sind die Konfigurationen abgelegt.

Die Config benötigst du auf dem Client, der sich per VPN verbinden soll. Du kannst die Config-Datei also entweder per SFTP vom Server herunterladen oder den Inhalt einfach aus der SSH-Console kopieren und in einer Textdatei einfügen. Öffne die Config dazu per

nano Philips-Iphone.conf

Den Namen entsprechend gegen den deines Clients tauschen. Der Inhalt sieht z.B. so aus:

[Interface]
PrivateKey = OGUTZKET3Edasd7i1KgUYNxqq7AJfup83iNfbXh9529RZGg=
Address = 10.105.250.2/24
DNS = 9.9.9.9, 149.112.112.112
[Peer]
PublicKey = 95Aal8jh6kJ+FWcafsQNweldNHtZRNyc5rqm16PasQddDE=
PresharedKey = l0KqrtVleaSGZ/33lmfasfaN1D2TiFoK3DB2jtJUnKuHq2os=
Endpoint = 31.17.94.176:51820
AllowedIPs = 0.0.0.0/0, ::0/0

Diesen Inhalt deiner Datei kopierst du einfach und fügst sie in eine Textdatei (notepad unter Windows) ein und speicherst die Textdatei als .conf Datei. Diese .conf-Datei kannst du dann auf das jeweilige Gerät per USB Stick, Mail oder ähnlich übertragen und dort den Wireguard Client einrichten. https://www.wireguard.com/install/

Die Einrichtung auf Smartphones ist einfacher

Was die Einrichtung nun so phantastisch einfach macht, ist das die Konfiguration für den Client einfach über einen QR Code machbar ist. Dies ist z.B. für Handys super geeignet.

Um einen QR Code zu erstellen nutze folgenden Befehl:

pivpn -qr

Wähle bei der Abfrage, den Client für den du den QR Code anzeigen möchtest und drücke Enter.

Der QR-Code sieht dann so aus:

Hier kannst du einfach in der Wireguard App auf deinem Handy den QR-Code Scannen und fertig ist die Konfiguration.

Finale Schritte

Abschließend muss, damit der Server erreichbar ist, ein Port-Forwarding auf deiner Firewall bzw. deinem Router angelegt werden. Suche dazu nach deinem Router-Modell und dem Begriff Port-Forwarding bei Google, wenn du nicht weißt, wie die Einrichtung bei deinem Gerät funktioniert.

Damit du ein VPN aufbauen kannst, musst du auf deinem Router ein Port-Forwarding des Ports 51820 (UDP) anlegen und an deinen Server/VM/Raspberry Pi weiterleiten.

Dein VPN Server ist somit grundsätzlich einsatzbereit.

Ich empfehle für die Verwendung des Wireguard VPN Servers die Nutzung eines Stromsparenden PCs. Am Besten kompatibel ist und bleibt der Raspberry Pi. Das Modell 4 ist mittlerweile gut verfügbar. Die 1GB Variante reicht völlig aus.

Um die Verwaltung von PiVPN zu vereinfachen, gibt es auch ein Projekt, um PiVPN um eine Web-UI zu erweitern. Dieses Projekt basiert auf Docker. Hier der Link:

https://github.com/WeeJeWel/pivpn-web