VPNs mit Wireguard aufbauen

Aus LinuxUser 05/2024

VPNs mit Wireguard aufbauen

© Tonsnoei / 123RF.com

Gute Verbindung

Mit Wireguard bauen Sie im Handumdrehen eine VPN-Verbindung auf. Viele weitverbreitete DSL-Router unterstützen das Protokoll inzwischen schon ab Werk.

VPN steht als Abkürzung für den englischen Begriff Virtual Private Network. Aber was bedeutet das genau? Klären wir erst einmal, was ein privates Netzwerk ist: Dabei handelt es sich um ein abgeschlossenes Netzwerk, zu dem nur ein bestimmter Personenkreis Zugriff hat. Dazu zählen das Intranet einer Firma oder Ihr LAN zu Hause. Üblicherweise sind die Nutzer des Netzwerks bekannt und auf irgendeine Art und Weise authentifiziert. Auf der IP-Ebene lassen sich alle Rechner in einem Subnetz oder über Routing erreichen.

Soll sich nun ein privates Netz über mehrere räumlich getrennte Bereiche ausdehnen, gilt es, diese netzwerktechnisch miteinander zu verbinden. Der banale, aber auch recht teure Lösungsansatz wäre hier das Anmieten von Standleitungen. Für den Fall, dass sich nur ein einzelner Mitarbeiter mit einem privaten Netzwerk verbinden soll, kann man eine einfache Modemeinwahl verwenden. Aber auch dieser Weg ist recht kostenintensiv und nicht mehr zeitgemäß. Kommen wir jetzt also zu dem magischen Wort “virtuell”.

Bei einem VPN übernimmt eine zusätzliche Software quasi die Funktion einer Standleitung wie auch einer Modemeinwahl. Die Kommunikation findet dabei allerdings über unsichere Netze wie das Internet statt. Damit die übertragenen Daten trotzdem privat bleiben, kommen starke Verschlüsselungs- und Authentifizierungsverfahren zum Einsatz. Ein interessanter Aspekt an VPNs ist, dass sie nur den Datenverkehr innerhalb des VPNs schützen können. Sobald Sie mit einem Server außerhalb des VPNs kommunizieren, bewegen Sie sich wieder im potenziell unsicheren Internet. Aus diesem Grund verschlüsseln mittlerweile alle Dienste, die das Internet als Transportmedium verwenden, mit einem Ende-zu-Ende-Verfahren.

Was ist Wireguard?

Bei Wireguard handelt es sich um ein modernes und einfaches Netzwerkprotokoll zum Erstellen von VPNs. Es wurde 2020 in den Linux-Kernel integriert und verwendet UDP zur Datenübertragung. Das Protokoll arbeitet verbindungslos, sodass Störungen der Datenübertragung nicht zu Verbindungsabbrüchen führen.

Nicht nur die Integration direkt in den Kernel steigert die Performance im Vergleich zu anderen VPN-Protokollen: Ein weiterer Grund für die bessere Performance liegt darin begründet, dass sich die Algorithmen von Wireguard parallelisieren lassen, man kann die Last entsprechend über mehrere CPU-Kerne verteilen. Mit Portscans kann man Wireguard nicht aufspüren, darüber hinaus verfügt es über Schutzmechanismen gegen Angreifer (DoS, Replay). Alle gesendeten Nachrichten müssen authentifiziert sein, ansonsten verwirft Wireguard sie.

Wireguard verfolgt einen Peer-to-Peer-Ansatz, wobei es die einzelnen Peers (gleichwertige Partner) über ihren Public Key identifiziert. Jeder Peer hält eine Tabelle mit den Public Keys der anderen Peers. Zusätzlich enthält diese Tabelle deren erlaubte IP-Adressen und, falls vorhanden, einen Internet-Endpunkt. Das Ganze liest sich wie eine Routing-Tabelle. Falls sich der Internet-Endpunkt ändert, aktualisiert Wireguard die Tabelle entsprechend.

Bei Wireguard werden die Geräte und nicht die User authentisiert. Besitzt ein Nutzer mehrere Geräte, verwendet jedes davon einen eigenen Schlüssel. Diese Eigenschaft kann die Administration von Wireguard bei Usern mit vielen unterschiedlichen Geräten verkomplizieren. Die kryptografischen Verfahren sind bei Wireguard vollständig festgelegt – einerseits ein Vorteil, weil sich nichts falsch konfigurieren lässt. Andererseits stellt es aber auch einen Nachteil dar, denn die Verschlüsselungsverfahren lassen sich damit nicht vom Benutzer an die technische Weiterentwicklung anpassen.

