Home » Linux » Schnell und einfach einen Wireguard VPN betreiben
|

Schnell und einfach einen Wireguard VPN betreiben

In diesem Tutorial zeige ich euch, wie ihr schnell und einfach unter 30 Minuten einen eigenen Wireguard VPN Server, zuhause, oder auf einem Server in einem Rechenzentrum installieren und betreiben könnt. Dies ist nützlich, falls ihr euch auf Auslandsreisen befindet, und ihr z.B nicht wollt, dass man genau weiss, wo ihr euch befindet, euch sicher in fremden WLANs aufhalten wollt, also ihr eure Privatsspähre ein Stück weit erhöhen wollt, oder zum Beispiel auch unterwegs auf Mediatheken zugreifen wollt, welche zum Beispiel Geo-gesperrt sind.

Was ist Wireguard

WireGuard ist eine moderne VPN (Virtual Private Network) Software, die für ihre Einfachheit, hohe Sicherheitsstandards und schnelle Performance bekannt ist. Im Vergleich zu anderen VPN-Protokollen wie OpenVPN oder IPSec, setzt WireGuard auf einen schlankeren Ansatz, was sowohl die Implementierung als auch die Wartung vereinfacht.

Das Protokoll zielt darauf ab, VPN-Technologien zu vereinfachen und zu beschleunigen. Es wurde ursprünglich für den Linux-Kernel entwickelt, ist aber mittlerweile für die meisten Betriebssysteme verfügbar, einschließlich Windows, macOS, BSD, iOS und Android. WireGuard verwendet moderne Kryptografie-Techniken und bietet eine sichere Ende-zu-Ende-Verschlüsselung.

Vorteile von Wireguard gegenüber openVPN und ipSec

Einfachheit und Benutzerfreundlichkeit: Eines der Hauptziele von WireGuard ist es, einfacher zu konfigurieren und zu verwenden zu sein als andere VPN-Lösungen. Die Konfigurationsdateien sind für Menschen lesbar und leicht verständlich, was die Einrichtung und Wartung erheblich vereinfacht.

Sicherheit: WireGuard verwendet state-of-the-art Kryptografie-Protokolle und -Algorithmen, wie zum Beispiel Curve25519 für Schlüsselaustausch, ChaCha20 für Verschlüsselung, Poly1305 für Authentifizierung und BLAKE2s für Hashing. Diese Auswahl an modernen, sicheren Technologien hilft, potenzielle Sicherheitslücken zu minimieren.

Leistung und Effizienz: WireGuard ist für seine hohe Performance und geringen Latenzzeiten bekannt. Es ist deutlich schneller als ältere VPN-Protokolle, vor allem aufgrund seines minimalistischen Designs und der effizienten Verschlüsselungsmethoden. Dies macht es besonders vorteilhaft für mobile Anwendungen, wo Ressourcen begrenzt sind.

Cross-Plattform-Unterstützung: Wie bereits erwähnt, unterstützt WireGuard eine Vielzahl von Betriebssystemen, was es zu einer flexiblen Lösung für unterschiedliche Geräte und Anwendungen macht.

IP-Routing und Roaming: WireGuard unterstützt nahtloses Roaming zwischen verschiedenen Netzwerkverbindungen. Das bedeutet, dass zum Beispiel ein Mobiltelefon, das von einer Wi-Fi-Verbindung zu einer mobilen Datenverbindung wechselt, die VPN-Verbindung nicht verliert. Dies ist besonders nützlich für Nutzer, die ständig unterwegs sind.

Transparenz und Open Source: Da WireGuard Open Source ist, kann der Code von jedem eingesehen, überprüft und verbessert werden. Dies fördert Transparenz und Sicherheit durch eine breite Community-Unterstützung

Vorausetzungen

