
Die Zeit ist gekommen, in der VPNs nicht mehr als exotisches Werkzeug für bärtige Systemadministratoren gelten. Die Anforderungen der Benutzer sind unterschiedlich, aber eines steht fest: VPNs werden für alle benötigt.
Das Problem aktueller VPN-Lösungen ist, dass sie schwer richtig zu konfigurieren, teuer im Unterhalt sind und außerdem voller veralteter, fragwürdiger Codes stecken.
Vor einigen Jahren beschloss der kanadische Informationssicherheitsspezialist Jason A. Donenfeld, dass es genug sei, und begann mit der Arbeit an . Derzeit wird WireGuard auf die Aufnahme in den Linux-Kernel vorbereitet und hat sogar Lob von und in .
Einfach zu bedienen.
- Verwendet moderne Kryptographie: Noise-Protokoll-Framework, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF etc.
- Kompetter, lesbarer Code, leichter auf Sicherheitsanfälligkeiten zu untersuchen.
- Eine klare und durchdachte
- Hohe Leistung.
- Eine klare und durchdachte .
Ist die Silberne Kugel gefunden? Ist es an der Zeit, OpenVPN und IPSec zu begraben? Ich habe beschlossen, dem nachzugehen und gleichzeitig ein .
Arbeitsprinzipien
Die Arbeitsprinzipien lassen sich etwa so beschreiben:
- Es wird ein WireGuard-Interface erstellt, dem ein privater Schlüssel und eine IP-Adresse zugewiesen wird. Die Einstellungen anderer Peers werden geladen: ihre öffentlichen Schlüssel, IP-Adressen usw.
- Alle IP-Pakete, die am WireGuard-Interface ankommen, werden in UDP gekapselt und an andere Peers.
- Die Clients geben die öffentliche IP-Adresse des Servers in den Einstellungen an. Der Server erkennt automatisch die externen Adressen der Clients, wenn korrekte authentifizierte Daten von ihnen eintreffen.
- Der Server kann die öffentliche IP-Adresse ändern, ohne den Betrieb zu unterbrechen. Dabei sendet er eine Benachrichtigung an die verbundenen Clients, und diese aktualisieren ihre Konfigurationen im laufenden Betrieb.
- Es wird das Konzept des Routings verwendet . WireGuard empfängt und sendet Pakete basierend auf dem öffentlichen Schlüssel des Peers. Wenn der Server ein korrekt authentifiziertes Paket entschlüsselt, wird das src-Feld überprüft. Stimmt es mit der Konfiguration der
allowed-ipsdes authentifizierten Peers überein, wird das Paket vom WireGuard-Interface angenommen. Bei der Übermittlung eines ausgehenden Pakets erfolgt das entsprechende Verfahren: Das dst-Feld des Pakets wird genommen, und basierend darauf wird der entsprechende Peer ausgewählt, das Paket mit dem eigenen Schlüssel signiert, mit dem Schlüssel des Peers verschlüsselt und an den Remote-Endpunkt gesendet.
Die gesamte Hauptlogik von WireGuard umfasst weniger als 4000 Zeilen Code, während OpenVPN und IPSec Hunderttausende von Zeilen aufweisen. Um moderne Krypto-Algorithmen zu unterstützen, wird vorgeschlagen, eine neue kryptografische API in den Linux-Kernel aufzunehmen. Im Moment wird diskutiert, wie erfolgreich diese Idee ist.
Leistung
Der größte Leistungsvorteil (im Vergleich zu OpenVPN und IPSec) wird auf Linux-Systemen bemerkbar sein, da WireGuard dort als Kernel-Modul implementiert ist. Außerdem werden macOS, Android, iOS, FreeBSD und OpenBSD unterstützt, aber dort wird WireGuard im Userspace ausgeführt, mit entsprechenden Auswirkungen auf die Leistung. Eine Unterstützung für Windows wird in naher Zukunft versprochen.
Benchmarkergebnisse mit :

