Ein Multi-Hop-VPN leitet Ihren Traffic durch zwei Server in zwei verschiedenen Laendern, sodass keine einzelne Maschine je gleichzeitig weiss, wer Sie sind und was Sie tun. Kommerzielle VPNs bieten das als "Double VPN" oder "Secure Core" an, aber die privateste Variante bauen Sie selbst aus zwei Servern, die nur Sie kontrollieren. Diese Anleitung verkettet zwei WireGuard-Server - einen Entry-Server, mit dem Sie sich verbinden, und einen Exit-Server, ueber den Ihr Traffic hinausgeht - sodass Ihre echte IP hinter zwei Hops verborgen ist, die niemand sonst protokollieren kann.
Wie die Kette funktioniert
Ihr Geraet verbindet sich nur mit dem Entry-Server. Der Entry-Server sendet Ihren Traffic nicht direkt ins Internet - stattdessen leitet er alles durch einen zweiten WireGuard-Tunnel an den Exit-Server weiter, der dann das Internet erreicht. Der Weg ist also: Sie → Entry → Exit → Internet. Der Entry-Server sieht Ihre echte IP, aber nie Ihr Ziel; der Exit-Server sieht Ihr Ziel, aber immer nur den Entry-Server. Websites sehen die IP des Exit-Servers. Wir geben dem Exit-Server den Bereich 10.8.0.0/24 und dem Entry-Server 10.7.0.0/24 fuer Ihre Geraete.
Schritt 1: Exit-Server einrichten
Der Exit-Server ist einfach ein normaler WireGuard-Server. Installieren Sie auf dem Exit-VPS WireGuard und erzeugen Sie die Schluessel:
apt update && apt install -y wireguard
wg genkey | tee /etc/wireguard/exit.key | wg pubkey > /etc/wireguard/exit.pub
cat /etc/wireguard/exit.key # this is EXIT_PRIVATE_KEY
cat /etc/wireguard/exit.pub # this is EXIT_PUBLIC_KEY
Finden Sie Ihr oeffentliches Netzwerk-Interface (meist eth0) mit ip route show default. Erstellen Sie dann /etc/wireguard/wg0.conf auf dem Exit-Server:
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = EXIT_PRIVATE_KEY
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
# The entry server (we add its key in Step 4)
PublicKey = ENTRY_LINK_PUBLIC_KEY
AllowedIPs = 10.8.0.2/32
Ersetzen Sie eth0, falls Ihr Interface anders heisst. Lassen Sie ENTRY_LINK_PUBLIC_KEY vorerst als Platzhalter - wir erzeugen ihn in Schritt 4.
Schritt 2: Forwarding aktivieren und Exit starten
Aktivieren Sie IP-Forwarding dauerhaft und starten Sie dann WireGuard auf dem Exit-Server:
echo 'net.ipv4.ip_forward=1' > /etc/sysctl.d/99-wg.conf
sysctl -p /etc/sysctl.d/99-wg.conf
ufw allow 51820/udp
systemctl enable --now wg-quick@wg0
Notieren Sie die oeffentliche IP des Exit-Servers - wir nennen sie EXIT_IP.
Schritt 3: Entry-Server einrichten (Ihre Seite)
Installieren Sie auf dem Entry-VPS WireGuard und erzeugen Sie zwei Schluesselpaare - eines fuer den Tunnel zu Ihren Geraeten (wg0) und eines fuer den Link zum Exit (wg1):
apt update && apt install -y wireguard
wg genkey | tee /etc/wireguard/entry0.key | wg pubkey > /etc/wireguard/entry0.pub # faces your devices
wg genkey | tee /etc/wireguard/entry1.key | wg pubkey > /etc/wireguard/entry1.pub # link to exit
Der oeffentliche Schluessel in entry1.pub ist der ENTRY_LINK_PUBLIC_KEY, den Sie in Schritt 1 auf dem Exit-Server als Platzhalter gelassen haben. Gehen Sie zurueck und tragen Sie ihn jetzt in die wg0.conf des Exit-Servers ein, dann fuehren Sie systemctl restart wg-quick@wg0 auf dem Exit-Server aus.
Schritt 4: Entry-zu-Exit-Link erstellen (wg1)
Erstellen Sie auf dem Entry-Server /etc/wireguard/wg1.conf. Das macht den Entry-Server zu einem Client des Exit-Servers:
[Interface]
Address = 10.8.0.2/24
PrivateKey = ENTRY_LINK_PRIVATE_KEY
# Do NOT route the whole server through the exit - that would cut your own SSH.
# Send only your client subnet (10.7.0.0/24) through the exit, via a separate table.
Table = off
PostUp = ip rule add from 10.7.0.0/24 table 120; ip route add default dev wg1 table 120
PostDown = ip rule del from 10.7.0.0/24 table 120; ip route del default dev wg1 table 120
[Peer]
# The exit server
PublicKey = EXIT_PUBLIC_KEY
Endpoint = EXIT_IP:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
ENTRY_LINK_PRIVATE_KEY ist der Inhalt von entry1.key. Das ist der wichtigste Schritt, den Sie richtig machen muessen. Ein einfaches AllowedIPs = 0.0.0.0/0 wuerde WireGuard den eigenen Traffic des Entry-Servers - einschliesslich Ihrer SSH-Sitzung - durch den Exit leiten, was Ihren Zugang zum Server unterbricht. Table = off verhindert das, und die Policy-Routing-Regeln leiten nur Ihr Client-Subnetz durch den Exit, sodass der Server selbst wie gewohnt erreichbar bleibt.
Schritt 5: Entry-Tunnel fuer Ihre Geraete erstellen (wg0)
Erstellen Sie weiterhin auf dem Entry-Server /etc/wireguard/wg0.conf. Das ist der Tunnel, mit dem sich Ihr Handy oder Laptop verbindet, und die Routing-Regeln schieben diesen Traffic in wg1:
[Interface]
Address = 10.7.0.1/24
ListenPort = 51820
PrivateKey = ENTRY_DEVICE_PRIVATE_KEY
PostUp = iptables -A FORWARD -i wg0 -o wg1 -j ACCEPT; iptables -A FORWARD -i wg1 -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o wg1 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -o wg1 -j ACCEPT; iptables -D FORWARD -i wg1 -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o wg1 -j MASQUERADE
[Peer]
# Your device (we add its key in Step 6)
PublicKey = CLIENT_PUBLIC_KEY
AllowedIPs = 10.7.0.2/32
ENTRY_DEVICE_PRIVATE_KEY ist der Inhalt von entry0.key. Das Masquerading auf wg1 versteckt Ihr Geraet hinter dem Entry-Server, sodass der Exit immer nur den Entry sieht.
Schritt 6: Geraetekonfiguration erstellen und verbinden
Erzeugen Sie ein Schluesselpaar fuer Ihr Geraet (auf Ihrem Computer oder dem Entry-Server) und bauen Sie dann die Client-Konfiguration. Tragen Sie den oeffentlichen Schluessel des Geraets in die wg0.conf des Entry-Servers ein, wo CLIENT_PUBLIC_KEY steht. Ihre Geraetekonfiguration sieht so aus:
[Interface]
PrivateKey = CLIENT_PRIVATE_KEY
Address = 10.7.0.2/32
DNS = 1.1.1.1
[Peer]
PublicKey = ENTRY_DEVICE_PUBLIC_KEY
Endpoint = ENTRY_IP:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
Hier ist ENTRY_DEVICE_PUBLIC_KEY aus entry0.pub, und ENTRY_IP ist die oeffentliche IP des Entry-Servers - der einzige Server, mit dem Ihr Geraet je spricht.
Schritt 7: Entry starten und die Kette pruefen
Aktivieren Sie auf dem Entry-Server das Forwarding und starten Sie beide Tunnel in der richtigen Reihenfolge (zuerst den Link, dann den Geraetetunnel):
echo 'net.ipv4.ip_forward=1' > /etc/sysctl.d/99-wg.conf
sysctl -p /etc/sysctl.d/99-wg.conf
ufw allow 51820/udp
systemctl enable --now wg-quick@wg1
systemctl enable --now wg-quick@wg0
Importieren Sie nun die Client-Konfiguration in die WireGuard-App auf Ihrem Geraet und verbinden Sie sich. Um zu bestaetigen, dass die Kette funktioniert, pruefen Sie Ihre IP - sie sollte das Land des Exit-Servers zeigen, nicht des Entry:
curl https://api.ipify.org
Wenn das die IP des Exit-Servers zurueckgibt, springt Ihr Traffic durch beide Server. Fuehren Sie auf unserer Seite mit Netzwerk-Tools einen Leak-Test durch, um sicherzugehen, dass es keine DNS- oder WebRTC-Lecks gibt.
sysctl net.ipv4.ip_forward sollte 1 zurueckgeben) auf beiden Servern, ob der Exit-Server Ihren Entry-Schluessel im [Peer]-Block hat und ob beide Firewalls UDP 51820 erlauben. Zeigt die IP das Entry-Land statt des Exit, wurde die Regel MASQUERADE -o wg1 auf dem Entry nicht geladen - starten Sie wg0 auf dem Entry-Server neu.Lohnt es sich?
Ein selbst gehostetes Multi-Hop ist das privateste Setup ueberhaupt: zwei Server, die Ihnen gehoeren, in zwei Laendern, ohne Anbieter in der Mitte, der Logs fuehrt. Die Kompromisse sind Geschwindigkeit (zwei Hops erhoehen die Latenz) und Kosten (zwei VPS statt einem). Fuer das alltaegliche Surfen reicht ein einzelner Server; bauen Sie die Kette, wenn Ihr Bedrohungsmodell es wirklich verlangt. Und denken Sie daran: Ein Multi-Hop schuetzt Ihre Privatsphaere, aendert aber nicht das Gesetz des Ortes, an dem Sie leben.