Wireguard

Installation

Die Installation von Wireguard beschränkt sich auf ein (noch out of tree) Kernelmodul und den wireguard-tools.

yaourt --noconfirm -S wireguard-dkms wireguard-tools linux-headers

Es müssen die Kernel Headers in der passenden Version zum laufenden Kernel installiert sein. Unter Manjaro Linux wird ein einfaches Schema dafür verwendet. Der Paketname lautet: linuxYYY-headers. YYY steht für die Kernelversion. Zum Beispiel: linux418-headers ist ein Paketname. Das Paket linux-headers zeigt immer auf den letzten Kernel.

Scenario

Es sollen 3 Rechner über ein privates Netzwerk 10.0.0.0/24 über das Wireguard VPN miteinander verbunden werden. Der Server am Standort A ist über eine DynDNS Adresse server.dyndns.com über das Internet erreichbar. Der Server bekommt die Adresse 10.0.0.1 im VPN. Am Standort B sollen 2 Clients mit den Adressen 10.0.0.2 und 10.0.0.3 mit dem Server verbunden werden.

Als Port wird hier in dem Beispiel 33333 verwendet. Der Port ist frei wählbar. Der Port muss bei NAT am Router auf die entsprechende IP Adresse im internen Netz zeigen. Wireguard verwendet das zustandslose Protokoll UDP.

Schlüssel anlegen

1. Schritt

Als Root die Dateien publickey und wg0.conf anlegen. Diese werden auf allen Maschinen benötigt und bilden die gemeinsame Basis für die Konfiguration von Wireguard.

cd /etc/wireguard
umask 077
printf "[Interface]\nPrivateKey = " > wg0.conf
wg genkey | tee -a wg0.conf | wg pubkey > publickey
mcedit /etc/wireguard/wg0.conf

2. Schritt

Konfiguration Server

[Interface]
PrivateKey = DiesesIstDerGeneriertePrivateKey=
ListenPort = 33333
Address = 10.0.0.1/24

[Peer]
PublicKey = DiesesIstDerPublicKeyDesClients1=
AllowedIPs = 10.0.0.2/32

[Peer]
PublicKey = DiesesIstDerPublicKeyDesClients2=
AllowedIPs = 10.0.0.3/32

Konfiguration Clients

Client 1
[Interface]
PrivateKey = DiesesIstDerGeneriertePrivateKey=
ListenPort = 33333
Address = 10.0.0.3/24

[Peer]
PublicKey = DiesesIstDerPublicKeyDesClients1=
AllowedIPs = 10.0.0.1/24
EndPoint = server.dyndns.com:33333
Client 2
[Interface]
PrivateKey = DiesesIstDerGeneriertePrivateKey=
ListenPort = 33333
Address = 10.0.0.3/24

[Peer]
PublicKey = DiesesIstDerPublicKeyDesClients2=
AllowedIPs = 10.0.0.1/24
EndPoint = server.dyndns.com:33333

Service aktivieren

sudo systemctl enable wg-quick@wg0

Service neustarten

sudo wg-quick down wg0; sudo wg-quick up wg0

Achtung: Wenn man Änderung auf einem entfernten PC durchführt und für die Verbindung Wireguard verwendet, so sollte man auf jeden Fall die Konfiguration doppelt prüfen. Kommt es zu einem Fehler, dann sperrt man sich selbst aus.

IPv4 Forwarding

Ich bevorzuge die Aktivierung des Forwarding nur für das wg0 Interface freizuschalten.

  • Für alle Interfaces

    sysctl net.ipv4.ip_forward=1

  • Nur für Wireguard IPv4-forwarding erlauben

    sysctl net.ipv4.conf.wg0.forwarding=1

Persistierung der Einstellung Forwarding

Die Datei /etc/sysctl.d/30-ipforward.conf mit folgenden Inhalt anlegen:

net.ipv4.ip_forward=1    

Überprüfung Einstellung

Nach einem Neustart kann die Verarbeitung der Datei mit sysctl -a überprüft werden.

sudo sysctl -a | grep net.ipv4.conf.wg0.forwarding