WireGuard ist der “neue” VPN Server von Heute! Nicht das er als Open Source sowieso schon bei mir gewonnen hat, sondern er ist auch ein Leichtgewicht. Der schlanke SourceCode bringt ihm zusätzlich Performance, sodass wir alles an Board haben was wir brauchen.
Zusammengefasst, WireGuard ist ein sehr einfacher, sehr sicherer und sehr schneller VPN Server für alle möglichen Plattformen und Betriebssystemen.

Im letzten Video habe ich euch gezeigt wie man eine Client to Site Verbindung herstellt und habe euch die Konfiguration dazu hier im Blog aufgeschlüsselt. (WireGuard Client VPN)
Jetzt zeige ich euch wie man eine Site-to-Site VPN Verbindung herstellt und dann die Netzwerke auf der gegenüberliegenden Seite erreicht.
Anleitung: WireGuard Site-to-Site VPN Server
Schritt 1: Auf dem SERVER1 und SERVER2 ausführen
sh -c "echo 'deb http://deb.debian.org/debian buster-backports main contrib non-free' > /etc/apt/sources.list.d/buster-backports.list"
apt update
apt install linux-headers-$(uname --kernel-release)
apt install wireguard
nano /etc/sysctl.conf
# <- entfernen bei der Zeile "net.ipv4.ip_forward=1" und speichern
sysctl -p
cd /etc/wireguard/
umask 077; wg genkey | tee privatekey | wg pubkey > publickey
cat privatekey
cat publickey
chmod 600 /etc/wireguard/privatekey
Schritt 2: Nur auf SERVER1 ausführen
Konfigurationsdatei anlegen
nano /etc/wireguard/wg0.conf
[Interface] PrivateKey = <Dein privater Schlüssel [privatekey SERVER 1]> Address = 172.31.0.1/24 SaveConfig = true PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE ListenPort = 51820 [Peer] PublicKey = <Öffentlicher Schlüssel von [SERVER 2]> AllowedIPs = 192.168.0.0/24, 172.31.0.0/24 PersistentKeepalive = 25
In den Zeilen PostUP & PostDown das Interface anpassen wie es zu eurem System passt. Hier steht jetzt eth0, das kann aber bei euch anders sein. Prüfen könnt Ihr das mit “ip a“
Schritt 3: Nur auf SERVER2 ausführen
Konfigurationsdatei anlegen
nano /etc/wireguard/wg0.conf
[Interface] PrivateKey = <Dein privater Schlüssel [privatekey SERVER 2]> Address = 172.31.0.2/24 SaveConfig = true PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE [Peer] PublicKey = <Öffentlicher Schlüssel von [SERVER 1]> Endpoint = <ServerIP oder Domain/FQDN>:51820 AllowedIPs = 10.0.0.0/8, 172.31.0.0/24 PersistentKeepalive = 25
Schritt 4: Auf SERVER1 und SERVER2 ausführen
wg-quick up wg0
wg
##Das zeigt dir den Status der Verbindung an
Das wg-quick Kommando startet die Wireguard Verbindung mit der entsprechend hinterlegten Konfiguration, welche wir im vorherigen Schritt erstellt haben. Wenn eure Konfigurationsdatei anders heißen sollte, müsst Ihr den Befehl natürlich anpassen. wg0 ist hier nur als Beispiel genommen.
Schritt 5: Autostart (Server1 & Server2)
Wenn WireGuard automatisch mit dem System starten soll, dann folgenden Befehl absetzen.
systemctl enable wg-quick@wg0
Schritt 6: Routing
Ihr müsst natürlich auf beiden Seiten für das Routing sorgen. Hier ein Auszug aus dem Video wie das Routing in der Fritzbox aussehen könnte.