Setup

Die Installation von Wireguard erledigen Sie in Ubuntu mit dem Kommando sudo apt install wireguard-tools. Die folgende Konfiguration nehmen Sie vollständig mit den Tools ip und wg vor. Üblicherweise kommt allerdings das Tool wg-quick zum Einsatz. Es liest die Konfiguration unter /etc/wireguard/Interface.conf ein und verarbeitet sie. Zusätzlich ist es damit möglich, Wireguard als Systemdienst einzurichten. Grafische Client-Programme für viele weitere Betriebssysteme stehen auf der Wireguard-Homepage [1] zum Herunterladen bereit.

Da die Verschlüsselung von Wireguard auf einem Private/Public-Key-Verfahren basiert, besteht der erste Schritt beim Einrichten von Wireguard immer im Erzeugen eines Schlüsselpaars. Der Server und jeder Client benötigen dabei ein eigenes Schlüsselpaar. Die Kommandos zum Erzeugen der Schlüssel zeigt Listing 1. Den Public Key können Sie bedenkenlos herausgeben, der Private Key bleibt geheim.

Listing 1

Schlüsselpaar erzeugen

$ wg genkey > private.key
$ wg pubkey < private.key > public.key

Wir verwenden für unseren Test Linux Container (LXC), die wir mit LXD-UI verwalten. Mehr zu diesem Thema finden Sie in einem Artikel aus LU 04/2024 [2]. Unsere Testumgebung besteht aus einem Server und zwei Clients (Abbildung 1). Zum besseren Verständnis sind in den Konfigurationsdateien aus den Listings 2 bis**4 die realen Schlüssel dargestellt. Zusätzlich sehen Sie in der Tabelle “Testumgebung” die IP-Adressen sowie die VPN-IP-Adressen aller Rechner.

Abbildung 1: Aufbau der Testumgebung mit LXC.

Abbildung 1: Aufbau der Testumgebung mit LXC.

Prinzipiell hat jeder Host seine eigene Konfiguration mit Private Key und eine Peer-Konfiguration für die Rechner, mit denen er sich verbinden kann. Der Server führt seinerseits eine Liste aller Peers. Diese haben jeweils einen Endpoint, um mit dem Server zu kommunizieren. In der Vorgabe verwendet Wireguard den Port 51820.

Damit wir beim Testen des Setups nicht durcheinanderkommen, geben wir den Wireguard-Interfaces IP-Adressen aus dem privaten Netzwerkbereich 172.16.0.0. Die Konfigurationsdateien legen wir auf den entsprechenden Rechnern im Verzeichnis /etc/wireguard/ ab.

Host

IP Wireguard

IP Netzwerk

Server

172.16.0.1/24

10.89.246.218/24

Client 1

172.16.0.10/24

10.89.246.95/24

Client 2

172.16.0.11/24

10.89.246.222/24

Listing 2

/etc/wireguard/wg0.conf (Server)

# Server
[Interface]
Address = 172.16.0.1/24
PrivateKey=kBeX7nMRWK9NRyixBcbf4y4dN4xDlhg3os6v1fntjnA=
ListenPort=51820
# Client 1
[Peer]
PublicKey=bPmPcb9QkktdwI/1b6W3VS2hj92C3q21sn1Ey21OFkU=
AllowedIPs=172.16.0.10/32
# Client 2
[Peer]
PublicKey=+yfT+KrQkTWCoYjUHWwFsysji4ooTSTHiMbQ8KELnS8=
AllowedIPs=172.16.0.11/32

Listing 3

/etc/wireguard/wg0.conf (Client 1)

# Client 1
[Interface]
Address = 172.16.0.10/24
PrivateKey=qFsqzzaOXMajT4UODvKzkuxja153FVl4UP0QBVSxpnY=
ListenPort=51820
# Server
[Peer]
PublicKey=9fhOUjjy3zQVH3MEWxN5R1zsaAbZ3r0hz8Hp/JlkqWU=
Endpoint = 10.89.246.218:51820
AllowedIPs=172.16.0.1/32

Listing 4

/etc/wireguard/wg0.conf (Client 2)

# Client 2
[Interface]
Address = 172.16.0.11/24
PrivateKey=oIVzUhIr3Rt4Sl7Rtfo8EGYkiGswYenf6JKeQSaZsnU=
ListenPort=51820
# Server
[Peer]
PublicKey=9fhOUjjy3zQVH3MEWxN5R1zsaAbZ3r0hz8Hp/JlkqWU=
Endpoint =10.89.246.218:51820
AllowedIPs=172.16.0.1/32

