Benutzer-Werkzeuge

Webseiten-Werkzeuge


howtos:wireguard
Übersetzungen dieser Seite:

Dies ist eine alte Version des Dokuments!


Wireguard Installation und Konfiguration

Die Frage, wozu man ein VPN benötigt ist einfach zu beantworten, er bietet die Möglichkeit die eigenen Infrastruktur auch unterwegs sinnvoll zu nutzen. Konkrete Beispiele:

  • Sicheres Nutzen des Internets auch in öffentlichen HotSpots
  • Zugriff auf die heimische Netzwerkfestplatte

PiVPN hat vor einiger Zeit als Standard von OpenVPN zu Wireguard gewechselt. Die wesentlich bessere Performance von Wireguard hat diesen Schritt begründet. Ich beschreibe hier kurz, wie Wireguard installiert und für den Hausgebrauch konfiguriert wird.
Als Server dient uns ein Raspberry Pi 4 mit Raspberry Pi OS. Ich gehe im folgenden davon aus, das die Aktionen mit den User root durchgeführt werden, das erspart mir die Mühe vor jedem Command „sudo“ zu schreiben.
Raspberry Pi OS liefert einen Kernel mit, der mit Wireguard kompatibel ist. Ein Kernel älter als 5.6 wird ausdrücklich nicht empfohlen. Ach, welchen Kernel habe ich denn?

uname -a | cut -d" " -f3

liefert die gewünschte Information

Installation

apt install wireguard

Ja, das war es auch schon :-) Wireguard ist nun installiert und kann benutzt werden. Die Konfiguration findet im Verzeichnis /etc/wireguard statt und besteht aus einer einzigen Datei mit der Endung .conf (z.B. wg0.conf)

Konfiguration

Sowohl Client als auch Server benötigen eine Konfigurationsdatei.
Server und Client authentifizieren sich gegenseitig mittels eines private/puclic Key Paares. Diese Keys können wie auf der Wireguard Webseite beschrieben erzeugt werden. Hier kurze Beispiele, in denen der Server immer die erste IP Adress hat und die Clients beginnend mit „2“ durchnummeriert werden
Server Konfiguration, dieser stellt zu einen eine Verbindung in unser Heimnetz (in diesem Fall 192.168.178.0/24) und ins Internet zur Verfügung

/etc/wireguard/zuhause.conf:
[Interface]
# Server zuhause
Address = 10.8.10.1/24
SaveConfig = false
ListenPort = 51196
PrivateKey = <Private Key des Servers>
[Peer]
# Client cli2_zuhause
PublicKey = <Public key des Client 2>
AllowedIPs = 10.8.10.2/32
[Peer]
# Client cli3_zuhause
PublicKey = <Public key des Client 3>
AllowedIPs = 10.8.10.3/32

Client 2 Konfiguration, dieser Client nutzt den VPN nur zum Zugriff auf das heimische Netzwerk:

[Interface]
# Client cli2_zuhause
PrivateKey = <Private Key des Client 2>
Address = 10.8.10.2/24
# DNS = 9.9.9.9
[Peer]
# Server zuhause
PublicKey = <Public Key des Servers>
AllowedIPs = 10.8.10.0/24,192.168.178.0/24
Endpoint = dein.dyndns.de:51196
PersistentKeepalive = 30

Client 3 Konfiguration, dieser Client nutzt den VPN für sämtlichen Netzwerk Traffic:

[Interface]
# Client cli3_zuhause
PrivateKey = <Private Key des Client 3>
Address = 10.8.10.3/24
DNS = 9.9.9.9
[Peer]
# Server zuhause
PublicKey = <Public Key des Servers>
AllowedIPs = 10.8.10.0/24,192.168.178.0/24,0.0.0.0/0
Endpoint = dein.dyndns.de:51196
PersistentKeepalive = 30

Der Parameter „Endpoint =“ in der Client Konfiguration nennt den (Dyn)DNS Namen oder die öffentliche IP Adresse eures Routers.
Wenn sämtlicher Traffic (Client 3) über den VPN gejagt wird ist die Angabe eines DNS erforderlich. Dies kann euer Router (i.d.R. die erste IP in eurem lokalen Heimnetz, im Beispiel also 192.168.178.1) oder ein öffentlicher DNS wie 9.9.9.9 sein. Ohne DNS Eintrag funktioniert zwar der VPN, aber eine Namensauflösung findet nicht statt. Ein ping nach 9.9.9.9 wird also funktioneren, ein ping nach dns9.quad9.net aber nicht, denn der Name kann nicht aufgelöst werden.

howtos/wireguard.1645017608.txt.gz · Zuletzt geändert: 2022/02/16 13:20 von morquai