Ein selbst gehostetes WireGuard VPN gibt Laptop und Telefon einen verschlüsselten Weg zu einem Server, den Sie kontrollieren. Das ist nützlich, wenn Sie eine stabile Ausgangs-IP, sicheren Zugriff in nicht vertrauenswürdigen WLANs oder eine private Route in ein anderes Netzwerk brauchen. Anonym macht es Sie nicht: Websites sehen weiterhin eine einzige VPS-Adresse, und der Hosting-Anbieter betreibt weiterhin das darunterliegende Netzwerk.
Diese Anleitung baut ein IPv4-Full-Tunnel-VPN auf Ubuntu Server. Sie installieren WireGuard, erzeugen Schlüssel mit restriktiven Rechten, aktivieren das Routing, ergänzen Firewall- und NAT-Regeln, verbinden Desktop- und Mobil-Clients und prüfen den Tunnel. Derselbe Aufbau unterstützt auch IPv6, aber erst, wenn der VPS über geroutetes IPv6 verfügt und Sie IPv6-Forwarding sowie Firewallregeln separat konfigurieren.
Was ist WireGuard?
WireGuard ist ein modernes, plattformübergreifendes VPN-Protokoll samt Implementierung, das verschlüsselte IP-Pakete über UDP transportiert. Die WireGuard-Protokollspezifikation definiert einen festen Satz kryptografischer Primitive, darunter ChaCha20-Poly1305, Curve25519, BLAKE2s, SipHash24 und HKDF. Dieser bewusst kleine Entwurf macht Konfiguration und Audit einfacher als bei Protokollen mit vielen austauschbaren Cipher Suites.
WireGuard hat weder ein zentrales Kontosystem noch ein eingebautes Benutzerverzeichnis. Jedes Gerät ist ein Peer mit eigenem Schlüsselpaar, eigener Tunneladresse und eigenen AllowedIPs-Regeln. Auf einem VPS fungiert normalerweise ein Peer als zum Internet gerichtetes Gateway, während Laptops und Telefone die Verbindungen dorthin aufbauen.
Warum WireGuard auf einem VPS?
- Einfaches Peer-Modell: Jedes Gerät erhält ein Schlüsselpaar und einen Peer-Eintrag.
- Kleine Angriffsfläche: WireGuard setzt auf ein kompaktes Protokoll und eine feste Krypto-Suite, statt eine lange Liste veralteter Optionen anzubieten.
- Gute Performance: Die Kernel-Integration unter Linux und effiziente Kryptografie können hohen Durchsatz liefern, wobei das Ergebnis weiterhin von CPU, Netzwerkkapazität, Latenz und Paketgröße abhängt.
- Plattformübergreifende Clients: Offizielle Clients gibt es für Windows 10 und 11, macOS, Android und iOS, während Linux und mehrere BSD-Systeme native Werkzeuge oder Pakete mitbringen.
- Roaming: Ein Peer kann Netzwerke und Quell-IP-Adressen wechseln, ohne eine neue WireGuard-Identität zu bekommen; der Server lernt den zuletzt authentifizierten Endpunkt.
- Klare Routing-Kontrolle: AllowedIPs legt sowohl fest, welche Ziele den Tunnel nutzen, als auch, welche Tunneladressen zu welchem Peer gehören.
Weiterführende Lektüre: der Cloudzy-Leitfaden zu VPS für VPN. Für ältere Deployments siehe die PPTP-Einrichtungsanleitung von Cloudzy; wählen Sie PPTP nicht für ein neues, sicherheitskritisches VPN.
Manuelle Einrichtung überspringen: WireGuard mit einem Klick
Wenn Sie keinen technischen Hintergrund haben oder die Einrichtung lieber nicht selbst übernehmen möchten: Cloudzy bietet ein WireGuard-VPN-Deployment mit einem Klick. Der Rest dieser Anleitung behandelt den manuellen Aufbau, dieser Abschnitt die Abkürzung.
- Melden Sie sich im Cloudzy-Control-Panel an.
- Wählen Sie WireGuard aus der Anwendungsliste.
- Erstellen Sie einen VPS am gewünschten Standort mit dem Tarif Ihrer Wahl. Eine Ubuntu-Maschine mit Basisausstattung reicht aus.
Sobald Ihr VPS bereit ist, melden Sie sich an und führen Sie den folgenden Befehl aus, um Ihre Konfiguration anzuzeigen:
cat client.conf
Sie sehen etwas wie das hier:
Erstellen Sie mit dieser Konfiguration einen neuen Tunnel im WireGuard-Client auf Ihrem PC, und die Verbindung steht. Wenn Sie lieber jedes Detail verstehen möchten oder ein Setup brauchen, das das Ein-Klick-Image nicht abdeckt, machen Sie unten mit dem manuellen Aufbau weiter.
WireGuard unter Ubuntu einrichten
Die folgenden Befehle zielen auf eine aktuelle Ubuntu-Server-Version. Führen Sie sie per SSH als Benutzer mit sudo-Rechten aus. Lassen Sie die SSH-Sitzung offen, bis die Firewall bestätigt ist, und erstellen Sie vorher einen VPS-Snapshot, falls Ihr Anbieter das unterstützt.
Voraussetzungen
- Ein Ubuntu-VPS mit öffentlicher IPv4-Adresse
- Ein Nicht-Root-Konto mit sudo-Zugriff
- SSH-Zugang und die Zugangsdaten zur Recovery-Konsole des VPS-Anbieters
- Ein Client-Gerät mit der offiziellen WireGuard-App oder den Kommandozeilen-Tools
Sie brauchen keinen zweiten Ubuntu-Server. Der Client kann ein Windows-PC, ein Mac, ein Linux-Laptop, ein Android-Telefon oder ein iPhone sein.
Schritt 1: WireGuard installieren
sudo apt update
sudo apt install wireguard -y
Prüfen Sie, ob die Werkzeuge verfügbar sind:
wg --version
Schritt 2: Serverschlüssel sicher erzeugen
Legen Sie das WireGuard-Verzeichnis an und erzeugen Sie das Schlüsselpaar mit einer restriktiven umask. Der private Schlüssel darf niemals auf einen Client kopiert oder in Logs veröffentlicht werden.
sudo install -d -m 700 /etc/wireguard
sudo sh -c 'umask 077; wg genkey > /etc/wireguard/server.key; wg pubkey < /etc/wireguard/server.key > /etc/wireguard/server.pub'
Zeigen Sie die Schlüssel an, wenn Sie sie in Konfigurationsdateien einfügen müssen:
sudo cat /etc/wireguard/server.key
sudo cat /etc/wireguard/server.pub
Schritt 3: Serverkonfiguration erstellen
Öffnen Sie die Schnittstellenkonfiguration:
sudo nano /etc/wireguard/wg0.conf
Fügen Sie den folgenden Block ein und ersetzen Sie SERVER_PRIVATE_KEY durch den privaten Schlüssel aus dem vorherigen Schritt:
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY
Das Tunnelnetz 10.8.0.0/24 ist nur ein Beispiel. Wählen Sie einen anderen privaten Bereich, wenn er sich mit einem Heim-, Büro- oder Cloud-Netz überschneidet, das Sie erreichen müssen. Fügen Sie SaveConfig = true nicht hinzu: Damit kann die Datei beim Herunterfahren der Schnittstelle überschrieben und Ihre manuellen Änderungen gelöscht werden.
sudo chmod 600 /etc/wireguard/wg0.conf
Schritt 4: IPv4-Forwarding aktivieren
Der VPS muss Pakete zwischen wg0 und seiner öffentlichen Netzwerkschnittstelle routen. Legen Sie die Einstellung in einer eigenen sysctl-Datei ab:
sudo nano /etc/sysctl.d/70-wireguard-routing.conf
net.ipv4.ip_forward = 1
Anwenden und überprüfen:
sudo sysctl -p /etc/sysctl.d/70-wireguard-routing.conf
sysctl net.ipv4.ip_forward
Das folgt dem Routing-Modell aus dem WireGuard-Gateway-Leitfaden von Ubuntu. IPv6 benötigt ein geroutetes IPv6-Präfix, eigene Tunneladressen, IPv6-Forwarding und IPv6-Firewallregeln; senden Sie den Client-Verkehr nicht an ::/0, solange dieser Pfad nicht vollständig ist.
Schritt 5: Firewall- und NAT-Regeln hinzufügen
Ermitteln Sie den Namen der öffentlichen Schnittstelle des VPS. Achten Sie in der Ausgabe unten auf den Wert nach dev; gängige Namen sind eth0, ens3 und enp1s0.
ip route show default
Öffnen Sie wg0.conf erneut und fügen Sie die folgenden Zeilen unter [Interface] ein. Ersetzen Sie eth0 überall, wenn Ihre öffentliche Schnittstelle anders heißt:
PostUp = iptables -I FORWARD 1 -i %i -o eth0 -j ACCEPT; iptables -I FORWARD 1 -i eth0 -o %i -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT; iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
PreDown = iptables -D FORWARD -i %i -o eth0 -j ACCEPT; iptables -D FORWARD -i eth0 -o %i -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT; iptables -t nat -D POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
Wenn UFW aktiv ist, erlauben Sie SSH, bevor Sie an seinem Zustand etwas ändern, und öffnen Sie dann den UDP-Port von WireGuard:
sudo ufw allow OpenSSH
sudo ufw allow 51820/udp
sudo ufw status
Wenn UFW derzeit inaktiv ist und Sie es aktivieren möchten, prüfen Sie zuerst, ob die OpenSSH-Regel existiert. Deaktivieren und reaktivieren Sie UFW nicht über SSH, nur um diese Regeln anzuwenden; das schafft ein vermeidbares Aussperr-Risiko.
Schritt 6: WireGuard-Schnittstelle starten
sudo systemctl enable --now wg-quick@wg0
sudo systemctl status wg-quick@wg0 --no-pager
sudo wg show
Schlägt der Dienst fehl, führen Sie journalctl aus, bevor Sie irgendetwas anderes ändern:
sudo journalctl -u wg-quick@wg0 -n 50 --no-pager
Einen WireGuard-Client hinzufügen
Jedes Gerät braucht ein eigenes Schlüsselpaar und eine eigene Tunnel-IP. Verwenden Sie eine Client-Konfiguration niemals auf zwei Geräten: doppelte Schlüssel und Adressen machen das Routing unvorhersehbar und verhindern einen sauberen Widerruf.
Schritt 1: Client-Schlüssel erzeugen
Die offiziellen Desktop- und Mobil-Apps können Schlüssel erzeugen, wenn Sie einen leeren Tunnel anlegen. Auf einem Linux-Client verwenden Sie:
umask 077
wg genkey | tee client.key | wg pubkey > client.pub
Belassen Sie client.key auf diesem Gerät. Kopieren Sie nur client.pub auf den Server.
Schritt 2: Peer auf dem Server hinzufügen
sudo nano /etc/wireguard/wg0.conf
Hängen Sie einen Peer-Block an. Ersetzen Sie CLIENT_PUBLIC_KEY durch den öffentlichen Schlüssel des Clients:
[Peer]
PublicKey = CLIENT_PUBLIC_KEY
AllowedIPs = 10.8.0.2/32
Die Zeile Address = 10.8.0.2/32 weist die Tunneladresse auf dem Client zu. Im [Peer]-Block des Servers ordnet AllowedIPs = 10.8.0.2/32 diese Adresse dem Peer für Routing und Quellprüfung zu. Nehmen Sie 10.8.0.3/32 für das nächste Gerät und zählen Sie dann ohne Dubletten weiter hoch.
sudo systemctl restart wg-quick@wg0
Schritt 3: Client-Konfiguration erstellen
Erstellen Sie client.conf auf dem Client und ersetzen Sie alle Platzhalter:
[Interface]
PrivateKey = CLIENT_PRIVATE_KEY
Address = 10.8.0.2/32
DNS = 1.1.1.1
[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = VPS_PUBLIC_IP:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
AllowedIPs = 0.0.0.0/0 macht daraus einen IPv4-Full-Tunnel. Für Zugriff nur auf das VPN-Netz verwenden Sie AllowedIPs = 10.8.0.0/24. PersistentKeepalive ist für einen Client hinter NAT sinnvoll, dessen Zuordnung auch im Leerlauf erreichbar bleiben muss; der Schnellstart-Leitfaden von WireGuard weist darauf hin, dass die meisten Peers ihn nicht brauchen.
Schritt 4: Konfiguration importieren
Verwenden Sie die Installationsanleitung für WireGuard-Clients , um den unterstützten Client für Ihre Plattform zu erhalten.
- Windows: Wählen Sie Add Tunnel und importieren Sie dann client.conf.
- macOS: Wählen Sie Import tunnel(s) from file und dann client.conf.
- Android oder iOS: Importieren Sie die Datei oder scannen Sie einen daraus erzeugten QR-Code.
Installieren Sie auf einem Ubuntu- oder Debian-Client, auf dem client.conf liegt, qrencode und geben Sie die Datei im Terminal dieses Clients aus:
sudo apt install qrencode -y
qrencode -t ansiutf8 < client.conf
Der QR-Code enthält den privaten Schlüssel des Clients. Zeigen Sie ihn nur in einem vertrauenswürdigen Terminal an, speichern Sie keine Screenshots und leeren Sie das Terminal, sobald das Telefon ihn importiert hat.
Schritt 5: Tunnel überprüfen
Aktivieren Sie den Tunnel, erzeugen Sie Traffic vom Client und führen Sie diese Prüfungen auf dem VPS aus:
sudo wg show
ip -brief address show wg0
Ein aktueller Handshake und steigende Transferzähler bestätigen, dass WireGuard Pakete austauscht. Prüfen Sie danach den Full-Tunnel-Ausgang vom Client aus:
curl -4 https://api.ipify.org; echo
Der Befehl sollte die öffentliche IPv4-Adresse des VPS zurückgeben. Kommt kein Handshake zustande, prüfen Sie Endpunktadresse, UDP-Port, Cloud-Firewall, UFW-Regel und Schlüssel. Gibt es einen Handshake, aber keinen Internetzugang, prüfen Sie IP-Forwarding, den Namen der öffentlichen Schnittstelle, die NAT-Regeln und DNS.
Kann man WireGuard hinter Nginx betreiben?
Der Dokumentation des NGINX-Stream-Moduls erklärt, wie NGINX UDP von einem Port zu einem anderen weiterleiten kann, also etwa UDP/80 oder UDP/443 an WireGuard auf UDP/51820. Das ist ein UDP-Relay, kein HTTP-Reverse-Proxy. Es macht aus WireGuard weder TCP noch HTTPS, und es lässt das Protokoll auch nicht wie gewöhnlichen Web-Traffic aussehen.
Für die meisten Deployments ist es einfacher, den ListenPort von WireGuard zu ändern und den passenden UDP-Port zu öffnen, als NGINX hinzuzufügen. Blockiert ein Netzwerk UDP vollständig oder setzt es Deep Packet Inspection ein, löst ein NGINX-UDP-Relay das Problem nicht. Die Dokumentation zu den Einschränkungen von WireGuard besagt, dass Verschleierung außerhalb des Rahmens des Protokolls liegt.
Den VPS mit einem Heimnetzwerk verbinden
Ein VPS kann als Knotenpunkt zwischen einem mobilen Client und einem Gerät bei Ihnen zu Hause dienen. Der Peer auf der Heimseite baut die WireGuard-Verbindung nach außen zum VPS auf, sodass keine öffentliche IP zu Hause nötig ist. Setzen Sie PersistentKeepalive auf diesem Heim-Peer, wenn er hinter NAT sitzt.
Um das gesamte Heim-LAN zu erreichen, reicht ein zusätzlicher Peer nicht. Der Peer-Eintrag auf dem VPS für das Heim-Gateway muss das Heimsubnetz in AllowedIPs enthalten, etwa 192.168.1.0/24. Ein entfernter Client mit Full Tunnel (AllowedIPs = 0.0.0.0/0) schickt diesen Verkehr ohnehin über den VPS; ergänzen Sie 192.168.1.0/24 auf dem Client nur bei Split Tunneling. Auch das Heim-Gateway muss Verkehr zwischen WireGuard und dem LAN weiterleiten. Legen Sie entweder eine Route auf dem Heimrouter oder eine eng gefasste NAT-Regel auf dem Heim-Gateway an. Prüfen Sie zuerst auf Überschneidungen: Ein Client, der mit einem anderen 192.168.1.0/24-Netz verbunden ist, kann beide Netze ohne Neunummerierung oder aufwendigeres Policy-Routing nicht sauber routen.
Selbst gehostetes WireGuard oder kommerzielles VPN
Selbst-Hosting ändert, wer das VPN betreibt, verbessert die Anonymität aber nicht automatisch. Ein persönlicher VPS gibt Ihnen eine stabile Ausgangs-IP, die sich leicht einem Hosting-Netz zuordnen lässt. Ein kommerzieller Dienst bietet meist geteilte Ausgangsadressen und einfaches Standortwechseln, dafür müssen Sie sich auf dessen Richtlinien, Betrieb und veröffentlichte unabhängige Audits verlassen.
WireGuard selbst ist schlank, und ein kleiner VPS ist für eine Person mit wenigen Geräten oft ein vernünftiger Ausgangspunkt. Betrachten Sie eine feste RAM- oder vCPU-Zahl nicht als Durchsatzgarantie. Testen Sie mit Ihrer echten Gerätezahl, Ihrer Region, der Paketgröße und der erwarteten Bandbreite und passen Sie die Größe an, wenn CPU-Auslastung, Paketverlust oder Latenz zum Limit werden.
Wählen Sie Selbst-Hosting, wenn eine stabile persönliche Ausgangs-IP, Fernzugriff oder Kontrolle über den Server wichtiger sind als Standortauswahl und Bequemlichkeit. Wählen Sie ein kommerzielles VPN, wenn Sie viele Länder, geteilte Ausgänge, breite Unterstützung für Endgeräte und jemanden wollen, der sich um Störungen kümmert.
| Entscheidungsfaktor | Selbst gehostetes WireGuard | Kommerzielles VPN |
|---|---|---|
| Kostenmodell | Ein Server plus Ihre Administrationszeit | Abonnement, oft mit Rabatt bei längeren Laufzeiten |
| Ausgangsstandorte | Ein Standort pro Server | Viele Standorte direkt in der App verfügbar |
| Einrichtung | Sie konfigurieren Schlüssel, Routing, Firewallregeln und Clients | App installieren und anmelden |
| Wartung | Sie patchen, überwachen, sichern und beheben Störungen | Der Anbieter betreibt den Dienst |
| Datenschutzmodell | Sie kontrollieren den Server, doch der Hosting-Anbieter kann weiterhin Metadaten sehen | Sie verlassen sich auf die Richtlinien des Anbieters und dessen veröffentlichte unabhängige Audits |
| Am besten geeignet | Stabile persönliche Ausgangs-IP, Fernzugriff und Kontrolle über die Infrastruktur | Standortwechsel, wenig Wartung und breite Geräteunterstützung |
Fazit
Ein zuverlässiges WireGuard-Deployment hängt an fünf Dingen: geschützte private Schlüssel, eindeutige Peer-Adressen, korrekte AllowedIPs, funktionierendes Forwarding und NAT sowie eine Firewallregel für den lauschenden UDP-Port. Prüfen Sie sowohl den Handshake als auch die öffentliche Ausgangsadresse, bevor Sie sich auf den Tunnel verlassen, und halten Sie den VPS nach dem Deployment gepatcht.
Wenn Sie den Server manuell aufbauen möchten, starten Sie mit einem sauberen Cloudzy Ubuntu VPS. Wenn Sie die Installationsschritte lieber überspringen, nutzen Sie das Ein-Klick-WireGuard-Deployment von Cloudzy und gehen Sie direkt zur Client-Konfiguration und Überprüfung über.
Häufig gestellte Fragen
Warum zeigt WireGuard einen Peer, aber keinen Handshake?
Ein Peer-Eintrag beweist nur, dass die Konfiguration geladen wurde. Kein Handshake bedeutet meist, dass der Client den Server nicht erreicht oder die Schlüssel nicht zusammenpassen. Prüfen Sie den Endpoint des Clients, die öffentliche IP des Servers, UDP/51820 sowohl in der Anbieter-Firewall als auch in UFW und die öffentlichen Schlüssel auf beiden Seiten. Erzeugen Sie vor der Prüfung Traffic vom Client, denn WireGuard ist im Leerlauf still.
Warum verbindet sich der Tunnel, aber der Internetzugang bricht ab?
Ein Handshake ohne Internetzugang deutet meist auf das Routing hin, nicht auf die Verschlüsselung. Prüfen Sie net.ipv4.ip_forward, bestätigen Sie den Namen der öffentlichen Schnittstelle in der NAT-Regel, kontrollieren Sie die FORWARD-Regeln und testen Sie DNS getrennt von der reinen IP-Erreichbarkeit. Stellen Sie außerdem sicher, dass AllowedIPs auf dem Client zum gewünschten Full- oder Split-Tunnel-Aufbau passt.
Braucht jeder Client PersistentKeepalive?
Nein. Fügen Sie es hinzu, wenn ein Peer hinter NAT seine Zuordnung während Leerlaufphasen offen halten muss, was bei Telefonen, Heim-Gateways und manchen restriktiven Netzen üblich ist. Lassen Sie es weg, wenn der Peer häufig kommuniziert oder im Leerlauf nicht von der Gegenseite erreichbar sein muss.