Ihr benötigt zuerstmal einen Rechner, das kann ein Linux Rechner zuhause sein, der läuft und online bleibt, wenn ihr unterwegs seid, oder auch ein kleiner Server in einem Rechenzentrum z.B bei Ionos oder Hetzner sein. Wichtig ist dass ein einigermassen aktuelles Debian in der Version 11/12, oder ein Ubuntu ab der Version 20.04 bis 22.04 auf dem Server läuft. In einem Rechenzentrum könnt ihr die günstigere Versionen mit 2 CPU Kernen und 4GB RAM nehmen. Verschiedene Angebote könnt ihr euch z.B hier bei IONOS anschauen:

https://www.ionos.de/server/vps

Wie bereits erwähnt, reicht ein Server dieser grösse aus, damit sich ihr und eure Familienmitlieder oder Freunde sich mit eurem eigenen VPN verbinden können, und da die Server bei IONOS, oder in Rechenzentrem allgemein an sehr schnelle Interverbindungen angebunden sind, müsst ihr euch auch keine Sorgen, z.B beim Streaming machen.

Bei einem Rechner zuhause sollte dieser auch mindestens über 2 CPU Kerne verfügen, 4GB RAM besitzen, benötigt jedoch praktischen keinen Festplattenspeicher. Zuhause seid ihr an die Internetgeschwindigkeit eurer Leitung gebunden, heisst also wenn ihr eine Bambusleitung habt, ist unterwegs auch nicht mit viel Geschwindkeit zu rechnen, da der gesammte Datenverkehr zu euch nach hause getunnelt wird, und dann auch WLAN oder 5G Geschwindkeiten deutlich ausgebremst werden.

Server im Rechenzentrum

Das vorgehen einen VPS Server zu mieten ist wirklich einfach. Die meissten Provider führen euch bei einem mit wenigen Klicks durch die Bestellung und die Konfiguration (Betriebssystem Ubuntu 20.04/22.04 oder Debian 11/12 nehmen) Ihr benötigt keinen anderen Schmarn abwählen keine Addons, und keine zusätzlichen Optionen, einfach registrieren und Kreditkartendaten angeben, konfigurieren, IP Adresse ausindig machen, und sich mit dem gegebenen Daten per SSH verbinden.

Der Login geschieht über die öffentliche IP des Servers, z.B mit Putty von einem Windows Rechner aus, oder normal über das Terminal eures Linux Rechners.

Die Logindaten eures Servers findet ihr meisst auch auf der Server-Übersicht.

Firewall Konfiguration

Damit der Wireguard VPN Server funktioniert, müsst ihr in den Firewall Einstellungen eures Servers den entsprechenden Port freigeben, über der Wireguard kommuniziert. Dieser Port ist 51820 UDP.

Für eine verschlüsselte Verbindung zum Userinterface, die wir nachher einrichten, benötigen wir zudem noch den Port 443 TCP.

Die Firewall-Einstellungen findet ihr meisst im Bereich Netzwerk/Firewall-Richtlinien. Bei Ionos sieht das z.B so aus:

Stellt sicher das der Port 51820 als UDP konfiguriert ist. Die Einstellungen im Rechenzentrum sind bereits schon abgeschlossen. Stellt sicher das ihr eure öffentliche IP, und das Passwort notiert habt:

Betrieb zuhause

Habt ihr keine fixe IP Adresse, wäre eine Domain bei einem DynDNS Provider sinnvoll, da es sein kann, das die IP Adresse sich bei einem kurzen Verbindungsabruchs des Modems, oder ein unerwarteter Neustart, sich eure öffentliche IP Adresse ändern könnte. In diesem Tutorial erfahrt ihr, wie ehr euch eine DynDNS Adresse einrichtet, um bei einem Wechsel der IP Adresse trotzdem den VPN weiter verwenden könnt. Da die Gefahr aber relativ gering ist, dass ihr eine neue IP Adresse bekommt, kann das bei einem kurzen Trip eher vernachlässigt werden. Ist ein Ausfall nicht unbedingt kritisch, könnt ihr die öffentliche IP Adresse eures Heimanschluss bei der Installation von Wireguard verwenden.

