WireGuard ist ein modernes, schnelles und schlankes VPN-Protokoll. Es ist direkt im Linux-Kernel enthalten, einfach zu konfigurieren und eignet sich ideal, um Verwaltungszugänge wie SSH, RDP oder Datenbanken vor dem offenen Internet zu verstecken. In dieser Anleitung richten Sie einen WireGuard-Server auf Debian oder Ubuntu ein und verbinden einen ersten Client.
So funktioniert WireGuard
Jedes Gerät besitzt ein Schlüsselpaar aus privatem und öffentlichem Schlüssel, ähnlich wie bei SSH. Der Server kennt die öffentlichen Schlüssel aller Clients und umgekehrt. Es gibt keine Benutzernamen und Passwörter. Wer den passenden privaten Schlüssel hat, ist verbunden. WireGuard nutzt standardmäßig den UDP-Port 51820.
In diesem Beispiel verwenden wir das private VPN-Netz 10.10.0.0/24. Der Server erhält 10.10.0.1, der erste Client 10.10.0.2.
Schritt 1: WireGuard installieren
sudo apt update
sudo apt install -y wireguard
Schritt 2: Schlüssel für den Server erzeugen
cd /etc/wireguard
umask 077
wg genkey | tee server.key | wg pubkey > server.pub
Der private Schlüssel in server.key darf den Server niemals verlassen.
Schritt 3: Server konfigurieren
Erstellen Sie die Datei /etc/wireguard/wg0.conf:
[Interface]
Address = 10.10.0.1/24
ListenPort = 51820
PrivateKey = INHALT_VON_server.key
[Peer]
# Laptop
PublicKey = OEFFENTLICHER_SCHLUESSEL_DES_CLIENTS
AllowedIPs = 10.10.0.2/32
Den öffentlichen Schlüssel des Clients erhalten Sie in Schritt 5. Tragen Sie ihn anschließend hier ein.
Schritt 4: Firewall öffnen und Dienst starten
Wenn Sie UFW verwenden:
sudo ufw allow 51820/udp
Starten Sie WireGuard und aktivieren Sie den automatischen Start:
sudo systemctl enable --now wg-quick@wg0
sudo wg show
Schritt 5: Client einrichten
Installieren Sie den WireGuard-Client für Ihr Betriebssystem. Für Windows, macOS, Android und iOS gibt es offizielle Apps unter wireguard.com/install. Unter Linux installieren Sie das Paket wireguard.
In der App erstellen Sie einen neuen, leeren Tunnel. Die App erzeugt dabei automatisch ein Schlüsselpaar und zeigt den öffentlichen Schlüssel an. Ergänzen Sie die Konfiguration so:
[Interface]
PrivateKey = (von der App erzeugt)
Address = 10.10.0.2/32
[Peer]
PublicKey = INHALT_VON_server.pub
Endpoint = IHRE-SERVER-IP:51820
AllowedIPs = 10.10.0.0/24
PersistentKeepalive = 25
Kopieren Sie den öffentlichen Schlüssel des Clients in den [Peer]-Abschnitt der Server-Konfiguration und laden Sie sie neu:
sudo systemctl restart wg-quick@wg0
Schritt 6: Verbindung testen
Aktivieren Sie den Tunnel im Client und pingen Sie den Server:
ping 10.10.0.1
Auf dem Server zeigt sudo wg show nun beim Peer einen Eintrag latest handshake mit einer aktuellen Zeit.
Split-Tunnel oder gesamter Verkehr?
Mit AllowedIPs = 10.10.0.0/24 läuft nur der Verkehr ins VPN-Netz durch den Tunnel. Ihr normaler Internetverkehr bleibt unverändert. Das ist für Verwaltungszugänge die richtige Wahl.
Möchten Sie den gesamten Internetverkehr über den Server leiten, setzen Sie beim Client AllowedIPs = 0.0.0.0/0, ::/0. Auf dem Server müssen Sie dann zusätzlich IP-Forwarding und NAT aktivieren:
echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/99-wireguard.conf
sudo sysctl --system
Und in der [Interface]-Sektion von wg0.conf ergänzen Sie (passen Sie eth0 an Ihre Netzwerkkarte an):
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
Schritt 7: Dienste nur über das VPN erreichbar machen
Der eigentliche Sicherheitsgewinn entsteht, wenn Sie Verwaltungszugänge nur noch aus dem VPN-Netz erlauben. Mit UFW beispielsweise für SSH:
sudo ufw allow from 10.10.0.0/24 to any port 22 proto tcp
sudo ufw delete allow 22/tcp
Wichtig: Testen Sie zuerst, ob die SSH-Verbindung über 10.10.0.1 funktioniert, bevor Sie die allgemeine Regel löschen. Halten Sie eine zweite Sitzung offen, damit Sie sich nicht aussperren.
Weitere Clients hinzufügen
Für jedes weitere Gerät legen Sie einen eigenen [Peer]-Abschnitt mit eigener IP-Adresse an, zum Beispiel 10.10.0.3/32. Verwenden Sie niemals dieselben Schlüssel auf mehreren Geräten. Ohne Neustart übernehmen Sie Änderungen mit:
sudo wg syncconf wg0 <(sudo wg-quick strip wg0)
Fehlerbehebung
Kein Handshake
- Ist der UDP-Port 51820 in allen Firewalls freigegeben?
- Stimmen die öffentlichen Schlüssel auf beiden Seiten? Ein vertauschter Schlüssel ist der häufigste Fehler.
- Ist beim Client die richtige Server-IP als
Endpointeingetragen?
Handshake klappt, aber kein Ping
Prüfen Sie die AllowedIPs auf beiden Seiten. Auf dem Server muss die Client-Adresse, beim Client das VPN-Netz eingetragen sein.
Ein kleiner vServer mit Standort in Österreich eignet sich hervorragend als zentraler VPN-Zugangspunkt für Ihr Team.
