VPN WireGuard wurde in den Hauptbestand von OpenBSD aufgenommen

Jason A. Donenfeld, Autor von VPN WireGuard, gab bekannt o Aufnahme in den Hauptbestandteil des OpenBSD-Kerneltreibers „wg“ für das WireGuard-Protokoll, Implementierung. einer spezifischen Netzwerkschnittstelle und Änderungen Werkzeugen, die im Benutzermodus arbeiten. OpenBSD ist das zweite Betriebssystem nach Linux mit vollständiger und integrierter Unterstützung für WireGuard. Die Einbindung von WireGuard wird für die OpenBSD-Version 6.8 erwartet.

Die Patches umfassen den Treiber für den OpenBSD-Kernel, Änderungen an den Tools ifconfig und tcpdump mit Unterstützung für die Funktionalität von WireGuard, Dokumentation und kleine Änderungen zur Integration von WireGuard in das restliche System. Der Treiber verwendet eine eigene Implementierung der Algorithmen blake2s, hchacha20 und curve25519, sowie die bereits im OpenBSD-Kernel vorhandene Implementierung von SipHash.

Die Implementierung ist mit allen offiziellen WireGuard-Clients für Linux, Windows, macOS, *BSD, iOS und Android kompatibel. Leistungstests auf dem Laptop des Entwicklers (Lenovo x230) zeigten eine Durchsatzrate von 750 mbit/s. Zum Vergleich bietet isakmpd mit den Standardkonfigurationen von ike psk einen Durchsatz von 380 mbit/s.

Bei der Entwicklung des Treibers für den OpenBSD-Kernel wurden einige architektonische Entscheidungen getroffen, die mit dem Treiber für Linux vergleichbar sind, aber der Treiber wurde in erster Linie für OpenBSD entwickelt, unter Berücksichtigung der Besonderheiten dieses Systems und unter Berücksichtigung der Erfahrungen, die bei der Erstellung des Treibers für Linux gesammelt wurden. Mit Zustimmung des ursprünglichen Autors von WireGuard wird der Code des neuen Treibers vollständig unter der freien ISC-Lizenz veröffentlicht.

Der Treiber ist eng in den Netzwerk-Stack von OpenBSD integriert und nutzt bestehende Subsysteme, was es ermöglicht hat, den Code sehr kompakt zu halten (etwa 3000 Zeilen Code). Zu den Unterschieden zählt auch eine andere, als für Linux, Trennung der Treiberkomponenten: spezifische für OpenBSD Schnittstellen wurden in die Dateien „if_wg.*“ verschoben, der Code zum Schutz vor DoS in „wg_cookie.*“, und die Logik zur Aushandlung von Verbindungen und Verschlüsselung in „wg_noise.*“.

Quelle: opennet.ru

60GB SSD 8Gb DDR4