# Wireguard Client

WIKI: [Wiki Debian](https://wiki.debian.org/WireGuard "Wiki Debian")

#### Listing:

 apt-get install openresolv

ip link add wg type wireguard  
 wg show  
 nano /etc/wireguard/wg.conf  
 wg-quick up wg  
 ip address  
 ping 10.8.0.2  
 wg show

- Service:
- <span class="enlighter-text">systemctl enable [wg-quick@wg](mailto:wg-quick@wg)</span>
- <span class="enlighter-text">systemctl daemon-reload</span>
- <span class="enlighter-text">systemctl start [wg-quick@wg](mailto:wg-quick@wg)</span>

<span class="enlighter-text">=&gt;systemctl list-units|grep wg</span>

<span class="enlighter-text">Routing:</span>

```
sysctl net.ipv4.ip_forward=1
```

\-----------------------------------------------------------------------------------------------------------------------------------

# [WireGuard Site to Site VPN – Zwei Netzwerke sicher verbinden](https://schroederdennis.de/allgemein/wireguard-site-to-site-vpn-zwei-netzwerke-sicher-verbinden/)

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**.

<div class="post-content" id="bkmrk--24"><figure class="wp-block-image alignwide size-large is-style-default">![](https://schroederdennis.de/wp-content/uploads/2021/01/WG-site-to-site-1024x413.png)</figure></div>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](https://schroederdennis.de/tutorial-howto/wireguard-vpn-server-installieren-client-to-server/))  
Jetzt zeige ich euch wie man eine Site-to-Site VPN Verbindung herstellt und dann die Netzwerke auf der gegenüberliegenden Seite erreicht

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" data-origheight="380" data-origwidth="676" frameborder="0" height="380" src="https://www.youtube.com/embed/uV2NRmdCR0k?feature=oembed" style="width: 1015.2px; height: 570.675px;" title="WireGuard Site to Site VPN einrichten - Netzwerke sicher verbinden !! #VPN #SiteToSite" width="676"></iframe>

## Anleitung: WireGuard Site-to-Site VPN Server

### Schritt 1: Auf dem SERVER1 und SERVER2 ausführen

<div class="post-content" id="bkmrk-%3F-1-2-3-4-sh--c-%22ech"><div class="wp-block-syntaxhighlighter-code "><div><div class="syntaxhighlighter  bash" id="bkmrk-%3F-1-2-3-4-sh--c-%22ech-1"><div class="toolbar">[?](https://schroederdennis.de/allgemein/wireguard-site-to-site-vpn-zwei-netzwerke-sicher-verbinden/)</div><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div><div class="line number3 index2 alt2">3</div><div class="line number4 index3 alt1">4</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2">`sh -c ``"echo 'deb <a href="http://deb.debian.org/debian">http://deb.debian.org/debian</a> buster-backports main contrib non-free' > /etc/apt/sources.list.d/buster-backports.list"`</div><div class="line number2 index1 alt1">`apt update`</div><div class="line number3 index2 alt2">`apt ``install` `linux-headers-$(``uname` `--kernel-release)`</div><div class="line number4 index3 alt1">`apt ``install` `wireguard`</div></div></td></tr></tbody></table>

</div></div></div><div class="wp-block-syntaxhighlighter-code "><div><div class="syntaxhighlighter  bash" id="bkmrk-%3F-1-2-3-nano-%2Fetc%2Fsy"><div class="toolbar">[?](https://schroederdennis.de/allgemein/wireguard-site-to-site-vpn-zwei-netzwerke-sicher-verbinden/)</div><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div><div class="line number3 index2 alt2">3</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2">`nano ``/etc/sysctl``.conf`</div><div class="line number2 index1 alt1">`# <- entfernen bei der Zeile "net.ipv4.ip_forward=1" und speichern`</div><div class="line number3 index2 alt2">`sysctl -p `</div></div></td></tr></tbody></table>

</div></div></div><div class="wp-block-syntaxhighlighter-code "><div><div class="syntaxhighlighter  bash" id="bkmrk-%3F-1-2-3-4-5-cd-%2Fetc%2F"><div class="toolbar">[?](https://schroederdennis.de/allgemein/wireguard-site-to-site-vpn-zwei-netzwerke-sicher-verbinden/)</div><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div><div class="line number3 index2 alt2">3</div><div class="line number4 index3 alt1">4</div><div class="line number5 index4 alt2">5</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2">`cd` `/etc/wireguard/`</div><div class="line number2 index1 alt1">`umask` `077; wg genkey | ``tee` `privatekey | wg pubkey > publickey`</div><div class="line number3 index2 alt2">`cat` `privatekey`</div><div class="line number4 index3 alt1">`cat` `publickey`</div><div class="line number5 index4 alt2">`chmod` `600 ``/etc/wireguard/privatekey`</div></div></td></tr></tbody></table>

</div></div></div>Schritt 2: **Nur** auf SERVER1 ausführen</div>Konfigurationsdatei anlegen  
**nano /etc/wireguard/wg0.conf**

```
<strong>[Interface] </strong>
<strong>PrivateKey = <Dein privater Schlüssel [privatekey SERVER 1]> </strong>
<strong>Address = 172.31.0.1/</strong>24
<strong>SaveConfig = true </strong>
<strong>PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE</strong>
<strong>PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE</strong>
<strong>ListenPort = 51820</strong>

[Peer]
 PublicKey = <strong><Öffentlicher Schlüssel von [SERVER 2]></strong>
 AllowedIPs = 192.168.0.0/24, 172.31.0.0/24
 PersistentKeepalive = 25
```

In den Zeilen **PostUP &amp; 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**

```
<strong>[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</strong>
PersistentKeepalive = 25
```

### Schritt 4: Auf SERVER1 und SERVER2 ausführen

<div class="post-content" id="bkmrk-%3F-1-2-3-wg-quick-up-"><div class="wp-block-syntaxhighlighter-code "><div><div class="syntaxhighlighter  bash" id="bkmrk-%3F-1-2-3-wg-quick-up--1"><div class="toolbar">[?](https://schroederdennis.de/allgemein/wireguard-site-to-site-vpn-zwei-netzwerke-sicher-verbinden/)</div><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div><div class="line number3 index2 alt2">3</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2">`wg-quick up wg0`</div><div class="line number2 index1 alt1">`wg`</div><div class="line number3 index2 alt2">`##Das zeigt dir den Status der Verbindung an`</div></div></td></tr></tbody></table>

</div></div></div></div>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 &amp; Server2)

Wenn **WireGuard** automatisch mit dem System starten soll, dann folgenden Befehl absetzen.

<div class="post-content" id="bkmrk-%3F-1-systemctl-enable"><div class="wp-block-syntaxhighlighter-code "><div><div class="syntaxhighlighter  bash" id="bkmrk-%3F-1-systemctl-enable-1"><div class="toolbar">[?](https://schroederdennis.de/allgemein/wireguard-site-to-site-vpn-zwei-netzwerke-sicher-verbinden/)</div><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2">`systemctl ``enable` `wg-quick@wg0`</div></div></td></tr></tbody></table>

</div></div></div><div class="aawp"><div class="aawp-product aawp-product--list aawp-product--ribbon aawp-product--sale aawp-product--css-adjust-image-large aawp-product--bestseller" data-aawp-click-tracking="title" data-aawp-product-asin="B0BKPXZDCY" data-aawp-product-id="12254" data-aawp-product-title="Synology DS923+ 4 Bay Desktop NAS Ryzen R1600 Dual-Core" data-aawp-tracking-id="schrodennplugin-21">  
</div></div></div>### 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.

<div class="post-content" id="bkmrk-fritzbox-routing"><figure class="wp-block-image size-large is-style-default">![](https://schroederdennis.de/wp-content/uploads/2021/01/image.png)<figcaption>Fritzbox Routing</figcaption></figure>--------------------------------------------------------------------------</div><div class="post-content" id="bkmrk-wireguard-netzwerk-m"><article class="post-1229 post type-post status-publish format-standard hentry category-allgemein tag-wireguard" id="bkmrk-wireguard-netzwerk-m-1"><header class="entry-header"># Wireguard Netzwerk mit Routing einrichten

<div class="entry-meta"><span class="entry-date">[<time class="entry-date published" datetime="2019-11-28T10:40:12+01:00">28. November 2019</time>](https://www.edvpfau.de/wireguard-netzwerk-mit-routing-einrichten/)</span> by <span class="author vcard">[Sascha Pfau](https://www.edvpfau.de/author/sascha/)</span><span class="sep">·</span><span class="comments-link">[Keine Kommentare](https://www.edvpfau.de/wireguard-netzwerk-mit-routing-einrichten/#respond)</span></div></header># Wireguard Netzwerk

Die prinzipielle Einrichtung von Wireguard habe ich in dem Artikel [Wireguard](https://www.edvpfau.de/wireguard/) beschrieben. Es ging um die die Point to Point Einrichtung mehrerer Clients die auf einen PC, der als Server fungiert, zugreifen. Die Clients konnten sich untereinander nicht sehen.

Im folgenden möchte ich beschreiben, wie man ein VPN Netz aufbaut in dem sich die Clients untereinander verbinden können. Damit Clients in dem privaten Netzwerk sich über Hostname ansprechen können, wird ein zentraler DNS Server eingerichtet. Hierfür verwende ich einen vorhandenen OpenWRT Router.

## Aufbau des Netzwerkes

Das Netzwerk ist auf mehrere Standorte verteilt. Es gibt einen zentralen Linux PC der die Rolle des Wireguard Servers einnimmt. Die Rolle einnimmt, weil es per se keinen Wireguard Server gibt. Es ist die Konfiguration die ihn zur Zentrale werden lässt. Damit dieser erreichbar ist, ist ein DynDNS Dienst oder eine feste IP Adresse von Nöten. Dieses ist aber nicht Bestandteil dieses Artikels. Hier verwaise ich zum Beipsiel auf den Artikel [DynDNS mit Duck DNS](https://www.edvpfau.de/dyndns-mit-duckdns/).

Der Server bekommt in dem VPN die Adresse 10.0.0.1. Der Server ist für das Routing unter den Clients verantwortlich. Das heißt er leitet eingehende Pakete an die anderen Clients weiter. Hierfür muss das IP Forwarding aktiviert und einfache Regeln für die **FORWARD** Chain von IPTABLES angelegt werden.

Die Clients stellen eine Reihe von Laptops, Workstations und weiteren Servern da. Die Client erhalten durchnummerierte IP Adressen beginnend mit 10.0.0.2/32. In meinem Setup sind es aktuell 6 weitere PCs die in dem VPN vorhanden sind.

## Konfiguration von Wireguard

Im Folgenden werde ich das Schema wie Clients und der Server einzurichten sind erläutern. Wenn das Schema bekannt ist, dann ist es leicht weitere Clients hinzuzufügen.

### Einrichtung auf dem Server

Das Schema ist eigentlich recht einfach. Es muss allerdings auf die Subnetzmaske bei der Angabe der IP Adressen genau geachtet werden. Die Server Adresse ist mit /24 und die Clients mit /32 anzugeben.

```
[Interface]
PrivateKey = PrivateKeyDesServers
ListenPort = 32768
Address = 10.0.0.1/24

# Allow routing between clients
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT

#
# Client 1
#
[Peer]
PublicKey = PublicKeyDesClient
AllowedIPs = 10.0.0.2/32

#
# Client 2
#
[Peer]
PublicKey = PublicKeyDesClient
AllowedIPs = 10.0.0.3/32

#
# Client 3
#
[Peer]
PublicKey = PublicKeyDesClient
AllowedIPs = 10.0.0.4/32

.
.
.

#
# Client 7
#
[Peer]
PublicKey = PublicKeyDesClient
AllowedIPs = 10.0.0.7/32

```

### Einrichtung der Clients

Es ist hierbei wichtig zu wissen, dass nur ein Client das gesamte Subnetz beanspruchen darf! Sonst funktioniert das ganze nicht. Das heißt auf den Clients sind explizit die Adresse einzutragen mit denen der Client kommunizieren darf. Dieses macht aber nur bei kleineren Netzen einen Sinn.

```
[Interface]
PrivateKey = PrivateKeyDesClients
Address = 10.0.0.3/24
DNS = 10.0.0.7

[Peer]
PublicKey = PublicKeyDesServers
AllowedIPs = 10.0.0.1/32, 10.0.0.2/32, 10.0.0.5/32, 10.0.0.6/32, 10.0.0.7/32
EndPoint = myname.dyndns.org:32222
PersistentKeepalive = 25

```

Wichtig ist das alle Clients mit **10.0.0.X/32** angegeben werden.

## IP Forwarding Aktivierung

Das allgemeine IP Forwarding bzw. auf Geräteebene aktivieren habe ich bereits in dem [Wireguard](https://www.edvpfau.de/wireguard/) Artikel beschreiben.

## Firewall Regeln

Damit die Pakete nun auch an die Client weitergeleitet werden, muss in der **FORWARD** Chain das In-/Output auf dem Wireguard Interface zulassen. Dieses kann mit dem **PostUp** in der Konfiguration automatisch nach dem Starten der Verbindung durchgeführt werden.

```
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT

```

## Verbindungsaufbau

Für den automatischen Verbindungsaufbau muss die Option **PersistentKeepalive** gesetzt werden, damit ein Paket Verbindung öffnet.

## Einrichtung von DNS

Auf dem Client habe ich die Konfiguration mit dem KDE NetworkManager durchgeführt. Bei der Wireguard Konfiguration habe ich nun die Adresse des DNS Servers eingetragen, der für das interne Netzt zuständig ist. Die [Konfiguration der statische Hostnames](https://www.edvpfau.de/statische-dns-eintraege-per-ssh-auf-openwrt-verwalten/) beschriebt ein andere Artikel.

### Testen der Namesauflösung

Auf http://openwrt/cgi-bin/luci/admin/network/dhcp unter *Local Server* mit **/XXXX.duckdns.org/** Anfrage an die Domain nach außen unterbinden, da diese sonst von DuckDNS beantwortet werden würden und somit die IPV6 Adresse genommen wird, was zu Fehlern führt.

<div class="tags-links">[Wireguard](https://www.edvpfau.de/tag/wireguard/)</div></article>---

</div>