Das könnte dich auch interessieren:
5 Tipps für mehr Besucher auf der Webseite
PfSense installieren & konfigurieren. Einfach erklärt. Wie gehe ich vor?!
Die ersten 1000 YouTube Abonnenten. Wie hab ich es geschafft?
Du brauchst weitere Hilfe oder Lösungsansätze im Umgang mit WireGuard? Du benötigst Troubleshooting Tipps oder allgemeine Hilfe? Dann kontaktiere mich über die Kommentare oder schreibe mir direkt eine Nachricht.
dennis schröder
5. Januar 2021 um 00:47
Site-To-Site VPN-Verbindung funktioniert bei mir. Am Anfang konnte ich die IPs vom VPN-Server und RaspberryPI pingen. Nachdem ich mein Handy als neuen Client eingerichtet habe, funktioniert ein Ping nicht mehr.
Vom VPN-Server kann ich das Netz vom RaspberryPI (192.168.10.0/24) per Ping erreichen. Selbst das Handy als Client kann ich über den VPN-Server auf das Netzwerk 192.168.10.0/24) per Browser zugreifen.
Komisch. Hattest Du das Problem auch schonmal?
Viele Grüße,
Oliver
10. Februar 2021 um 03:02
Hallo Dennis,
Leider bin ich in Linux nicht fit. Du hast ja in deinen Video Site-to Site eine Verbindung von einem Windows-Rechner zu deinem Server gemacht. Ich versuche eine VPN Verbindung zwischen zwei Windows Rechnern aufzubauen. Soweit ich Wireguard verstanden habe, muss man eigentlich auf dem Router nur den ListenPort forwarden, die Forwarding Tabellen scheint Winguard in jedem Windowsrechner automatisch zu erstellen. Trotzdem wird keine Verbindung über das Internet aufgebaut. Wenn beide Rechner im gleichen Netz sind, klappt das aber sofort. Kann ich dir meine Zeichnung schicken ?
Viele Grüße aus dem Süden
Günther
21. Januar 2022 um 14:22
Hi, vielen Dank für die Anleitung. Könne damit auch drei oder vier Server miteinander verbunden werden? Gruss Matthias
23. Januar 2022 um 01:10
Klar, wenn die sich alle untereinander sehen dürfen und miteinander kommunizieren dprfen dann kannst du einfach weitere [peer]’s anlegen.
Das wird dann eine 1:n Beziehung.
Wenn es separate Netze werden sollen die du firewallen kansnt, dann musst du auch neue interfaces anlegen, wg1, wg2, wgX…. und die jeweils mit dem peer versorgen.
Gruß,
16. März 2021 um 20:22
Hallo, schönes howto. Danke dafür. Icn habe leider keine Möglichkeit eine statische Route zu setzen und möchte nicht jeden Rechner im Netz konfigurieren. Welche Möglichkeiten bleiben mir noch ?
Viele Grüße Klaus
27. März 2021 um 23:44
Hi Dennis,
danke für das Tutorial. Hat mich motiviert, es selbst mal zu probieren.
Ein paar Stolpersteine, die ich aus dem Weg räumen musste, die bisher unerwähnt blieben.
1. Beim Raspi 3B hat meine installation mit apt-get install wireguard nicht das passende dkms Modul produziert, erst mit dem pivpn hat das geklappt. Das fiese war, dass das wireguard aber nicht gemerkt hat und ich es nur über
systemctl status wg-quick@service
rausgefunden habe
2. Da einer meiner Anschlüsse ein DS-Lite Tunnel ist, stotterte bei mir die Verbindung enorm, aber nur in eine Richtung. ssh funktionierte gut, aber schon ein “top” oder “ps” führten zu 30 Sekunden eingefrorenem Terminal. Die Lösung war das setting
MTU = 1300
im wg0.conf auf beiden Seiten, seitdem läuft es super.
Danke dafür!
@Klaus Rheinheimer: wie in Dennis Anleitung, ich habe in meinem Router eine statische Route gesetzt, so dass in meinem Fall alles für 192.168.1.0/24 an die Raspi 3B Adresse 192.168.5.x geschickt wird und im anderen Router alles für 192.168.5.0/24 an die Raspi 4B Adresse 192.168.0.x geschickt wird. Damit braucht keiner der Teilnehmer eine eigene Route.
Beste Grüße,
Torsten
6. April 2021 um 23:09
Vielen Dank, für den Tipp mit dem MTU.
Endlich geht meine Wireguard Verbindung.
30. März 2021 um 09:07
Bei Site2Site wird nicht genattet.
13. April 2021 um 10:59
Ich weiß auch nicht warum man auf den Gedanken kommt NATten zu wollen, ggf. Security? K.A.
Jedenfalls, wenn man schön die statischen Routen in den Routern einträgt kann man NAT einfach auslassen, dann ist ja auch die Rückroute gesichert!.
Man lässt einfach bei beiden conf Dateien alles (in der jeweiligen Zeile) ab dem Semikolon weg:
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT
PostDown = iptables -A FORWARD -i wg0 -j ACCEPT
In der entfernten Fritz.Box z.B. sehe ich die Anmelde IP dann nicht mehr vom VPN Server im gleichen Netz, sondern vom Client aus dem anderen Netz.
18. April 2021 um 22:34
Meinst du eher:
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT
?
BTW: Muss nicht auch ein “iptables -A FORWARD -i eth0 -j ACCEPT” beim PostUP eingetragen werden? Also so:
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -i eth0 -j ACCEPT
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -i eth0 -j ACCEPT
26. April 2021 um 16:08
Hallo Dennis,
ich bin lustigerweise über eine Suche in Youtube zu deiner Anleitung gekommen. Meine Frage ist folgende. Wie kann ich das Setup um eine 3. oder gar 4. Site / Netzwerk erweitern? D.h. das nicht nur zwei sondern mehr Netzwerke nach dem selben Schema verbunden werden. Hast du dazu vielleicht auch eine Idee oder Anleitung?
Vielen Dank
Grüße
29. April 2021 um 00:40
Hallo, ich nochmal.
Ich habe das Phänomen, dass die remote Session (SSH) zusammenbricht, sobald ich das wg Interface hoch fahre. Der Rechner ist dann via SSH nicht mehr erreichbar. Fällt dir dazu was ein?
Danke dir.
7. Mai 2021 um 15:05
Hallo
mal ne kleine Frage von einem Anfänger:
Wofür sind die Zeilen “Post up” und “Post Down” Was heist naten? Kann ich das vergessen, wenn ich einen lokalen dns habe, der auch lokale Hostnames eingetragen hat?
Vielleicht eine dumme Frage aber vielleicht gibt es ja noch andere die das nicht wissen.
10. Mai 2021 um 22:03
Hallo Dennis,
ist es auch denkbar, dass zwei oder drei Netzwerke (jeder jeweils einen Raspi4) per site to site verbunden sind (permanent) und gleichzeitig einer dieser Raspi4s auch der Eingang (client to site) ist, so dass sich eine Einwahl von Unterwegs in das Gesamtnetz ermöglichen lässt?
Carsten
27. Mai 2021 um 08:13
Hallo Denise
Bin auch auf der Suche nach einem Tutorial für die Verbindung von mehreren Netzwerken mit privaten IP-Adressen. “Zentrale” wäre dann der Hetzner-Server. Ueber Google finde ich nichts, obwohl in allen möglichen Kombinationen in de und en gesucht.
Wäre toll, wenn Du da was veröffentlichen könntest. Trivial ist es nicht.
Und wenn Du über Paypal ein paar Biere gespendet haben möchtest dann einfach das Konto veröffentlichen 🙂
Vielen Dank
Bernhard
14. Juli 2021 um 16:44
@Carsten und @Bernhard
ja das geht. Dazu einfach weitere Peers hinzufügen und die Allowed IPs entsprechend hinzufügen. Wichtig ist zu wissen: für die Allowed IPs wird auch gleich eine entsprechende Route im Pi hinzugefügt.
Denkt dran: wenn weitere Netzte dabei sind müssen überall wieder weitere statische Routen hinzugefügt werden.
14. Juli 2021 um 17:41
Korrektur:
“Denkt dran: wenn weitere Netzte dabei sind müssen überall wieder weitere statische Routen hinzugefügt werden.”
Sollte heißen:
Denkt dran: wenn weitere Netzte dabei sind müssen in den Routern (wie Fritzboxen) weitere statische Routen hinzugefügt werden.
6. August 2021 um 11:42
geht auch einseitig mit CGN (LTE) und wie muss man die Konfig. abändern?
23. September 2021 um 18:12
Hallo,
auf dem Server 2 muss noch in der Wireguard-Konfigurationsdatei noch ein “iptables -t nat -A POSTROUTING -o wg0 -j MASQUERADE” hinter dem für das Interface eth0 eingetragen werden. Da sonst der VPN-Server in der statische Route keine IP-Pakete ins Netz 10.0.0.0/8 weiterleitet.
Viele Grüße,
Oliver
22. Januar 2022 um 18:26
Hi ,
im Video wird davon gesprochen das die Site by Site Verbinndung auch mit zwei gleichen Netzwerken geht.
Könnte jemand erklären, wie das geht?
Gruß Dalle
2. Februar 2022 um 22:25
Hallo Denis,
danke für die Anleitung. Ich konnte so zwischen zwei Standorten einen sauberen schenllen VPN WG Tunnel aufbauen. Jedoch habe ich volgendes bemerkt. Wenn ich den Server mit der dyndny neu starte wird die wg0.conf überschrieben und meine vpn.www.xy domain wird mit der IP überschireben.
KAnn man das ändern ?
19. September 2022 um 14:17
Hallo,
funktioniert das ganze auch mit zwei GL-inet Mangoroutern?
19. September 2022 um 22:09
Aber ja natürlich!
30. September 2022 um 11:58
Hallo,
danke vorab schon mal für die schöne Anleitung. Ich habe ähnliches Szenario mit einem vServer bei Strato. Aber da bekomme ich das nicht zum laufen.
Ich bekomme das als Antwort:
root@h8945162:/etc/wireguard# wg-quick up wg0
[#] ip link add wg0 type wireguard
RTNETLINK answers: Operation not supported
Unable to access interface: Protocol not supported
[#] ip link delete dev wg0
Cannot find device “wg0”
Nun bin ich nicht wirklich fit in Linux und auch kein Netzwerkprofi. Hab quasi alles mit Copy/Paste konfiguriert. Was mir aber auffällt ist, dass ich ja beim Strato-Server kein “Netz” habe, sondern nur eine öffentliche IP. Muss ich da dann an der Konfiguration was ändern? Mein Strato-Server entspricht im Beispiel dem Server1. Auf meinem Server2 hat alles geklappt. Da hab ich auch ein Portforwarding eingerichtet. Unterschied zum gezeigten Beispiel ist vielleicht noch das OS. Ich hab auf beiden Seiten Ubuntu 20.04 LTS am laufen.
Danke und viele Grüße
Tobias
17. Oktober 2022 um 18:06
Gutes Tutorial, aber wenn ich das richtig sehe fehlt hier bei der Site-to-Site Variante auf jeder Seite der Endpoint in der Peer Konfiguration. Sonst wissen die Server ja nicht wo sie sich hinverbinden müssen. Oder habe ich etwas anderes überlesen?
19. November 2022 um 21:19
Wer keine statische IP Adressen hat sollte sich dsa folgende einmal anschauen… WG prüft den DNS Eintrag aus der wg.conf nur beim start..
curl -LsS -o /usr/local/bin/wireguard-reresolve-dns https://github.com/WireGuard/wireguard-tools/raw/master/contrib/reresolve-dns/reresolve-dns.sh
chmod 0755 /usr/local/bin/wireguard-reresolve-dns
nano /etc/systemd/system/wireguard-reresolve-dns.service
nano /etc/systemd/system/wireguard-reresolve-dns.timer
systemctl enable wireguard-reresolve-dns.timer
systemctl start wireguard-reresolve-dns.timer
Grüße
19. November 2022 um 21:22
wireguard-reresolve-dns.service
[Unit]
Description=Wireguard Re-Resolve DNS of endpoints
[Service]
Type=oneshot
ExecStart=/usr/local/bin/wireguard-reresolve-dns wg0
wireguard-reresolve-dns.timer
[Unit]
Description=Runs Wireguard Re-Resolve DNS every 5 Minutes
[Timer]
OnUnitActiveSec=300s
OnActiveSec=300s
[Install]
WantedBy=multi-user.target
4. Februar 2023 um 21:44
Hallo Dennis,
ich habe eine Fritzbox 7530 in meiner Wohnung in Wolfsburg, die als Basisstation fungieren soll für eine VPN Verbindung zur 2. Fritzbox 7590 in China. Wir haben auf beiden Geräten Wireguard heruntergeladen und mehrere Remotegeräte (Handies, Computer, Tablets) mit der Fritzbox in WOB verbunden. Jetzt wollten wir die 2. Fritzbox anlegen und sind dafür an einen anderen Standort (Gifhorn) mit einem Vodafone/Kabelrouter gegangen. Haben die 2. Fritzbox per LAN-Kabel an den VOF/KA-Router angestöpselt und wollten die VPN Verbindung zur Box in WOB herstellen. Das funktioniert aber nicht und wir wissen nicht warum. Die Vermutung ist, dass der VOF/KA-Router es nicht zulässt, dass die Fritzbox durchssteuert. Kannst -du uns helfen?
Grüße
Achim, Johannes und Timo
11. Februar 2023 um 02:12
Moinsen,
Hast du die fritzbox auch mal als wireguard client eingerichtet?
Vg
11. Februar 2023 um 08:46
Hallo,
bei mir musste ich auf Debian das Interface wg0 seperat anlegen und dort die Adresse eingeben.
Also in /etc/Network/Interfaces
In der wg0.conf musste ich die Adresse rausnehmen.
Ist das mittlerweile immer so oder habe ich irgendwas übersehen, damit wireguard das Interface von sich aus Anlegt?
Ohne das zu machen, ging es nicht.
Sah zwar meine ich wg0 mit IP a, aber ohne Adresse.
Muss das heute nochmal auf einem anderen System ausprobieren, eventuell entdecke ich da den Fehler
27. Mai 2023 um 16:19
Hallo Dennis,
vielen Dank für deine Super Tutorials dazu!
Ich bekomms aber zum Verrecken nicht hin. Hier mein Setup:
Ich habe eine Ubiquiti UDMpro, die in der aktuellsten Version auf WireGuard kann. Diese sitzt auf der Remote-Seite und empfängt den Traffic von meinem “Wireguard-Client” aus dem lokalen Netz. Ich habe die Konfig auf der UDPpro erstellt, Wireguard in einem LXC-Container auf meinem Proxmox erstellt und gestartet.
Auf dem Client bekomme ich sofot zu Geräten im Remote-Netzwerk einen Ping zustande. Es funktioniert aber keine einzige Möglichkeit, von anderen Geräten im lokalen Netzwerk den Ping über den Wireguard-Client ins Remote-Netzwerk zu senden.
Hier meine Konfig:
[Interface]
Address = 10.99.10.3/32
SaveConfig = true
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
ListenPort = 58482
PrivateKey = xXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxX=
[Peer]
PublicKey = xXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXE=
AllowedIPs = 10.99.10.1/32, 10.99.10.3/32, 172.16.10.0/24, 172.16.12.0/24
Endpoint = xxx.xxx.xxx.xxx:58111
Auf dem Synology bzw. im Router habe ich eine statische Adresse auf die IP desWireguard-Clients gesetzt – ohne Erfolg.
Im LXC-Container ist keine firewall konfiguriert und in Proxmox ist sie ebenfalls deaktiviert