FreeBSD 13.2-Version mit Netlink- und WireGuard-Unterstützung

Nach 11 Monaten Entwicklungszeit wurde FreeBSD 13.2 veröffentlicht. Installationsbilder werden für die Architekturen amd64, i386, powerpc, powerpc64, powerpc64le, powerpcspe, armv6, armv7, aarch64 und riscv64 generiert. Darüber hinaus wurden Baugruppen für Virtualisierungssysteme (QCOW2, VHD, VMDK, Raw) und Cloud-Umgebungen Amazon EC2, Google Compute Engine und Vagrant vorbereitet.

Wichtige Änderungen:

  • Die Möglichkeit, Snapshots von UFS- und FFS-Dateisystemen mit aktivierter Protokollierung (Soft-Updates) zu erstellen, wurde implementiert. Außerdem wurde Unterstützung für das Hintergrundspeichern von Dumps (Ausführen eines Dumps mit dem „-L“-Flag) mit den Inhalten gemounteter UFS-Dateisysteme hinzugefügt, wenn Journaling aktiviert ist. Eine der Funktionen, die bei Verwendung der Protokollierung nicht verfügbar ist, ist die Hintergrundausführung von Integritätsprüfungen mithilfe des Dienstprogramms fsck.
  • Zur Grundausstattung gehört ein wg-Treiber auf Kernel-Ebene mit der Implementierung einer Netzwerkschnittstelle für VPN WireGuard. Um die vom Treiber benötigten kryptografischen Algorithmen zu verwenden, wurde die API des FreeBSD-Kernel-Krypto-Subsystems erweitert und um einen Kabelbaum erweitert, der die Verwendung von Algorithmen aus der libsodium-Bibliothek ermöglicht, die in FreeBSD nicht über die Standard-Krypto-API unterstützt werden . Während des Entwicklungsprozesses wurde auch eine Optimierung durchgeführt, um die Bindung von Paketverschlüsselungs- und -entschlüsselungsaufgaben gleichmäßig an CPU-Kerne zu verteilen, was den Overhead bei der Verarbeitung von WireGuard-Paketen reduzierte.

    Der letzte Versuch, WireGuard in FreeBSD einzubinden, erfolgte im Jahr 2020, endete jedoch in einem Skandal, in dessen Folge der bereits hinzugefügte Code aufgrund geringer Qualität, nachlässiger Arbeit mit Puffern, der Verwendung von Stubs statt Prüfungen und unvollständiger Implementierung entfernt wurde des Protokolls und Verletzung der GPL-Lizenz. Die neue Implementierung wurde gemeinsam von den Kernentwicklungsteams von FreeBSD und WireGuard vorbereitet, mit Beiträgen von Jason A. Donenfeld, Autor von VPN WireGuard, und John H. Baldwin, einem renommierten FreeBSD-Entwickler. Vor der Annahme des neuen Codes wurde mit Unterstützung der FreeBSD Foundation eine vollständige Überprüfung der Änderungen durchgeführt.

  • Unterstützung für das Netlink-Kommunikationsprotokoll (RFC 3549), das in Linux verwendet wird, um die Interaktion des Kernels mit Prozessen im Benutzerbereich zu organisieren, wurde implementiert. Das Projekt beschränkt sich auf die Unterstützung der NETLINK_ROUTE-Operationsfamilie zur Verwaltung des Status des Netzwerksubsystems im Kernel, wodurch FreeBSD das Linux-IP-Dienstprogramm aus dem iproute2-Paket verwenden kann, um Netzwerkschnittstellen zu verwalten, IP-Adressen festzulegen, Routing zu konfigurieren und NextHop zu manipulieren Objekte, die Zustandsdaten speichern, die zum Übertragen des Pakets an das gewünschte Ziel verwendet werden.
  • Für alle ausführbaren Basissystemdateien auf 64-Bit-Plattformen ist die Adressraum-Layout-Randomisierung (ASLR) standardmäßig aktiviert. Um ASLR selektiv zu deaktivieren, können Sie die Befehle „proccontrol -m aslr -s deaktivieren“ oder „elfctl -e +noaslr“ verwenden.
  • In ipfw werden Basistabellen zum Nachschlagen von MAC-Adressen verwendet, sodass Sie Tabellen mit MAC-Adressen erstellen und diese zum Filtern des Datenverkehrs verwenden können. Zum Beispiel: ipfw table 1 create type mac ipfw table 1 add 11:22:33:44:55:66/48 ipfw add skipto tablearg src-mac 'table(1)' ipfw add deny src-mac 'table(1, 100 )' ipfw add deny lookup dst-mac 1
  • Die Kernel-Module dpdk_lpm4 und dpdk_lpm6 wurden hinzugefügt und stehen mit der Implementierung des DIR-24-8-Routensuchalgorithmus für IPv4/IPv6 zum Laden über loader.conf zur Verfügung, wodurch Sie Routing-Funktionen für Hosts mit sehr großen Routing-Tabellen optimieren können ( in Tests wurde eine Geschwindigkeitssteigerung von 25 % beobachtet. Zum Konfigurieren von Modulen kann das Standardroutendienstprogramm verwendet werden (die Option FIB_ALGO wurde hinzugefügt).
  • Die Implementierung des ZFS-Dateisystems wurde auf die Version OpenZFS 2.1.9 aktualisiert. Das Startskript zfskeys ermöglicht das automatische Laden von Schlüsseln, die im ZFS-Dateisystem gespeichert sind. Neues RC-Skript zpoolreguid hinzugefügt, um einem oder mehreren Zpools eine GUID zuzuweisen (z. B. nützlich für Umgebungen mit gemeinsam genutzter Datenvirtualisierung).
  • Der Bhyve-Hypervisor und das VMM-Modul unterstützen die Anbindung von mehr als 15 virtuellen CPUs an das Gastsystem (reguliert über sysctl hw.vmm.maxcpu). Das bhyve-Dienstprogramm implementiert die Emulation des virtio-input-Geräts, mit dem Sie Tastatur- und Mauseingabeereignisse im Gastsystem ersetzen können.
  • In KTLS, einer Implementierung des TLS-Protokolls, das auf der FreeBSD-Kernel-Ebene läuft, wurde Unterstützung für die Hardwarebeschleunigung von TLS 1.3 hinzugefügt, indem einige Vorgänge im Zusammenhang mit der Verarbeitung verschlüsselter eingehender Pakete auf die Netzwerkkarte verlagert werden. Zuvor war eine ähnliche Funktion für TLS 1.1 und TLS 1.2 verfügbar.
  • Im Startskript „growfs“ ist es beim Erweitern des Root-Dateisystems möglich, eine Swap-Partition hinzuzufügen, wenn eine solche Partition ursprünglich fehlte (z. B. nützlich bei der Installation eines vorgefertigten Systemabbilds auf einer SD-Karte). Um die Swap-Größe zu steuern, wurde der rc.conf ein neuer Parameter „growfs_swap_size“ hinzugefügt.
  • Das hostid-Startskript stellt sicher, dass eine zufällige UUID generiert wird, wenn die Datei /etc/hostid fehlt und die UUID nicht von der Hardware abgerufen werden kann. Außerdem wurde eine Datei /etc/machine-id mit einer kompakten Darstellung der Host-ID (ohne Bindestriche) hinzugefügt.
  • Die Variablen defaultrouter_fibN und ipv6_defaultrouter_fibN wurden zu rc.conf hinzugefügt, über die Sie Standardrouten zu anderen FIB-Tabellen als der primären hinzufügen können.
  • Der libmd-Bibliothek wurde Unterstützung für SHA-512/224-Hashes hinzugefügt.
  • Die pthread-Bibliothek bietet Unterstützung für die Semantik von Funktionen, die in Linux verwendet werden.
  • Unterstützung für die Dekodierung von Linux-Systemaufrufen zu kdump hinzugefügt. Unterstützung für Systemaufrufverfolgung im Linux-Stil für kdump und sysdecode hinzugefügt.
  • Das Dienstprogramm killall hat jetzt die Möglichkeit, ein Signal an Prozesse zu senden, die an ein bestimmtes Terminal gebunden sind (z. B. „killall -t pts/1“).
  • Das Dienstprogramm nproc wurde hinzugefügt, um die Anzahl der für den aktuellen Prozess verfügbaren Rechenblöcke anzuzeigen.
  • Dem Dienstprogramm pciconf wurde Unterstützung für die Dekodierung von ACS-Parametern (Access Control Services) hinzugefügt.
  • Dem Kernel wurde die Einstellung SPLIT_KERNEL_DEBUG hinzugefügt, mit der Sie Debugging-Informationen für den Kernel und die Kernelmodule in separaten Dateien speichern können.
  • Die Linux-ABI ist mit der Unterstützung des vDSO-Mechanismus (Virtual Dynamic Shared Objects) fast vollständig, der eine begrenzte Anzahl von Systemaufrufen im Benutzerbereich ohne Kontextwechsel bereitstellt. Die Linux-ABI auf ARM64-Systemen wurde mit der Implementierung für die AMD64-Architektur gleichgesetzt.
  • Verbesserte Hardwareunterstützung. Unterstützung für Leistungsüberwachung (hwpmc) für Intel Alder Lake-CPUs hinzugefügt. Der iwlwifi-Treiber für Intel-Wireless-Karten wurde mit Unterstützung für neue Chips und den 802.11ac-Standard aktualisiert. RTW88-Treiber für Realtek-Wireless-Karten mit PCI-Schnittstelle hinzugefügt. Die Funktionen der Linuxkpi-Schicht wurden für die Verwendung mit Linux-Treibern in FreeBSD erweitert.
  • Die OpenSSL-Bibliothek wurde auf Version 1.1.1t aktualisiert, LLVM/Сlang auf Version 14.0.5 und der SSH-Server und -Client wurden auf OpenSSH 9.2p1 aktualisiert (die vorherige Version verwendete OpenSSH 8.8p1). Ebenfalls aktualisiert wurden die Versionen BC 6.2.4, Expat 2.5.0, File 5.43, Less 608, Libarchive 3.6.2, Sendmail 8.17.1, SQLite 3.40.1, Unbound 1.17.1 und Zlib 1.2.13.

Darüber hinaus wurde angekündigt, dass ab dem FreeBSD 14.0-Zweig Einmalpasswörter OPIE, CE- und CP-Treiber, Treiber für ISA-Karten, Mergemaster- und Minigzip-Dienstprogramme, ATM-Komponenten in Netgraph (NgATM), der Telnetd-Hintergrundprozess und die VINUM-Klasse in Geom.

Source: opennet.ru

Kommentar hinzufügen