Listing 5 fasst alle Kommandos zusammen, die Sie zum Verwalten von Wireguard benötigen. Um auszuprobieren, ob das Setup funktioniert, verwenden Sie das Ping-Kommando. Der Server muss sich von beiden Clients aus erreichen lassen, die Verbindung vom Server zu den Clients sollte ebenfalls funktionieren. Die Clients haben untereinander keinen Zugriff.

Zusätzliche Verbindungen richten Sie bei Bedarf über weitere Firewall-Regeln ein. Diese tragen Sie mit den Schlüsselwörtern PostUp und PostDown direkt in die Wireguard-Konfigurationsdatei ein. So lassen sich auch vollständige Netze mit Wireguard koppeln.

Listing 5

Wireguard-Kommandos

### Wireguard starten
$ sudo systemctl start wg-quick@wg0.service
### Wireguard stoppen
$ sudo systemctl stop wg-quick@wg0.service
### Wireguard als Dienst einrichten
$ sudo systemctl enable wg-quick@wg0.service
### Wireguard-Konfiguration einlesen
$ sudo systemctl daemon-reload
### Wiregaurd-Status abfragen
$ systemctl status wg-quick@wg0

Nach Hause telefonieren

Heimanwender benötigen nur selten den vollen Funktionsumfang von Wireguard. Es läuft in den meisten Fällen darauf hinaus, dass man von unterwegs auf die Daten im Heimnetzwerk zugreifen möchte. Dazu bringen einige Hersteller in ihren Routern Wireguard bereits mit. Wir sehen uns das am Beispiel der Fritzbox 7590AX [3] und des Telekom Speedport Smart 4 [4] an.

Um über das Internet per VPN auf das lokale Netzwerk zuzugreifen, müssen wir wissen, welche IP-Adresse uns der Provider zuweist. Erschwerend kommt hinzu, dass sich diese ändern kann. Eine Lösung für dieses Problem bieten dynamische DNS-Dienste, die feste Domain-Namen mit wechselnden IP-Adressen verbinden. Viele Anbieter von DynDNS-Diensten haben auch ein kostenfreies Angebot im Portfolio. Zu den bekanntesten Anbietern von dynamischen DNS zählen No-IP.com, DynDNS.com, Selfhost.de, AnyDNS.info und Dyndnsfree.de. Werfen Sie zunächst einen Blick in die Konfiguration Ihres Routers, um zu sehen, welche Anbieter er unterstützt, und wählen Sie dann einen davon aus.

Sehen wir uns jetzt an, wie Sie Wireguard auf dem Telekom Speedport Smart 4 einrichten. Dazu verbinden Sie sich mit der Webseite des Routers und navigieren zum Menüpunkt Netzwerk | Virtuelles Netz (VPN). Hier angekommen, sehen Sie eine Übersicht der bereits eingerichteten VPN-Verbindungen. Um eine weitere hinzuzufügen, klicken Sie auf Weiteren VPN-Zugang einrichten. Es erscheint ein QR-Code (Abbildung 2), den Sie mit der Wireguard-App Ihres Smartphones einscannen – schon ist das VPN eingerichtet und betriebsbereit. Sie können jetzt von Ihrem Gerät auf das Heimnetzwerk zugreifen.

Abbildung 2: Das Setup von Wireguard im Telekom-Router Speedport Smart&nbsp;4.

Abbildung 2: Das Setup von Wireguard im Telekom-Router Speedport Smart 4.

Beachten Sie, dass der QR-Code alle Informationen enthält, um den Client vollständig zu konfigurieren. Das bedeutet auch, dass sich der Private Key des Clients darin befindet. Achten Sie deshalb immer darauf, dass er nicht in falsche Hände gerät. Dasselbe gilt für die Konfigurationsdatei, die sich alternativ herunterladen lässt.

Sehen wir uns jetzt an, wie das Einrichten von Wireguard mit der Fritzbox 7590AX funktioniert. Wie Abbildung 3 zeigt, finden Sie den entsprechenden Punkt im Menü unter Internet | Freigaben | VPN (Wireguard). Falls Sie Ihre Fritzbox noch nicht registriert haben, holen Sie das jetzt nach, denn damit bekommt Ihre Box kostenfrei einen dynamischen DNS-Eintrag.

