WireGuard VPN: Installation und Konfiguration von VPN-Servern und -Clients

WireGuard VPN ist eine völlig kostenlose Software, mit der wir VPN-Tunnel einrichten können. Diese vollständige Software enthält alle erforderlichen Kommunikations- und Kryptographieprotokolle, um ein virtuelles privates Netzwerk zwischen mehreren Clients und einem Server aufzubauen. WireGuard Bietet eine bessere Leistung als das IPSec-Protokoll und OpenVPN (sowohl in Bezug auf die Geschwindigkeit als auch auf die Latenz der Verbindungen) werden wir heute die wichtigsten Funktionen erklären, wie Sie es einfach installieren und konfigurieren können.

Wireguard-14

WireGuard VPN-Funktionen

WireGuard-VPN ist eine Software zu ein virtuelles privates Netzwerk (VPN) erstellen äußerst einfach zu konfigurieren , sehr schnell (schneller als IPsec und OpenVPN) und das nutzt die Standardmäßig modernste Kryptographie , ohne zwischen verschiedenen symmetrischen Verschlüsselungsalgorithmen, asymmetrisch und Hashing, wählen zu müssen. Das Ziel von WireGuard VPN ist es, ein Standard zu werden und von mehr Privatanwendern und Unternehmen verwendet zu werden, anstatt IPsec oder das beliebte OpenVPN zu verwenden, das schwieriger zu konfigurieren und langsamer ist. Diese Software wurde für alle Benutzergruppen entwickelt, sowohl für Privatanwender als auch für Supercomputer.

Mit WireGuard VPN Es ist nicht erforderlich, die Verbindungen zu verwalten Machen Sie sich Sorgen über den Zustand des virtuellen privaten Netzwerks selbst, verwalten Sie Prozesse oder wissen Sie, was sich unter der Software befindet, damit dies funktioniert, genau wie bei IPSec, wo es häufig erforderlich ist, Protokolle zu betrachten und zu untersuchen, was geschieht. Eine weitere Stärke ist, dass die Konfiguration extrem einfach, aber sehr leistungsfähig ist.

Dieser Software ist ein L3 VPN , das ist es Verwendet nur Tunneling , es kommt nicht als OpenVPN vor, bei dem wir die Möglichkeit haben, im Transportmodus oder im Tunnelmodus zu arbeiten. In diesem Fall verwenden wir immer den Tunnel-Modus, außerdem ist er mit beiden kompatibel IPv4-Netzwerke und IPv6-Netzwerke Darüber hinaus können IPv4-Pakete in IPv6 und umgekehrt gekapselt werden. Das von WireGuard verwendete Transportschichtprotokoll ist UDP Also müssen wir in unserem Router, der NAT ausführt, einen bestimmten Port öffnen (zur Auswahl kann dieser geändert werden).

Betriebssystem-Kompatibilität

Diese neue VPN-Software wurde erstmals für die Linux Kernel, aber es ist Cross-Plattform- , da es kompatibel ist mit Windows, Linux, MacOS, FreeBSD, Android und iOS Betriebssysteme . Eine der Stärken dieser Software besteht darin, dass die Client- und Serverkonfiguration unter verschiedenen Betriebssystemen und mit derselben Syntax genau gleich ist, sodass Sie den Server und die Clients unter Linux konfigurieren und die Konfiguration dann an andere Geräte mit "übergeben" können andere Betriebssysteme im Inneren.

Kryptographie verwendet

Bei den Protokollen IPsec und OpenVPN müssen sich sowohl die Clients als auch der Server auf die zu verwendenden kryptografischen Protokolle einigen, sowohl in Phase 1 und Phase 2 (von IPsec) als auch im Steuerungs- und Datenkanal (von OpenVPN) ), sonst wird die Verbindung nicht korrekt hergestellt. WireGuard bietet ein komplettes kryptografisches "Paket" So stellen Sie die Konnektivität sicher, ohne etwas auswählen zu müssen. Wenn eines der von diesem VPN verwendeten kryptografischen Protokolle als unsicher eingestuft wird, ist es so einfach wie das Starten einer zweiten Version von WireGuard mit einem neuen Protokoll, das keine Sicherheitslücke aufweist, und zwischen den Clients und dem Server haben angegeben, dass Sie "Version 2" verwenden, da dies für uns völlig transparent ist.

