In der Welt der Virtual Private Networks (VPN) gibt es eine aufregende Entwicklung, die die Art und Weise, wie wir sicher und privat im Internet surfen, revolutioniert: WireGuard. Diese innovative VPN-Technologie hat in den letzten Jahren viel Aufmerksamkeit auf sich gezogen und wird zunehmend zur bevorzugten Wahl für Datenschutz- und Sicherheitsbewusste. Mit seiner schlanken Codebasis, beeindruckenden Geschwindigkeiten und modernen Sicherheitsmerkmalen verspricht WireGuard eine frische Perspektive auf VPN-Verbindungen und zeigt, dass weniger manchmal mehr ist. In diesem Artikel werden wir uns näher mit WireGuard befassen, seine Funktionsweise verstehen und herausfinden, warum es als die Zukunft der VPN-Technologie gilt.

Hinweise zur Einrichtung:

Seit Debian 11 befindet sich WireGuard in den offiziellen Paketquellen von GNU/Linux (Debian). Zur Installation sind die folgenden Schritte notwendig:

apt update
apt install ca-certificates apt-transport-https nano -y
apt install wireguard -y

Je nach Verwendungszweck kann es erforderlich sein, in Linux das IP-Forwarding zu aktivieren, dies kann in der Datei: /etc/sysctl.conf vorgenommen werden.

net.ipv4.ip_forward=1

Anschließend muss die Konfiguration erneut geladen werden, dies kann mit dem folgenden Befehl erfolgen. Alternativ ist natürlich auch Neustart des Systems möglich.

sysctl -p

Das Basisverzeichnis von WireGuard ist unter: /etc/wireguard/ zu finden. Hier sollten die Konfigurationen vorgenommen werden. Die Authentifierung und Verschlüsselung zwischen Server und Clients basiert auf Öffentlichen und Privaten – Schlüsseln. Diese können wie in den folgenden Beispiel generiert werden.

wg genkey | tee server_private.key | wg pubkey > server_public.key
wg genkey | tee client1_private.key | wg pubkey > client1_public.key

Beispielhafte Server-Konfiguration (wg0.conf)

[Interface]
Address = 192.168.200.1/24
ListenPort = 51820

PrivateKey = <Server Private-Key>
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

# Client1
[Peer]
PublicKey = <Client Public-Key>
AllowedIPs = 192.168.200.2/32

Beispielhafte Client-Konfiguration (client.conf)

[Interface]
PrivateKey = <Client Private-Key>
Address = 192.168.200.2
DNS = 1.1.1.1

[Peer]
PublicKey = <Server Public-Key>
Endpoint = Server-IP:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25

Wenn WireGuard entsprechend konfiguriert wurde, kann es testweise mit folgendem Befehl ausgeführt werden. Auf diese Art und Weise werden direkt im Terminal evtl. Fehlermeldungen angezeigt.

wg-quick <up/down> <Name der Konfiguration (ohne .conf)>

Wenn alles wie gewünscht läuft, kann der Tunnel auch über einen Service gestartet werden.

systemctl enable wg-quick@<Name der Konfiguration (ohne .conf)>
systemctl start wg-quick@<Name der Konfiguration (ohne .conf)>

Hinweise:

Standardmäßig erzeugt WireGuard eine neue Routingtabelle, was zu evtl. Routing-Problemen führen kann. Möchte man diese automatischen Routing-Regeln deaktivieren, kann dies durch einen weiteren Eintrag in der Konfiguration vorgenommen werden.

Table = off

Außerdem ist die richtige Einstellung der MTU zu beachten. Wird in der Konfiguration die MTU nicht ausdrücklich gesetzt, ist der Standardwert: 1420. Nach meinen Erfahrungen ist der Best-Practice ein MTU-Wert von: 1412.