Abbildung 3: Das Einrichten von Wireguard finden Sie in der Fritzbox unter <span class="ui-element">Internet</span>&nbsp;| <span class="ui-element">Freigaben</span>.

Abbildung 3: Das Einrichten von Wireguard finden Sie in der Fritzbox unter Internet | Freigaben.

Nach Abschluss der Registrierung erscheint der Schalter Verbindung hinzufügen. Ein Klick darauf öffnet eine Abfrage, welchen VPN-Typ Sie einrichten möchten. Sie wählen zwischen Einzelgerät verbinden oder Netzwerke koppeln (Abbildung 4). Mit Letzterem implementieren Sie bei Bedarf beliebige Wireguard-Konfigurationen. Die meisten anderen Router mit Wireguard-Unterstützung können nur einzelne Geräte anbinden.

Abbildung 4: Einfacher geht es kaum: W&auml;hlen Sie in der Fritzbox-Konfiguration <span class="ui-element">Einzelger&auml;t verbinden</span>, ist das Setup so gut wie abgeschlossen.

Abbildung 4: Einfacher geht es kaum: Wählen Sie in der Fritzbox-Konfiguration Einzelgerät verbinden, ist das Setup so gut wie abgeschlossen.

Im nächsten Schritt geben Sie der Verbindung einen Namen, danach fragt das Setup eine zusätzliche Bestätigung über die Hardware selbst ab (Abbildung 5). Das verhindert, dass jemand unbemerkt von außen VPN-Verbindungen in Ihrer Fritzbox anlegt. Diese Funktion gibt es so bei anderen Routern selten. Nach der Bestätigung richten Sie Ihr Gerät per QR-Code oder Konfigurationsdatei ein (Abbildung 6).

Abbildung 5: Die Fritzbox besteht beim Einrichten des Wireguard-VPNs auf einer zus&auml;tzlichen Authentifizierung &uuml;ber Ihr Festnetztelefon.

Abbildung 5: Die Fritzbox besteht beim Einrichten des Wireguard-VPNs auf einer zusätzlichen Authentifizierung über Ihr Festnetztelefon.

Abbildung 6: Nach dem Einrichten m&uuml;ssen Sie nur noch den QR-Code mit der Wireguard-App auf Ihrem Smartphone abfotografieren, um eine Verbindung herzustellen.

Abbildung 6: Nach dem Einrichten müssen Sie nur noch den QR-Code mit der Wireguard-App auf Ihrem Smartphone abfotografieren, um eine Verbindung herzustellen.

Mögliche Fehler

Im Umgang mit Wireguard kommt es gelegentlich zu Fehlern, die überdurchschnittlich oft auftreten. Lässt sich beispielsweise der Endpunkt nicht erreichen, sind oft Tippfehler die Ursache. Es kommt auch vor, dass der DynDNS-Eintrag nicht aktualisiert wurde. In einem solchen Fall prüfen Sie per Ping, ob die Verbindungen stehen.

Wenn Sie Wireguard einrichten und aktiv lassen, kann es im Zusammenhang mit Login-Seiten fürs Netzwerk zu Problemen kommen. Sobald eine IP-Adresse da ist, aktiviert sich Wireguard und versucht, mit dem Endpunkt zu kommunizieren. Das klappt aber nicht, weil man sich am lokalen Netz nicht angemeldet hat. Das wiederum geht nicht, da Wireguard bereits die IP-Konfiguration verändert hat. Um diesem Teufelskreis zu entrinnen, müssen Sie Wireguard erst einmal deaktivieren.

Es kann zudem vorkommen, dass die Standard-MTU-Size etwas zu groß ist. Wireguard kann dann den Handshake nicht aushandeln. Falls das der Fall sein sollte, verkleinern Sie in der Konfiguration des Clients die MTU-Size auf 1400. Das hilft häufig.

Fazit

Wireguard präsentiert sich als zeitgemäßes, robustes und sicheres Protokoll, um ohne großen Aufwand eigene VPNs zu erstellen. Linux hält alle Tools bereit, die Sie dafür benötigen. Mittlerweile gibt es auch schon einige Router, die Wireguard unterstützen. Die Fritzbox bietet hier einige interessante Funktionen, die andere Router so nicht mitbringen. (tle)

Der Autor

Martin Mohr erlebte die komplette Entwicklung der modernen Computertechnik live mit. Nach dem Studium entwickelte er überwiegend Java-Applikationen. Mit dem Raspberry Pi erwachte seine alte Liebe zur Elektronik wieder.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDF
LinuxUser 05/2024 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben