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 wireguardSchritt 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 publickeyNotieren 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 = 2510.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 = 25PersistentKeepalive = 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/udpSchritt 6 — Tunnel starten
Auf beiden Servern:
wg-quick up wg0
# Enable on boot
systemctl enable wg-quick@wg0Schritt 7 — Konnektivität testen
Pingen Sie von Server A die Tunnel-IP von Server B an:
ping 10.10.0.2Und überprüfen Sie den Tunnelstatus:
wg showSie 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/24Und aktivieren Sie IP-Forwarding auf Server B:
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -pFü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 MASQUERADEHä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 ist0.0.0.0/0auf beiden Seiten, was eine Routing-Schleife erzeugt. - Tunnel bricht nach einer Weile ab:
PersistentKeepalivehinzufügen oder verringern. NAT-Tabellen lassen UDP-Flows ablaufen; Keepalive verhindert dies. - Funktioniert bis zum Neustart: Sie haben
systemctl enable wg-quick@wg0vergessen.
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.