FreeBSD 13.2-version med Netlink och WireGuard-stöd

Efter 11 månaders utveckling har FreeBSD 13.2 släppts. Installationsbilder genereras för arkitekturerna amd64, i386, powerpc, powerpc64, powerpc64le, powerpcspe, armv6, armv7, aarch64 och riscv64. Dessutom har builds förberetts för virtualiseringssystem (QCOW2, VHD, VMDK, raw) och Amazon EC2, Google Compute Engine och Vagrant molnmiljöer.

Viktiga ändringar:

  • Implementerade möjligheten att skapa ögonblicksbilder av UFS- och FFS-filsystem med loggning aktiverad (mjuka uppdateringar). Lade även till stöd för att spara dumpar i bakgrunden (kör dump med "-L"-flaggan) med innehållet i monterade UFS-filsystem med journalföring aktiverad. Av de funktioner som inte är tillgängliga när du använder journalföring finns det en bakgrundsintegritetskontroll med hjälp av verktyget fsck.
  • Wg-drivrutinen som arbetar på kärnnivå med implementeringen av nätverksgränssnittet för VPN WireGuard har antagits som huvuddelen. För att använda de kryptografiska algoritmerna som krävs av drivrutinen utökades FreeBSD-kärnans kryptosubsystem-API, till vilket en bindning lades till som tillåter användning av algoritmer från libsodium-biblioteket som inte stöds i FreeBSD genom standardkrypto-API:et. Under utvecklingsprocessen genomfördes också optimeringar för att jämnt balansera tilldelningen av krypterings- och dekrypteringsuppgifter till CPU-kärnor, vilket minskade omkostnaderna för bearbetning av WireGuard-paket.

    Det senaste försöket att inkludera WireGuard i FreeBSD gjordes 2020, men slutade i en skandal, som ett resultat av vilken redan tillagd kod togs bort på grund av låg kvalitet, slarvig bufferthantering, användning av stubbar istället för kontroller, ofullständig implementering av protokollet och brott mot GPL-licensen. En ny implementering, gemensamt förberedd av FreeBSD och WireGuards kärnutvecklingsteam, med input från Jason A. Donenfeld, författare till VPN WireGuard, och John H. Baldwin, välkänd FreeBSD-utvecklare. En fullständig granskning av ändringarna gjordes med stöd av FreeBSD Foundation innan den nya koden accepterades.

  • Implementerat stöd för kommunikationsprotokollet Netlink (RFC 3549), som används i Linux för att organisera interaktion mellan kärnan och processer i användarutrymmet. Projektet är begränsat till att stödja NETLINK_ROUTE-familjen av operationer för att hantera tillståndet för nätverksundersystemet i kärnan, vilket gör att FreeBSD kan använda ip Linux-verktyget från iproute2-paketet för att hantera nätverksgränssnitt, ställa in IP-adresser, konfigurera routing och manipulera nexthop-objekt som lagrar tillståndsdata som används för att vidarebefordra paketet till önskad destination.
  • Alla körbara bassystem på 64-bitars plattformar har Address Space Layout Randomization (ASLR) aktiverat som standard. För att selektivt inaktivera ASLR kan du använda kommandona "proccontrol -ma aslr -s disable" eller "elfctl -e +noaslr".
  • ipfw använder Radix-tabeller för att slå upp MAC-adresser, vilket gör att du kan skapa tabeller med MAC-adresser och använda dem för att filtrera trafik. Till exempel: ipfw tabell 1 skapa typ mac ipfw tabell 1 lägg till 11:22:33:44:55:66/48 ipfw lägg till skipto tablearg src-mac 'tabell(1)' ipfw lägg neka src-mac 'tabell(1, 100 )' ipfw add deny lookup dst-mac 1
  • Tillagda och tillgängliga för laddning via loader.conf är kärnmodulerna dpdk_lpm4 och dpdk_lpm6 med implementeringen av ruttsökningsalgoritmen DIR-24-8 för IPv4/IPv6, som låter dig optimera routingfunktioner för värdar med mycket stora routingtabeller (tester) visar en hastighetsökning på 25 %). Standardruttverktyget kan användas för att konfigurera moduler (alternativet FIB_ALGO har lagts till).
  • Implementeringen av ZFS-filsystemet har uppdaterats till utgåvan av OpenZFS 2.1.9. Startskriptet zfskeys ger automatisk laddning av nycklar lagrade i ZFS-filsystemet. Lade till ett nytt RC-skript zpoolreguid för att tilldela en GUID till en eller flera zpools (användbart för delade datavirtualiseringsmiljöer, till exempel).
  • Bhyve-hypervisorn och vmm-modulen stöder att ansluta fler än 15 virtuella CPU: er till gästsystemet (justerbar via sysctl hw.vmm.maxcpu). Verktyget bhyve implementerar en emulering av virtio-inmatningsenheten, med vilken du kan ersätta tangentbords- och musinmatningshändelser i gästsystemet.
  • KTLS, en implementering av TLS-protokollet som körs på FreeBSD-kärnnivån, lägger till stöd för TLS 1.3-hårdvaruacceleration genom att avlasta några av de operationer som är associerade med bearbetning av krypterade inkommande paket på nätverkskortets axlar. Tidigare var den här funktionen tillgänglig för TLS 1.1 och TLS 1.2.
  • I growfs startskript, när man expanderar rot-FS, säkerställs det att en swap-partition läggs till om en sådan partition inte fanns från början (det är till exempel användbart när man installerar en färdig systemavbildning på ett SD-kort). Ett nytt alternativ, growfs_swap_size, har lagts till i rc.conf för att styra bytesstorleken.
  • Hostid-startskriptet säkerställer att ett slumpmässigt UUID genereras om filen /etc/hostid saknas och UUID inte kan erhållas från hårdvaran. Också tillagd är filen /etc/machine-id med en kompakt representation av värd-id (inga bindestreck).
  • Variabler defaultrouter_fibN och ipv6_defaultrouter_fibN har lagts till i rc.conf, genom vilka du kan lägga till standardrutter till andra FIB-tabeller än den primära.
  • Stöd för SHA-512/224-hashar har lagts till i libmd-biblioteket.
  • pthread-biblioteket implementerar stöd för semantiken för funktioner som används i Linux.
  • Stöd för avkodning av Linux-systemanrop har lagts till i kdump. Stöd för Linux-liknande syscall-spårning har lagts till i kdump och sysdecode.
  • Killall-verktyget har nu förmågan att skicka en signal till processer bundna till en specifik terminal (till exempel "killall -t pts/1").
  • Lade till nproc-verktyg för att visa antalet beräkningsenheter som är tillgängliga för den aktuella processen.
  • Stöd för avkodning av ACS-parametrar (Access Control Services) har lagts till i pciconf-verktyget.
  • SPLIT_KERNEL_DEBUG-inställningen har lagts till i kärnan, vilket gör det möjligt att spara felsökningsinformation för kärnan och kärnmodulerna i separata filer.
  • Linux ABI är nästan komplett med stöd för vDSO-mekanismen (virtual dynamic shared objects), som ger en begränsad uppsättning systemanrop tillgängliga i användarutrymmet utan kontextbyte. Linux ABI på ARM64-system har bringats i paritet med implementeringen för AMD64-arkitekturen.
  • Förbättrat hårdvarustöd. Tillagt stöd för prestandaövervakning (hwpmc) för Intel Alder Lake-processorer. Uppdaterad iwlwifi-drivrutin för Intel trådlösa kort med stöd för nya chips och 802.11ac-standard. Lade till rtw88-drivrutin för Realtek PCI trådlösa kort. Utökade linuxkpi-lagret för användning med FreeBSD Linux-drivrutiner.
  • OpenSSL-biblioteket har uppdaterats till version 1.1.1t, LLVM/Сlang har uppdaterats till version 14.0.5 och SSH-servern och klienten har uppdaterats till OpenSSH 9.2p1 (den tidigare versionen använde OpenSSH 8.8p1). Uppdaterade är också bc 6.2.4, expat 2.5.0, fil 5.43, mindre 608, libarchive 3.6.2, sendmail 8.17.1, sqlite 3.40.1, obundet 1.17.1, zlib 1.2.13.

Dessutom har den blivit utfasad och tagit bort sedan FreeBSD 14.0-grenen för OPIE-engångslösenord, ce- och cp-drivrutiner, ISA-kortdrivrutiner, mergemaster- och minigzip-verktyg, ATM-komponenter i netgraph (NgATM), telnetd-bakgrundsprocessen och VINUM klass i geom.

Källa: opennet.ru

Lägg en kommentar