Zurück zum Blog

WireGuard einrichten: Eigenen VPN-Server aufsetzen

WireGuard einrichten: eigener VPN-Server unter Ubuntu mit Schlüsselpaaren, wg0.conf, IP-Weiterleitung und NAT, Client-Konfiguration und QR-Code.

Nodesty-Team6 Min. LesezeitSicherheit
Der Schriftzug WireGuard mit VPN, 51820 und Peers auf dunklem Nodesty-Hintergrund

WireGuard ist ein modernes, schnelles und schlankes VPN-Protokoll. Mit WireGuard auf einem gemieteten Server betreiben Sie in wenigen Minuten Ihren eigenen VPN-Server: Sie verschlüsseln Ihren Datenverkehr im WLAN von Cafés und Hotels, greifen sicher auf Dienste wie Datenbanken und Verwaltungsoberflächen zu, ohne sie im Internet freizugeben, und bringen die Geräte Ihres Teams in einem einzigen privaten Netz zusammen.

In dieser Anleitung zeigen wir, wie Sie WireGuard auf einem Ubuntu- oder Debian-Server installieren, Schlüssel erzeugen, Server und Clients konfigurieren, Weiterleitung und NAT einrichten, einen QR-Code für Smartphones erstellen, und geben Sicherheitsempfehlungen.

Was ist WireGuard und wofür nutzt man es?

WireGuard ist ein VPN-Protokoll, das direkt in den Linux-Kernel integriert ist. Jedes Gerät besitzt ein Schlüsselpaar, und die Geräte erkennen einander an ihren öffentlichen Schlüsseln; das Prinzip ähnelt SSH-Schlüsseln. Mit Ihrem eigenen VPN-Server können Sie:

  • Sicherheit in nicht vertrauenswürdigen Netzen: In öffentlichen WLANs läuft Ihr gesamter Datenverkehr durch einen verschlüsselten Tunnel zu Ihrem Server.
  • Sicherer Zugriff auf Dienste: Ports für Datenbanken, Verwaltungsoberflächen oder RDP geben Sie nicht im Internet frei, sondern nur im VPN-Netz.
  • Teamnetz: Die Geräte Ihres Teams und Ihre Server erreichen einander im selben privaten Netz.
  • Feste Ausgangs-IP-Adresse: Sie können den Zugriff auf bestimmte Dienste ausschließlich von der IP-Adresse Ihres Servers aus erlauben.

Installation

Nachdem Sie sich per SSH mit Ihrem Server verbunden haben, installieren Sie WireGuard und die Hilfswerkzeuge:

sudo apt update
sudo apt install wireguard qrencode iptables

Schlüssel erzeugen

Führen Sie die Befehle in diesem Abschnitt als root im Ordner /etc/wireguard aus. Erzeugen Sie je ein Schlüsselpaar für den Server und den ersten Client (zum Beispiel Ihr Smartphone):

sudo -i
cd /etc/wireguard
umask 077
wg genkey | tee server.key | wg pubkey > server.pub
wg genkey | tee handy.key | wg pubkey > handy.pub

Mit Befehlen wie cat server.key lassen Sie sich die Schlüssel anzeigen und kopieren sie in die folgenden Dateien.

Die .key-Dateien sind private Schlüssel und dürfen den Server nicht verlassen (der private Schlüssel des Clients wird nur in die Konfiguration des Clients geschrieben). Die .pub-Dateien sind öffentliche Schlüssel und werden an die Gegenseite weitergegeben.

Serverkonfiguration

Ermitteln Sie zuerst den Namen der Netzwerkschnittstelle, über die der Server ins Internet geht:

ip route | grep default

Der Name nach dem Wort dev in der Ausgabe (zum Beispiel eth0 oder ens3) ist der Schnittstellenname. Legen Sie die Datei /etc/wireguard/wg0.conf an:

[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = PRIVATER_SERVER_SCHLUESSEL
PostUp = iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
PostDown = iptables -t nat -D POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

[Peer]
# Handy
PublicKey = OEFFENTLICHER_HANDY_SCHLUESSEL
AllowedIPs = 10.8.0.2/32
  • Address: Die Adresse des Servers im VPN-Netz. Das Netz 10.8.0.0/24 bietet Platz für mehr als 250 Geräte.
  • PrivateKey: Der Inhalt der Datei server.key.
  • PostUp und PostDown: Fügen beim Start des VPN die NAT-Regel hinzu, mit der die Clients über die IP-Adresse des Servers ins Internet gehen, und entfernen sie beim Beenden wieder. Ersetzen Sie eth0 durch Ihren eigenen Schnittstellennamen.
  • [Peer]: Ein Abschnitt pro Client. AllowedIPs ist die VPN-Adresse, die diesem Client zugewiesen ist.

IP-Weiterleitung aktivieren

Damit der Server den Datenverkehr der Clients ins Internet weiterleiten kann, aktivieren Sie die IP-Weiterleitung:

echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/99-wireguard.conf
sudo sysctl --system

Firewall

Wenn Sie ufw verwenden, öffnen Sie den WireGuard-Port und erlauben die Weiterleitung des Datenverkehrs aus dem VPN:

sudo ufw allow 51820/udp
sudo ufw route allow in on wg0 out on eth0

ufw blockiert weitergeleiteten Datenverkehr standardmäßig; ohne die zweite Regel können sich die Clients zwar verbinden, kommen aber nicht ins Internet. Wie Ports und Firewalls funktionieren, erklären wir in unserem Artikel Was ist ein Port?.

WireGuard starten

sudo systemctl enable --now wg-quick@wg0
sudo wg show

enable sorgt dafür, dass das VPN bei jedem Start des Servers automatisch hochfährt. Die Ausgabe von wg show zeigt die verbundenen Clients, den Zeitpunkt des letzten Handshakes und die übertragene Datenmenge.

Client-Konfiguration

Legen Sie für den Client im Ordner /etc/wireguard eine Konfigurationsdatei an, zum Beispiel handy.conf:

[Interface]
PrivateKey = PRIVATER_HANDY_SCHLUESSEL
Address = 10.8.0.2/32
DNS = 1.1.1.1

[Peer]
PublicKey = OEFFENTLICHER_SERVER_SCHLUESSEL
Endpoint = 203.0.113.10:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
  • Endpoint: Die IP-Adresse Ihres Servers und der WireGuard-Port.
  • AllowedIPs = 0.0.0.0/0: Der gesamte IPv4-Datenverkehr läuft durch den Tunnel. Wenn Sie nur auf Dienste im VPN-Netz zugreifen möchten, tragen Sie 10.8.0.0/24 ein; der übrige Datenverkehr geht dann weiter über Ihre normale Verbindung.
  • PersistentKeepalive: Hält die Verbindung in Mobilfunknetzen und hinter einem Router offen.

QR-Code für das Smartphone: Die mobile WireGuard-App kann die Konfiguration aus einem QR-Code einlesen. Dieser Befehl zeigt den QR-Code direkt im Terminal des Servers an:

qrencode -t ansiutf8 < handy.conf

Scannen Sie den Code in der App mit der Option zum Hinzufügen per QR-Code und aktivieren Sie den Tunnel. Auf Computern genügt es, die .conf-Datei in die WireGuard-App für Windows, macOS oder Linux zu importieren.

Neue Geräte hinzufügen

Für jedes neue Gerät:

  1. Erzeugen Sie ein neues Schlüsselpaar.
  2. Fügen Sie in wg0.conf einen neuen [Peer]-Abschnitt hinzu und weisen Sie ihm eine freie Adresse zu (10.8.0.3/32, 10.8.0.4/32 …).
  3. Erstellen Sie für das Gerät eine eigene Client-Datei.
  4. Laden Sie die Konfiguration mit sudo systemctl restart wg-quick@wg0 neu.

Verwenden Sie denselben Schlüssel nicht auf mehreren Geräten; versuchen sich zwei Geräte gleichzeitig zu verbinden, trennen sie sich gegenseitig die Verbindung.

Sicherheitsempfehlungen

  • Schützen Sie die privaten Schlüssel. Stellen Sie sicher, dass der Ordner /etc/wireguard nur für root lesbar ist, und löschen Sie die Client-Dateien vom Server, nachdem Sie sie auf die Geräte übertragen haben.
  • Entfernen Sie verlorene Geräte sofort. Geht ein Smartphone verloren, löschen Sie den zugehörigen [Peer]-Abschnitt und starten WireGuard neu.
  • Verlagern Sie Verwaltungsdienste ins VPN. Machen Sie Datenbanken und Verwaltungsoberflächen nur aus dem Netz 10.8.0.0/24 erreichbar; so werden diese Dienste nie im Internet freigegeben. Für die Absicherung von SSH lesen Sie auch unsere Anleitung Fail2ban installieren.
  • Halten Sie sich an die Nutzungsregeln. Der gesamte Datenverkehr, der Ihren VPN-Server verlässt, erscheint mit der IP-Adresse Ihres Servers und liegt in Ihrer Verantwortung. Die Fair-Use-Richtlinie von Nodesty erlaubt auf Paketen mit Fair-Use-Regelung keine VPN- oder Reverse-Proxy-Dienste mit hohem Datenaufkommen; nutzen Sie WireGuard für den sicheren Zugriff Ihrer eigenen Geräte und Ihres Teams.

Nodesty-Server für WireGuard

Die AMD Ryzen 9 9950X vServer und AMD EPYC 7763 vServer von Nodesty betreiben WireGuard dank KVM-Virtualisierung und vollem Root-Zugriff auf Kernelebene. Die Standorte Frankfurt und New York der 9950X-Pakete bieten einen Tunnel mit niedriger Latenz für Ihre Geräte in Europa und Nordamerika; der L3–L7-DDoS-Schutz durch nShield schützt Ihren VPN-Server zudem vor Angriffen auf Netzwerkebene.

Häufig gestellte Fragen

WireGuard oder OpenVPN?

WireGuard ist neuer, schneller und deutlich einfacher zu konfigurieren; es kommt mit wenigen Zeilen Konfiguration aus und ist Teil des Linux-Kernels. OpenVPN ist seit vielen Jahren im Einsatz und kann auch über TCP laufen, was es in manchen eingeschränkten Netzen flexibler macht. Für eine neue Installation empfehlen wir in den meisten Fällen WireGuard.

Macht mich mein eigenes VPN anonym?

Nein. Ihr eigener VPN-Server verschlüsselt Ihren Datenverkehr in nicht vertrauenswürdigen Netzen und lässt Sie mit der IP-Adresse Ihres Servers ins Internet gehen, doch diese IP-Adresse gehört zu dem Server, den Sie gemietet haben. Nutzen Sie Ihr eigenes VPN für Sicherheit und Zugriff, nicht als Werkzeug zur Anonymisierung.

Wie viele Geräte kann ich verbinden?

In WireGuard wird jedes Gerät als eigener Peer mit eigenem Schlüsselpaar angelegt. Schon ein kleiner Server verkraftet problemlos Dutzende Geräte Ihrer Familie oder Ihres Teams. Verwenden Sie denselben Schlüssel nicht auf mehreren Geräten, sondern legen Sie für jedes Gerät eine eigene Konfiguration an.

Ich bin verbunden, komme aber nicht ins Internet. Warum?

Die häufigsten Ursachen sind eine deaktivierte IP-Weiterleitung, ein falscher Name der Netzwerkschnittstelle in der NAT-Regel und ufw, das weitergeleiteten Datenverkehr blockiert. Prüfen Sie, ob sysctl net.ipv4.ip_forward den Wert 1 ausgibt, ob der Schnittstellenname in der Zeile PostUp mit dem Namen aus ip route übereinstimmt und ob Sie die ufw-route-Regel hinzugefügt haben.

Kann ich das VPN nur für den Zugriff auf Dienste auf dem Server nutzen?

Ja. Wenn Sie den Wert AllowedIPs auf dem Client von 0.0.0.0/0 auf 10.8.0.0/24 ändern, läuft nur der Datenverkehr ins VPN-Netz durch den Tunnel, der übrige Internetverkehr geht weiter über Ihre normale Verbindung. Diese Methode ist ideal, um Datenbanken und Verwaltungsoberflächen nur über das VPN erreichbar zu machen.

Welchen Port verwendet WireGuard?

Standardmäßig den UDP-Port 51820, doch mit der Einstellung ListenPort können Sie einen beliebigen UDP-Port wählen. In der Firewall müssen Sie nur diesen Port öffnen; da WireGuard auf Pakete ohne gültigen Schlüssel überhaupt nicht antwortet, bleibt es bei Portscans unsichtbar.

Nodesty

Über den Autor

Nodesty-Team · Infrastruktur und Support

Das Nodesty-Team betreibt unsere Server, unser Netzwerk und unseren DDoS-Schutz im Alltag und beantwortet Support-Anfragen rund um die Uhr. Diese Ratgeber entstehen aus dieser Arbeit.

Verwandte Artikel

Starte deinen Server jetzt.

Erstellen, wachsen und skalieren Sie Ihre Projekte grenzenlos auf der Premium-Infrastruktur von Nodesty.

                                                                                                                                                                                                                            
                                                                                                                                                                                                                            
                                                                                                                                                                                                                            
                                                                                                                             ············································                                                   
                                                ··································································································..........···························                                     
                                       ················..........................................................................................................................··············                             
                                  ·············.................::::::::::::::::::::::::::::::::::::::::::::::....................:::::::::::::::::::::::::::::::::::::::................···········                        
                             ············................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............·········                     
                         ············.................:::::::::::::::::::::::::::::::::::::::::::::::::::------------::::::::::::::::::::::::::::::----------------:::::::::::::::::::::..........········                  
                    ············......................::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------:::::::::::::.........········                
                ··········.............................................::::::::::::::::::-------------==========================================-----------------------------------:::::::::::........·······               
             ········..................:.....................................::::::::::--------=======+++++++++++++++++++++++++++++++++++++=========================------------------::::::::::.......·······              
           ······.........::::::::::::::::::::................................:::::::-----=====++++xxxxxx**************************xxxxxxxxx++++++++++++++===================------------::::::::.......·······             
          ·····.......:::::::::::::::::::::::::::.............................:::::----===+++xxx****%%%%&&&&&&#############&&&&&&&%%%%%*******xxxxxxxx++++++++++++++==============----------:::::::......······             
         ····......::::::::-------------:::::::::::..........................::::---===+++xx***%%%&&&####@@@@@@@@@@@@@@@@@@@@@@@@####&&&&&%%%%*******xxxxxxxxx+++++++++++++===========--------::::::......·····             
        ····.....:::::::--------------------:::::::::.......................::::---===++xxx**%%&&&###@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###&&&&%%%%%********xxxxxxxxxxx++++++++++++========------::::::.....······            
        ····.....:::::--------------------------::::::::....................::::---===++xx***%%&&&####@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###&&&&&%%%%%**********xxxxxxxxxxxxx+++++++++=======------:::::.....·····            
        ····....::::::-------=============---------:::::::::................:::::---===+++xx***%%%&&&#####@@@@@@@@@@@@@@@@@@@@@@@@@#####&&&&&%%%%%%*************xxxxxxxxxxxxxx+++++++++======-----:::::....·····            
         ····....:::::-------================---------:::::::::...............:::::----===++++xxx***%%%%&&&&&&#################&&&&&&%%%%%%%*******************xxxxxxxxxxxxxxxxx++++++++======----:::::....·····            
         ·····....:::::--------=================---------::::::::::..............:::::::-----====+++++xxxxxx**************************xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx++++++++=====-----::::....·····            
          ·····.....:::::--------=================----------:::::::::::.................:::::::::-------=============++++++++++++++++++++++++++++++++++++xxxxxxxxxxxxxxxxxxxxxxx++++++++======-----::::....·····            
            ·····.....:::::::----------===========-------------::::::::::::.........................::::::::::::::::::------------------=============+++++++++++++++++++++++++++++++++=======-----::::.....·····            
              ······......:::::::---------------------------------:::::::::::::........................................:::::::::::::::-----------============+++++++++++++++++++++========------:::::.....·····             
                 ······........:::::::::---------------------------:::::::::::::::::...........................................:::::::::::::------------=============================--------::::::.....······              
                    ·········.........:::::::::::::::-------------::::::::::::::::::::::::.......................................::::::::::::::::--------------------------------------::::::::......·······                
                          ··········............::::::::::::::::::::::::::::::::::::::::::::::::::................................::::::::::::::::::::::::::-------------:::::::::::::::.........········                   
                                  ············..................:::::::::::::::::::::::::::::::::::::::::::.........................:::::::::::::::::::::::::::::::::::::................···········                        
                                             ················.............................................................................................................·················                                 
                                                           ······················................................................................···························                                                
                                                                               ·········································································