WireGuard ist der schnellste und einfachste Weg, einen verschlüsselten Tunnel zwischen zwei Servern aufzubauen — ein Site-to-Site VPN für privaten Traffic zwischen Ihren Origin- und Edge-Knoten, Datenbankreplikation oder ein Management-Netzwerk. Diese Anleitung verbindet zwei Hostfory-Server (oder eine Hostfory-Box und Ihr Büro) mit einem persistenten WireGuard-Tunnel.

Voraussetzungen

  • Zwei Linux-Server mit Root-Zugriff und öffentlichen IPs (nennen wir sie Server A und Server B)
  • Ubuntu 22.04 (WireGuard ist seit 5.6 im Kernel)
  • Ein offener UDP-Port zwischen ihnen (Standard 51820)

Schritt 1 — WireGuard auf beiden Servern installieren

apt update
apt install -y wireguard

Schritt 2 — Schlüssel auf beiden Servern generieren

Generieren Sie auf jedem Server ein privates/öffentliches Schlüsselpaar:

cd /etc/wireguard
umask 077
wg genkey | tee privatekey | wg pubkey > publickey
cat privatekey publickey

Notieren Sie den öffentlichen Schlüssel jedes Servers — Sie werden sie gegenseitig referenzieren. Halten Sie private Schlüssel geheim.

Schritt 3 — Server A konfigurieren

Erstellen Sie /etc/wireguard/wg0.conf auf Server A:

[Interface]
Address = 10.10.0.1/24
ListenPort = 51820
PrivateKey = <SERVER_A_PRIVATE_KEY>

[Peer]
# Server B
PublicKey = <SERVER_B_PUBLIC_KEY>
Endpoint = <SERVER_B_PUBLIC_IP>:51820
AllowedIPs = 10.10.0.2/32
PersistentKeepalive = 25

10.10.0.1/24 ist die private Tunnel-IP für Server A. AllowedIPs bedeutet „leite Traffic für 10.10.0.2 über diesen Peer.“

Schritt 4 — Server B konfigurieren

Erstellen Sie /etc/wireguard/wg0.conf auf Server B (Spiegelbild):

[Interface]
Address = 10.10.0.2/24
ListenPort = 51820
PrivateKey = <SERVER_B_PRIVATE_KEY>

[Peer]
# Server A
PublicKey = <SERVER_A_PUBLIC_KEY>
Endpoint = <SERVER_A_PUBLIC_IP>:51820
AllowedIPs = 10.10.0.1/32
PersistentKeepalive = 25

PersistentKeepalive = 25 hält den Tunnel durch NAT/Firewalls am Leben, indem alle 25 Sekunden ein Keepalive gesendet wird — wichtig, wenn eine der Seiten hinter NAT ist.

Schritt 5 — Firewall öffnen

Erlauben Sie auf beiden Servern den WireGuard UDP-Port:

ufw allow 51820/udp

Schritt 6 — Tunnel starten

Auf beiden Servern:

wg-quick up wg0
# Enable on boot
systemctl enable wg-quick@wg0

Schritt 7 — Konnektivität testen

Pingen Sie von Server A die Tunnel-IP von Server B an:

ping 10.10.0.2

Und überprüfen Sie den Tunnelstatus:

wg show

Sie möchten einen kürzlichen Handshake (latest handshake: X seconds ago) und steigende Traffic-Zähler sehen. Wenn kein Handshake stattfindet, erreicht der UDP-Port den Peer nicht — überprüfen Sie die Firewalls an beiden Enden und alle vorgelagerten Netzwerk-ACLs.

Schritt 8 — Ein ganzes Subnetz routen (optional)

Um den gesamten Traffic für ein Subnetz (z.B. Server Bs privates Netzwerk 192.168.50.0/24) durch den Tunnel zu routen, erweitern Sie AllowedIPs im Peer-Block von Server A:

AllowedIPs = 10.10.0.2/32, 192.168.50.0/24

Und aktivieren Sie IP-Forwarding auf Server B:

echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p

Fügen Sie auf Server B eine NAT-Regel hinzu, damit der Rücktraffic seinen Weg zurückfindet:

iptables -t nat -A POSTROUTING -s 10.10.0.0/24 -o eth0 -j MASQUERADE

Häufige Anwendungsfälle auf der Hostfory-Infrastruktur

  • Origin ↔ Edge private Verbindung: Halten Sie die echte IP Ihres Streaming-Origins verborgen; Edges ziehen über den Tunnel, nur die Edge-IPs sind öffentlich.
  • Datenbankreplikation: Führen Sie Postgres/MySQL-Replikation über den verschlüsselten Tunnel aus, anstatt den DB-Port öffentlich zugänglich zu machen.
  • Management-Netzwerk: SSH, Monitoring (Prometheus Scraping) und Backups über 10.10.0.0/24 — niemals über die öffentliche Schnittstelle.
  • Multi-PoP Mesh: Verbinden Sie alle vier unserer PoPs (Amsterdam, Kyiv, Warsaw, Miami) in einem WireGuard-Mesh für privaten Inter-PoP-Traffic.

Fehlerbehebung

  • Handshake, aber kein Ping: AllowedIPs-Fehler. Jeder Peer muss die Tunnel-IP des anderen auflisten. Ein häufiger Fehler ist 0.0.0.0/0 auf beiden Seiten, was eine Routing-Schleife erzeugt.
  • Tunnel bricht nach einer Weile ab: PersistentKeepalive hinzufügen oder verringern. NAT-Tabellen lassen UDP-Flows ablaufen; Keepalive verhindert dies.
  • Funktioniert bis zum Neustart: Sie haben systemctl enable wg-quick@wg0 vergessen.

Nächste Schritte

Für ein gehärtetes Management-Setup beschränken Sie SSH darauf, nur auf der Tunnel-IP zu lauschen (ListenAddress 10.10.0.1 in sshd_config), sodass die öffentliche Schnittstelle SSH überhaupt nicht exponiert. Kombinieren Sie dies mit Fail2ban für eine tiefgreifende Verteidigung.