Meine Erfahrungen mit
Ich bin kein Experte für die Einrichtung von VPNs. Ich habe einmal OpenVPN manuell konfiguriert und es war sehr mühsam, und IPSec habe ich nicht einmal versucht. Es müssen zu viele Entscheidungen getroffen werden, und es ist sehr einfach, sich selbst ins Bein zu schießen. Daher habe ich immer auf fertige Skripte zur Serverkonfiguration zurückgegriffen.
Nun, WireGuard ist meiner Meinung nach insgesamt ideal für den Anwender. Alle Low-Level-Entscheidungen sind in der Spezifikation festgelegt, daher dauert der Prozess der Vorbereitung einer typischen VPN-Infrastruktur nur wenige Minuten. Es ist praktisch unmöglich, in der Konfiguration Fehler zu machen.
Installationsprozess auf der offiziellen Website, hier möchte ich besonders die hervorragende .
Die Verschlüsselungsschlüssel werden mit dem Tool generiert wg:
SERVER_PRIVKEY=$( wg genkey )
SERVER_PUBKEY=$( echo $SERVER_PRIVKEY | wg pubkey )
CLIENT_PRIVKEY=$( wg genkey )
CLIENT_PUBKEY=$( echo $CLIENT_PRIVKEY | wg pubkey )Dann muss die Serverkonfiguration erstellt werden /etc/wireguard/wg0.conf mit folgendem Inhalt:
[Interface]
Address = 10.9.0.1/24
PrivateKey = $SERVER_PRIVKEY
[Peer]
PublicKey = $CLIENT_PUBKEY
AllowedIPs = 10.9.0.2/32und der Tunnel mit dem Skript aktiviert werden wg-quick:
sudo wg-quick up /etc/wireguard/wg0.confIn Systemen mit systemd kann stattdessen verwendet werden sudo systemctl start wg-quick@wg0.service.
Auf dem Client-Rechner muss eine Konfiguration erstellt werden /etc/wireguard/wg0.conf:
[Interface]
PrivateKey = $CLIENT_PRIVKEY
Address = 10.9.0.2/24
[Peer]
PublicKey = $SERVER_PUBKEY
AllowedIPs = 0.0.0.0/0
Endpoint = 1.2.3.4:51820 # Externe IP des Servers
PersistentKeepalive = 25 Und genau so wird der Tunnel aktiviert:
sudo wg-quick up /etc/wireguard/wg0.confJetzt muss nur noch NAT auf dem Server eingerichtet werden, damit die Clients ins Internet gelangen können, und alles ist bereit!
Diese Einfachheit und die kompakte Codebasis wurden erreicht, indem auf die Verteilung von Schlüsseln verzichtet wurde. Es gibt kein kompliziertes Zertifikatsystem und all diesen Unternehmensschreck, kurze Verschlüsselungsschlüssel werden ähnlich wie SSH-Schlüssel verteilt. Dies führt jedoch zu einem Problem: WireGuard wird in einigen bestehenden Netzwerken nicht so einfach implementierbar sein.
Unter den Nachteilen ist zu erwähnen, dass WireGuard nicht über einen HTTP-Proxy funktioniert, da nur das UDP-Protokoll als Transport verwendet wird. Die Frage stellt sich, ob es möglich sein wird, das Protokoll zu obfuskieren? Natürlich ist das keine unmittelbare Aufgabe eines VPN, aber für OpenVPN gibt es beispielsweise Möglichkeiten, sich als HTTPS zu tarnen, was den Bewohnern von totalitären Ländern hilft, das Internet uneingeschränkt zu nutzen.
Das DBMS Tarantool ist ein attraktives, zukunftsträchtiges Produkt zur Erstellung von hochbelasteten Anwendungen.
Zusammenfassend lässt sich sagen, dass dies ein sehr interessantes und vielversprechendes Projekt ist, das man bereits jetzt auf eigenen Servern nutzen kann. Welcher Vorteil? Hohe Leistung auf Linux-Systemen, einfache Einrichtung und Wartung, kompakte und lesbare Codebasis. Es ist jedoch noch zu früh, um eine komplexe Infrastruktur auf WireGuard umzustellen, man sollte die Integration in den Linux-Kernel abwarten.
Um meine (und Ihre) Zeit zu sparen, habe ich einen . Mit dessen Hilfe kann man ohne Vorkenntnisse ein persönliches VPN für sich und seine Bekannten einrichten.
Quelle: habr.com