Ein weiteres sehr wichtiges Detail ist, dass dieses VPN verwendet ein sehr kleiner Quellcode . Im Vergleich zu StrongSwan oder OpenVPN gibt es nur sehr wenige Codezeilen, sodass Audits in sehr kurzer Zeit durchgeführt werden können und es auch einfacher ist, mögliche Schwachstellen oder Sicherheitslücken zu finden. Mit weniger Codezeilen ist auch die Oberfläche eines möglichen Angriffs auf die VPN-Programmierung kleiner.

WireGuard VPN wird derzeit verwendet ChaCha20 für symmetrische Verschlüsselung, authentifiziert mit Poly1305 unter Verwendung eines AEAD-Konstrukts. Es nutzt auch Curve25519 für ECDH, BLAKE2 für haschen, SIPHash24 für Hash-Tabelle Schlüssel und HKDF Für die Schlüsselableitung verwenden wir die modernsten kryptografischen Algorithmen, um maximale Sicherheit und Leistung zu gewährleisten.

Unterstützung für Roaming und Kill Switch

Diese Software soll in der Lage sein leicht und schnell durchstreifen Wenn unser Gerät das Netzwerk wechselt und die öffentliche IP-Adresse logisch ändert, z. B. wenn wir vom Wi-Fi-Netzwerk und dem 4G / LTE-Netzwerk unseres Betreibers abgehen, bleibt die VPN-Verbindung bestehen, da sie sich schnell wieder beim VPN authentifiziert Server, so dass wir immer mit dem VPN verbunden sind.

Wir können auch Aktivieren Sie den Kill-Switch am Gerät Wenn die VPN-Verbindung unterbrochen wird, ist auf diese Weise auch die Software selbst dafür verantwortlich, den gesamten Netzwerkverkehr zu unterbrechen, bis die VPN-Verbindung wiederhergestellt ist, damit wir nicht ohne den Schutz navigieren, den uns dieses VPN gewährt.

WireGuard VPN Installation

Die Installation dieser Software ist wirklich einfach, wir müssen nur Besuchen Sie die offizielle Website von WireGuard und laden Sie die ausführbare Datei für Windows- oder MacOS-Betriebssysteme herunter. Wenn Sie ein Linux-basiertes Betriebssystem mit den entsprechenden Repositorys verwenden, müssen Sie wahrscheinlich die spezifischen WireGuard-Repositorys hinzufügen, da es sich derzeit nicht standardmäßig im Zweig „stable“ befindet.

Zum Beispiel haben wir den VPN-Server in einer neuesten Debian-Version installiert. Um ihn zu installieren, haben wir die auf der offiziellen Website angegebenen Schritte befolgt. Superuser-Berechtigungen sind erforderlich, um die Installation korrekt durchzuführen.

 sudo echo "deb http://deb.debian.org/debian/ unstable main"> /etc/apt/sources.list.d/unstable.list sudo printf 'Paket: * / nPin: release a = unstable / nPin- Priorität: 90 / n '> /etc/apt/preferences.d/limit-unstable sudo apt update sudo apt install wireguard

Wir dürfen nicht vergessen, dass dieses VPN auch mit Betriebssystemen wie FreeBSD, OpenBSD und sogar mit OpenWRT für Router kompatibel ist, da es einfach über "opkg" installiert wird, da normalerweise alle zusätzliche Software installiert wird.

Wenn Sie den VPN-Client mit Android oder iOS auf Ihrem Smartphone installieren möchten, verfügen wir derzeit über die offiziellen Anwendungen, sodass Sie ihn problemlos von installieren können Google Play und App Store beziehungsweise:

WireGuard-Konfiguration: öffentliche, private Schlüssel und Konfigurationsdateien

Nachdem wir WireGuard ordnungsgemäß installiert haben, müssen Sie es sowohl auf dem Computer, der als Server fungiert, als auch auf allen Clients, mit denen wir eine Verbindung herstellen möchten, konfigurieren. Als Erstes müssen wir das öffentlich-private Schlüsselpaar sowohl auf dem Server als auch auf allen Clients erstellen, mit denen wir eine Verbindung herstellen möchten. Wir haben ein Debian-Betriebssystem verwendet, um die Schlüssel zu generieren und um den Server zu konfigurieren. Wir könnten dies jedoch auch direkt in der Windows-Software tun.

Die Route zum Ausführen des WireGuard-Servers unter Debian lautet / etc / wireguard /, daher gehen wir mit dem folgenden Befehl zu dieser Route:

cd /etc/wireguard/

Generierung von öffentlichen und privaten Schlüsseln für den Server

Um das öffentliche und das private Schlüsselpaar direkt an diesem Speicherort zu generieren, müssen Sie einfach Folgendes eingeben:

wg genkey | tee claveprivadaservidor | wg pubkey > clavepublicaservidor

Jetzt haben wir zwei Dateien, eine mit dem öffentlichen Schlüssel und eine mit dem privaten:

  • Privater Schlüssel: 6JcquylvtJsHNCdWrYMj28XsLIFJUVjlr2y5o27rO2c =
  • Öffentlicher Schlüssel: xeTkJjjBUyp8paxTgajwDa + qWjrD2RpXlJRSHMwcGDQ =

Diese Schlüssel werden wir für den WireGuard VPN «Server» verwenden.

Generierung auch öffentlich-privater Schlüssel für einen Client

Um ein weiteres Paar öffentlicher und privater Schlüssel zu generieren, die wir in einem Client verwenden, können wir sie in einem neuen Ordner oder am selben Speicherort, jedoch mit einem anderen Namen, erstellen.

wg genkey | tee claveprivadacliente1 | wg pubkey > clavepublicacliente1

Jetzt haben wir zwei Dateien, eine mit dem öffentlichen Schlüssel und eine mit dem privaten:

  • Privater Schlüssel: yPMpP2raY4FoCEJkmzQMlxzm / 6RBIW9HkjY6pVFIOnI =
  • Öffentlicher Schlüssel: 6c12jLkKzgU9len1kQ / 6Fc61xm + LL98TPPlLsri8klE =

Diese Schlüssel werden für einen WireGuard VPN-Client verwendet.

Serverkonfigurationsdatei

Die Konfiguration des WireGuard-Servers ist im Vergleich zu IPsec- oder OpenVPN-Servern recht einfach. Wir müssen jedoch einige Dinge berücksichtigen, die wir nachfolgend erläutern.

Im Server müssen wir eine haben ” Schnittstelle In diesem Abschnitt können wir die private IP-Adresse Dies identifiziert den Server, wenn die Clients eine Verbindung herstellen. Wir müssen uns daran erinnern, dass dieses VPN L3 ist, damit wir jede private IP-Adresse angeben können, die zu einem bestimmten Zeitpunkt nicht verwendet wird. In OpenVPN ist das Standard-Subnetz beispielsweise 10.8.0.0/24. Hier können Sie auch dasselbe oder ein anderes Subnetz 192.168.2.0/24 einfügen (und 192.168.2.1 ist der Server selbst und die anderen IPs, die die Clients sind). . Mit der Syntax von « Adresse »Wir werden das VPN-Subnetz setzen, das wir wollen.

Im " PrivateKey »Wir müssen den privaten Schlüssel eingeben, den wir zuvor für den Server generiert haben. Im " Listenport »Wir werden den UDP-Port setzen, den wir für den Server verwenden wollen. Diesen Port müssen wir später in NAT« öffnen », wenn wir uns hinter einem Router mit NAT befinden.

Schließlich können wir in diesem Abschnitt von «Interface» auch Befehle definieren, die ausgeführt werden sollen, nachdem die virtuelle Schnittstelle mit «PostUp» angehoben und die virtuelle Schnittstelle mit «PostDown» ausgelöst wurde. Wie Sie sehen, haben wir es derzeit kommentiert, da wir NAT nicht gegen diese Schnittstelle ausführen möchten, aber es könnte perfekt durchgeführt werden.

Im Bereich " Peer Hier müssen wir die Liste der Clients einfügen, die wir verbinden dürfen. In diesem Fall verbinden wir nur einen «Peer», also definieren wir Ihren öffentlichen Schlüssel mit « Öffentlicher Schlüssel »Die wir zuvor erstellt haben (oder die der Kunde uns zur Verfügung gestellt hat, da es möglich ist, dass sie von ihm erstellt wurden), und außerdem können wir angeben, ob wir dem Kunden mit einer bestimmten IP-Adresse erlauben, eine Verbindung herzustellen. Mit dem " Zulässige IPs »Direktive Wir können die Quell-IP-Adressen filtern. Wenn wir 0.0.0.0/0 setzen, bedeutet das, dass wir jede IP-Adresse zulassen.

[Schnittstelle] Adresse = 192.168.2.1/24
PrivateKey = 6JcquylvtJsHNCdWrYMj28XsLIFJUVjlr2y5o27rO2c =
ListenPort = 51820

#PostUp = iptables -A FORWARD -i% i -j ACCEPT; iptables -A FORWARD -o% i -j ACCEPT; iptables -t nat -A POSTROUTING -o ens33 -j MASKERADE
#PostDown = iptables -D FORWARD -i% i -j ACCEPT; iptables -D FORWARD -o% i -j ACCEPT; iptables -t nat -D POSTROUTING -o ens33 -j MASKERADE

[Peer] PublicKey = 6c12jLkKzgU9len1kQ / 6Fc61xm + LL98TPPlLsri8klE =
Zulässige IPs = 0.0.0.0/0

Wenn wir weitere "Peers" hinzufügen möchten, definieren Sie diese einfach einzeln in der Konfigurationsdatei wie folgt:

[Schnittstelle] Adresse = 192.168.2.1/24
PrivateKey = 6JcquylvtJsHNCdWrYMj28XsLIFJUVjlr2y5o27rO2c =
ListenPort = 51820

#PostUp = iptables -A FORWARD -i% i -j ACCEPT; iptables -A FORWARD -o% i -j ACCEPT; iptables -t nat -A POSTROUTING -o ens33 -j MASKERADE
#PostDown = iptables -D FORWARD -i% i -j ACCEPT; iptables -D FORWARD -o% i -j ACCEPT; iptables -t nat -D POSTROUTING -o ens33 -j MASKERADE

[Peer] PublicKey = 6c12jLkKzgU9len1kQ / 6Fc61xm + LL98TPPlLsri8klE =
Zulässige IPs = 0.0.0.0/0

[Peer] PublicKey = öffentlicher Client-Schlüssel 2
Zulässige IPs = 0.0.0.0/0

[Peer] PublicKey = öffentlicher Kundenschlüssel 3
Zulässige IPs = 0.0.0.0/0

[/code]

Die Konfigurationsdatei kann als «wg0.conf» bezeichnet werden, da WireGuard virtuelle Schnittstellen mit diesem Namen erstellt, ideal, um sie perfekt zu unterscheiden. Um diese Konfigurationsdatei auszuführen, führen Sie einfach Folgendes aus:

root@debian-vm:/etc/wireguard# wg-quick up wg0

Wenn Sie es starten, ist WireGuard dafür verantwortlich, die virtuelle Schnittstelle zu erstellen, die IP-Adresse und die MTU einzugeben und sogar die entsprechenden Routen in der Routing-Tabelle zu erstellen:

root@debian-vm:/etc/wireguard# wg-quick up wg0
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 192.168.2.1 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] wg set wg0 fwmark 51820
[#] ip -4 route add 0.0.0.0/0 dev wg0 table 51820
[#] ip -4 rule add not fwmark 51820 table 51820
[#] ip -4 rule add table main suppress_prefixlength 0
[#] sysctl -q net.ipv4.conf.all.src_valid_mark=1
[#] iptables-restore -n

Konfigurationsdatei für Clients

Die Konfiguration des WireGuard-Clients ist im Vergleich zu IPsec- oder OpenVPN-Servern recht einfach. Wir müssen jedoch einige Dinge berücksichtigen, die wir nachfolgend erläutern.

Im Client müssen wir eine haben ” Schnittstelle In diesem Abschnitt können wir die private IP-Adresse Das identifiziert den Client, wenn wir eine Verbindung herstellen. Wir müssen uns daran erinnern, dass dieses VPN L3 ist, damit wir jede private IP-Adresse angeben können, die zu einem bestimmten Zeitpunkt nicht verwendet wird. In OpenVPN ist das Standard-Subnetz beispielsweise 10.8.0.0/24. Hier können Sie auch dasselbe oder ein anderes Subnetz 192.168.2.0/24 (und 192.168.2.1 ist der Server selbst und die Adresse 192.168.2.2 von nun an) einfügen Sei der Kunde mit der Syntax von Adresse "Wir werden das VPN-Subnetz setzen, das wir wollen.

Im " PrivateKey »Wir müssen den privaten schlüssel eingeben, den wir zuvor für den client generiert haben.

Im Bereich " Peer "Hier müssen wir den öffentlichen Schlüssel ablegen" Öffentlicher Schlüssel ”Des WireGuard-Servers, zu dem wir eine Verbindung herstellen werden, dh dieser öffentliche Schlüssel musste uns vom Server bereitgestellt werden. Bei dieser Gelegenheit können wir auch die “ Zulässige IPs Diesmal können wir jedoch festlegen, ob wir das VPN nur zu einem bestimmten Subnetz (oder mehreren Subnetzen) durchlaufen oder den gesamten Internetverkehr über das virtuelle private Netzwerk weiterleiten möchten. Wenn wir die Subnetze durch Kommas trennen, können wir auf mehrere auf dem Server vorhandene zugreifen. Wenn wir den gesamten Datenverkehr weiterleiten möchten, geben wir einfach 0.0.0.0/0 ein, wie dies bei IPsec der Fall ist.

Schließlich mit der « Endpunkt »In der Anweisung definieren wir die öffentliche IP-Adresse des Servers, auf dem WireGuard VPN ausgeführt wird, gefolgt von zwei Punkten (:) des verwendeten UDP-Ports. Wir müssen uns daran erinnern, dass WireGuard UDP verwendet, daher sollten wir es nicht nach Firewalls filtern.

Die Software und die Kommunikation mit WireGuard versuchen, so unbemerkt wie möglich zu bleiben, wenn sie nicht verwendet wird. Das heißt, sie sendet keine Daten kontinuierlich über das VPN, um den Tunnel aktiv zu halten. Dies ist ideal, um Batterie- und mobile Daten auf Smartphones zu speichern. In den meisten üblichen Konfigurationen funktioniert dies perfekt, aber wenn wir hinter einem NAT stehen oder Firewallist es möglich, dass die Kommunikation unterbrochen wird, weil keine Daten übertragen werden. Daher muss ein "Keep Alive" konfiguriert werden. Um das Keep Alive zu konfigurieren, geben Sie einfach die Anweisung "PersistentKeepAlive" an und geben Sie eine Ganzzahl ein, die die Sekunden des Keep Alive angibt. Laut offizieller Dokumentation ist die Einstellung von 25 Sekunden für die meisten Firewalls und NAT-Systeme ausreichend. Wenn Sie 0 setzen, wird diese Funktion deaktiviert. Wenn wir uns hinter NAT oder einer Firewall befinden und nach einer langen Zeit ohne Datenverkehr eingehende Verbindungen empfangen möchten, ist diese Anweisung erforderlich, andernfalls setzen wir sie möglicherweise nicht um.

[Schnittstelle] PrivateKey = yPMpP2raY4FoCEJkmzQMlxzm / 6RBIW9HkjY6pVFIOnI =
Adresse = 192.168.2.2/32

[Peer] PublicKey = xeTkJjjBUyp8paxTgajwDa + qWjrD2RpXlJRSHMwcGDQ =
Zulässige IPs = 0.0.0.0/0
Endpunkt = 10.10.2.86:51820

#PersistentKeepalive = 25

Unter Windows-Betriebssystemen können wir dieselbe Konfiguration importieren und haben sie bereit, um eine Verbindung herzustellen, obwohl wir einen Client von Grund auf neu verbinden können, aber wir müssen den generierten öffentlichen Schlüssel an den WireGuard-Server „übergeben“.

Es ist auch sehr wichtig, die WireGuard-Protokolle zu überprüfen, um sicherzustellen, dass die VPN-Verbindung korrekt hergestellt wurde. Wir können im Bereich "Schnittstelle / Adresse" keine private IP-Adresse eingeben, die bereits in Windows-Clients verwendet wird, da die Verbindung fehlerhaft ist.

Wie Sie gesehen haben, ist die Konfiguration des WireGuard VPN sehr einfach und schnell

WireGuard VPN-Leistung im Vergleich zu L2TP / IPsec und OpenVPN

In RedesZone haben wir die Leistung von WireGuard VPN im Vergleich zu L2TP / IPsec und OpenVPN überprüft. Die Tests wurden im lokalen Netzwerk durchgeführt, um Probleme mit dem Betreiber zu vermeiden. So können wir die tatsächliche maximale Leistung messen, die uns zur Verfügung stellen kann Hardware-spezifisch.

Die von uns verwendete VPN-Serverkonfiguration (für L2TP / IPsec, OpenVPN und WireGuard) lautet wie folgt:

  • QNAP TS-1277: AMD Ryzen 7 2700 Prozessor; RAM-Speicher: 64 GB RAM DDR4; Netzwerkverbindung: QNAP QXG-10G2T-107 mit 10 Gbit / s und Cat7-Verkabelung und a D-Link DXS-1210-10TS-Schalter .
  • Die VPN-Software für L2TP / IPsec und OpenVPN (unter Verwendung von UDP) ist QVPN 2 von QNAP
  • In einem zweiten Test mit OpenVPN (unter Verwendung von UDP) und AES-256-GCM haben wir Virtualization Station mit Debian verwendet.
  • iperf3 wurde manuell in QTS und auch in virtualisiertem Debian installiert.

Die von uns verwendete VPN-Client-Konfiguration (für L2TP / IPsec, OpenVPN und WireGuard) lautet wie folgt:

  • PC mit AMD Ryzen 7 3800x Prozessor; RAM-Speicher: 32 GB RAM DDR4 3200 MHz; Netzwerkverbindung: Asus XG-C100C bei 10 Gbit / s mit CAT7-Verkabelung und a D-Link DXS-1210-10TS-Schalter für die Verbindung von beiden Low-Level-Lichtlaser . In den Tests verwendetes Betriebssystem: Windows 10 1909.
  • Windows 10 L2TP / IPsec-Client
  • Neueste Version von OpenVPN (2.4.8)
  • iperf 3 unter Windows 10.

Die Leistung, die in den Tests erhalten wurde, ist wie folgt:

Wie Sie sehen, ist die tatsächliche Geschwindigkeit von WireGuard doppelt so hoch wie die von L2TP / IPsec oder OpenVPN. Wir können also sagen, dass dieses VPN sehr schnell ist.

Wir hoffen, dass dieses Setup-Tutorial Ihnen dabei hilft und Sie WireGuard-Server und -Clients auf einfache Weise bereitstellen können, um von überall aus eine sichere Verbindung zu uns nach Hause, ins Geschäft oder ins Internet herzustellen.