Beim Betrieb zuhause, muss der Linux Rechner einfach online bleiben, bis ihr wieder zuhause seid. Stellt also sicher dass der Schlafmodus deaktiviert ist. Da der Rechner zuhause eine LAN IP hat, müssen wir ein Portfowarding erstellen. Wie das funktioniert, erfahrt Ihr in diesem Beitrag hier! Stellt sicher, dass Ihr den Port 52180 UDP an die entsprechende interne IP des Rechners, auf dem Wireguard läuft, weitergeleitet wird. Habt ihr eine Firewall auf dem Linux Rechner am laufen, stellt sicher das der benannte Port ebenso freigegeben worden ist.

Den Port 52181 müsst ihr zuhause ebenso nicht weiterleiten, da ihr euch lokal und intern mit eurem Wireguard Server verbinden könnt und somit Zugriff auf euer lokales Netzwerk habt.

Wireguard Installation

Loggt euch auf eurer VPS via SSH ein, oder öffnet euer Terminal auf eurem lokalen Rechner, falls ihr den Wireguard Server zuhause betreibt. Die Installation ist sehr simple. Wir verwenden ein fertiges Docker-Image, welches alles fertig einrichtet. Nur die IP Adressen müssen wir anpassen.

Zuerst installieren wir uns Docker. Docker ist eine Plattform für das Containerisieren von Anwendungen, wodurch diese mit ihren Abhängigkeiten in Containern verpackt und leicht zwischen Umgebungen portiert werden können. Es vereinfacht die Entwicklung, den Versand und die Ausführung von Software. Es bringt quasi alles mit, was den Betrieb von Wireguard notwendig macht und wird entsprechend konfiguriert abgeliefert.

Wir updaten unser System mit apt update und installieren Docker mit apt install docker.io

Nun kommt ein grössere Befehl, welche wir uns vorher anpassen müssen:

docker run -d \
  --name=wg-easy \
  -e WG_HOST=<DEINE_SERVER_IP> \
  -e PASSWORD=<DEIN_ADMIN_PASSWORT> \
  -v ~/.wg-easy:/etc/wireguard \
  -p 51820:51820/udp \
  -p 51821:51821/tcp \
  --cap-add=NET_ADMIN \
  --cap-add=SYS_MODULE \
  --sysctl="net.ipv4.conf.all.src_valid_mark=1" \
  --sysctl="net.ipv4.ip_forward=1" \
  --restart unless-stopped \
  weejewel/wg-easy

Beim Server im Rechenzentrum nehmt ihr die öffentliche IP des Servers, beim Betrieb zuhause nehmt Ihr entweder die öffentliche IP Adresse eures Routers, oder die DynDNS Domain, falls ihr eine erstellt habt. Bitte stellt sicher, dass ihr ein ausreichend starkes Passwort verwendet.

Danach kopiert ihr den ganzen angepassten Absatz in eure Konsole und schickt den Befehl einmal ab. Docker installiert nun den Container mit Wireguard und konfiguriert euch eurer Gerät entsprechend für die Nutzung und erledigt alle entsprechenden Netzwerkeinstellungen. Mit dem Befehl docker ps könnt ihr überprüfen, ob der Container nun auch bereits läuft:

Webzugriff Absichern und Konfiguration der Clients

Webzugriff auf dem öffentlichen Server mit SSL Zertifkat absichern

Damit wir sicher auf das Web-UI zugreifen können, sichern wie die Verbindung zuerst noch mit Nginx, und einem selbstsignierten Zertifikat ab.

Wir installieren uns Nginx zuerst mit:

sudo apt install nginx

und erstellen uns einen Ordner für unsere selbstsignierten Zertifikate:

sudo mkdir -p /etc/nginx/ssl

Danach erstellen wir uns das Zertifikat und einen zusätzlichen Diffie-Hellmann Schlüssel für den sicheren Schlüsselaustausch:

# Erstellen des Zertifikates:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
  -keyout /etc/nginx/ssl/selfsigned.key \
  -out /etc/nginx/ssl/selfsigned.crt

# Erstellen des Diffie-Hellmann Schlüssels:

sudo openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048

Jetzt erstellen wir eine Nginx Konfiguration, damit die Anfrage über unser SSL Zertifikat an das WebUI gesendet werden kann:

sudo nano /etc/nginx/sites-available/wg-easy.conf

und platzieren darin folgenden Inhalt:

server {
    listen 443 ssl;
    server_name _;

    ssl_certificate /etc/nginx/ssl/selfsigned.crt;
    ssl_certificate_key /etc/nginx/ssl/selfsigned.key;
    ssl_dhparam /etc/nginx/ssl/dhparam.pem;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;

    location / {
        proxy_pass http://127.0.0.1:51821;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    error_page 497 https://$host$request_uri;
}

server {
    listen 80;
    server_name _;

    return 301 https://$host$request_uri;
}

Wir speichern die Datei mit strg+o und beenden mit strg+x. Jetzt platzieren wir noch einen Link in den Ordner sites-enabled:

sudo ln -s /etc/nginx/sites-available/wg-easy.conf /etc/nginx/sites-enabled/

Die Konfiguration können wir testen mit:

sudo nginx -t

und wenn keine Fehler ausgegeben werden, starten wir Nginx neu mit:

sudo systemctl reload nginx

Jetzt können wir im Browser https://1.2.3.4 (IP mit eurer Server-IP ersetzen) eingeben, und landen auf der Web-UI mit einer verschlüsselten Verbindung:

Webzugriff auf dem Wireguard Server zuhause absichern

Müsst ihr nicht, da ihr euch direkt mit Wireguard in euer Netzwerk Tunnel könnt, und danach auf das Web-UI zugreifen könnt.

Die Profile richtet ihr euch am besten direkt zuhause auf dem Wireguard Home Server ein. Dazu gebt ihr direkt auf dem Server im Browser http://localhost:51821 ein und landet auf dem Web Interface. Falls ihr auf einem anderen Rechner im LAN auf das Wireguard Interface zugreifen wollt, gebt ihr http://ip_des_wireguardservers:51821 ein.

Zugänge auf dem Wireguard Interface einrichten

Loggt euch mit eurem Passwort ein. Dann seid ihr auch schon auf der ziemlich übersichtlichen und einfach gehaltenen Bedienungszentrale, die eigentlich nur aus einer Seite besteht.

Hier könnt ihr ganz einfach mehrere Konten anlegen, die ihr euren Geräten zuteilt. Wichtig ist, dass ein Profil nur einmal verwendet werden kann, es also nicht mit anderen Benutzern geteilt werden kann. Das liegt daran dass sich ein Endgerät über eine Public/Privatekey am Server registriert, und die Verbindung damit sichert. Ein Profil kann also nicht auf 2 Geräten verwendet werden. Ihr könnt aber beinahe unbegrenzt Konten erstellen wie ihr Lustig seid. Klickt dazu einfach auf New Client, gebt dem Gerät einen Namen, und wiederhollt das solange wie ihr Accounts benötigt:

In der Übersicht seht ihr danach eure Clients. Rechts findet ihr Optionen wie das aktivieren/deaktivieren des Profils, die QR Anzeige, Möglichkeiten den Client wieder zu entfernen oder diese manuelle Konfiguration für den Client herunterzuladen. Wichtig hierbei ist der QR Code für das Smartphone und die Konfigurationsdatei für den Laptop falls ihr damit Unterwegs seid.

Pro Tipp: Sobald ihr den ersten Client auf dem öffentlichen Server eingerichtet habt (siehe nächsten Abschnitt) könnt ihr auch den öffentlichen Zugang via Nginx wieder deaktivieren, den danach könnt ihr über die Interface IP in eurem Browser auf das Web-UI zugreifen, da ihr euch bei bestehender Verbindung ja auf den Server getunnelt habt. Die Adresse wäre dann http://10.8.0.1:51821
Ihr müsst euch keine Sorgen um die http Verbindung machen, da ihr ja intern auf dem Server auf das UI zugreift.

Smartphone, Windows und Linux Client einrichten

Smartphone Client

Für euer Android oder iPhone benötigt ihr nichts anderes als die App WG Tunnel von F-Droid oder die App Wireguard von Aurora. Diese installiert ihr wie gewohnt, und gebt der App Netzwerkberechtigungen falls Ihr CalyxOS oder GrapheneOS verwendet. Beim ersten öffnen erlaubt ihr der App als VPN agieren zu dürfen.

Alles was ihr tun müsst, ist mit dem plus Symbole einen neuen Tunnel zu erstellen, und den QR Code eures Profils abzufotografieren:

Mit der App Wireguard verhält es sich genau gleich, die iPhone App ist ähnlich einfach zu bedienen. Am Schluss müsst ihr nur mit dem Schieberregler oben den VPN aktivieren oder wieder deaktiveren.

Linux Client

Auf dem Linux Laptop, geht die Einrichtung von Wireguard einfach via Konsole am schnellsten. Öffnet eure Konsole und installiert Wireguard mit sudo apt install wireguard, danach startet ihr schnell euren Rechner neu. Als nächstes öffnet ihr eurer Terminal erneut, und legt mit sudo nano /etc/wireguard/laptop.conf eine neue Konfiguration an. Der Name Laptop kann hierbei geändert werden, je nach euren Geräten. Ladet euch die Wireguard Konfiguration herunter, öffnet sie, und platziert den kompletten Inhalt in diese Datei. Speichert sie mit STRG+o und beendet mit STRG+x

Die Verbindung stellt ihr ganz einfach mit folgendem Befehl her, wobei Laptop auf den Namen eurer Konfigurationsdatei anzupassen ist.

wg-quick up laptop

Wireguard stellt die Verbindung dann super schnell her, und ihr seid mit eurem VPN verbunden. Mit

wg-quick down laptop

Beendet ihr die Verbindung wieder.

Windows Client

Ladet euch den Windows Client hier herunter und installiert diesen auf eurem Rechner. Startet anschliessend das Programm. Ihr findet links unten den Button Tunnel hinzufügen oder Add Tunnel . Klickt diesen und wählt anschliessend Tunnel aus Datei hinzufügen. Wählt die Konfigurations-Datei aus, die ihr vom Wireguard Server heruntergeladen habt.

Anschliessend bekommt ihr rechts eine Übersicht der Verbindung. Klickt auf Aktivieren oder Activate, und der Windows Rechner wird sich mit eurem Wireguard Server verbinden.

WG-Easy Server updaten

Falls ihr eine Update Benachrichtigung bekommt, könnt ihr auf dem Server folgende Befehle ausführen:

docker stop wg-easy
docker rm wg-easy
docker pull weejewel/wg-easy

Danach führt ihr den Docker Run Befehl mit der Konfiguration von oben wieder aus und seid wieder am Start.

Abschluss

Wir haben nun endlich unseren eigenen VPN Server in Betrieb und können gewisse Geolokale Einschränkungen umgehen, uns sicher in fremden WLANs, zum Beisiel in öffentlichen Bereichen, aufhalten und vielen Schnüfflern erfolgreich verbergen, and welchem Ort wir gerade unterwegs sind. Wir haben auch ein Tutorial geschrieben wie man einen eigen openVPN Server bei sich zuhaue betreibt. Wer lieber openVPN verwendet, kann dieses Tutorial auch auf einer VPS in einen Rechenzentrum anwenden.

Lest doch noch unseren Artikel, wie man einen VPN richtig verwenden sollte, und auf was zu achten ist, falls ihr euch mehr über das Thema informieren wollt.

Ähnliche Beiträge

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert