FreeBSD 13.2 udgivelse med Netlink og WireGuard support

Efter 11 måneders udvikling er FreeBSD 13.2 blevet frigivet. Installationsbilleder genereres til amd64, i386, powerpc, powerpc64, powerpc64le, powerpcspe, armv6, armv7, aarch64 og riscv64 arkitekturer. Derudover er assemblies blevet forberedt til virtualiseringssystemer (QCOW2, VHD, VMDK, raw) og cloud-miljøer Amazon EC2, Google Compute Engine og Vagrant.

Nøgleændringer:

  • Muligheden for at oprette snapshots af UFS- og FFS-filsystemer med logning aktiveret (bløde opdateringer) er blevet implementeret. Også tilføjet understøttelse af baggrundslagring af dumps (kører dump med "-L" flaget) med indholdet af monterede UFS-filsystemer, når journalføring er aktiveret. En af de funktioner, der ikke er tilgængelige, når du bruger logning, er baggrundsudførelsen af ​​integritetstjek ved hjælp af fsck-værktøjet.
  • Den grundlæggende sammensætning inkluderer en wg-driver, der opererer på kerneniveau med implementering af en netværksgrænseflade til VPN WireGuard. For at bruge de kryptografiske algoritmer, der kræves af driveren, blev API'et for FreeBSD-kernens krypto-undersystem udvidet, hvortil der blev tilføjet en sele, der tillader brugen af ​​algoritmer fra libsodium-biblioteket, som ikke understøttes i FreeBSD gennem standard krypto-API. . Under udviklingsprocessen blev der også udført optimering for at balancere bindingen af ​​pakkekrypterings- og dekrypteringsopgaver til CPU-kerner, hvilket reducerede overheaden ved behandling af WireGuard-pakker.

    Det sidste forsøg på at inkludere WireGuard i FreeBSD blev lavet i 2020, men endte i en skandale, som et resultat af, at den allerede tilføjede kode blev fjernet på grund af lav kvalitet, skødesløst arbejde med buffere, brugen af ​​stubs i stedet for checks, ufuldstændig implementering af protokollen og overtrædelse af GPL-licensen. Den nye implementering blev udarbejdet i fællesskab af FreeBSD og WireGuards kerneudviklingsteams med bidrag fra Jason A. Donenfeld, forfatter til VPN WireGuard, og John H. Baldwin, en kendt FreeBSD-udvikler. En fuldstændig gennemgang af ændringerne blev udført med støtte fra FreeBSD Foundation, før den nye kode blev accepteret.

  • Understøttelse af Netlink-kommunikationsprotokollen (RFC 3549), der bruges i Linux til at organisere interaktionen af ​​kernen med processer i brugerrummet, er blevet implementeret. Projektet er begrænset til at understøtte NETLINK_ROUTE-familien af ​​operationer til styring af netværksundersystemets tilstand i kernen, hvilket gør det muligt for FreeBSD at bruge Linux ip-værktøjet fra iproute2-pakken til at administrere netværksgrænseflader, indstille IP-adresser, konfigurere routing og manipulere nexthop objekter, der gemmer tilstandsdata, der bruges til at sende pakken til den ønskede destination.
  • Alle basissystemeksekverbare filer på 64-bit platforme har Address Space Layout Randomization (ASLR) aktiveret som standard. For selektivt at deaktivere ASLR, kan du bruge kommandoerne "proccontrol -m aslr -s disable" eller "elfctl -e +noaslr".
  • I ipfw bruges radix-tabeller til at slå MAC-adresser op, hvilket giver dig mulighed for at oprette tabeller med MAC-adresser og bruge dem til at filtrere trafik. For eksempel: 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 benægte src-mac 'table(1, 100 )' ipfw tilføj nægte opslag dst-mac 1
  • Kernelmodulerne dpdk_lpm4 og dpdk_lpm6 er blevet tilføjet og er tilgængelige for indlæsning via loader.conf med implementeringen af ​​DIR-24-8 rutesøgealgoritmen for IPv4/IPv6, som giver dig mulighed for at optimere routingfunktioner for værter med meget store routingtabeller ( i tests observeres en hastighedsstigning på 25 %). For at konfigurere moduler kan standardruteværktøjet bruges (FIB_ALGO-indstillingen er blevet tilføjet).
  • ZFS-filsystemimplementeringen er blevet opdateret til at frigive OpenZFS 2.1.9. zfskeys-startscriptet giver automatisk indlæsning af nøgler, der er gemt i ZFS-filsystemet. Tilføjet nyt RC-script zpoolreguid for at tildele en GUID til en eller flere zpools (f.eks. nyttigt til delte datavirtualiseringsmiljøer).
  • Bhyve-hypervisoren og vmm-modulet understøtter tilslutning af mere end 15 virtuelle CPU'er til gæstesystemet (reguleret via sysctl hw.vmm.maxcpu). Bhyve-værktøjet implementerer emulering af virtio-input-enheden, med hvilken du kan erstatte tastatur- og mus-inputhændelser i gæstesystemet.
  • I KTLS, en implementering af TLS-protokollen, der kører på FreeBSD-kerneniveau, er understøttelse af hardwareacceleration af TLS 1.3 blevet tilføjet ved at aflaste nogle operationer relateret til behandling af krypterede indgående pakker til netværkskortet. Tidligere var en lignende funktion tilgængelig for TLS 1.1 og TLS 1.2.
  • I growfs opstartsscriptet er det, når du udvider rodfilsystemet, muligt at tilføje en swap-partition, hvis en sådan partition oprindeligt manglede (f.eks. nyttigt, når du installerer et færdigt systembillede på et SD-kort). For at kontrollere swap-størrelsen er en ny parameter growfs_swap_size blevet tilføjet til rc.conf.
  • Hostid-startscriptet sikrer, at der genereres et tilfældigt UUID, hvis /etc/hostid-filen mangler, og UUID'et ikke kan hentes fra hardwaren. Tilføjede også en /etc/machine-id-fil med en kompakt repræsentation af værts-id'et (ingen bindestreger).
  • Variablerne defaultrouter_fibN og ipv6_defaultrouter_fibN er blevet tilføjet til rc.conf, hvorigennem du kan tilføje standardruter til andre FIB-tabeller end den primære.
  • Understøttelse af SHA-512/224 hashes er blevet tilføjet til libmd-biblioteket.
  • pthread-biblioteket understøtter semantikken af ​​funktioner, der bruges i Linux.
  • Tilføjet understøttelse af afkodning af Linux-systemkald til kdump. Tilføjet understøttelse af systemopkaldssporing i Linux-stil til kdump og sysdecode.
  • Killall-værktøjet har nu mulighed for at sende et signal til processer bundet til en specifik terminal (f.eks. "killall -t pts/1").
  • Tilføjet nproc-værktøj til at vise antallet af beregningsblokke, der er tilgængelige for den aktuelle proces.
  • Understøttelse af afkodning af ACS-parametre (Access Control Services) er blevet tilføjet til pciconf-værktøjet.
  • SPLIT_KERNEL_DEBUG-indstillingen er blevet tilføjet til kernen, hvilket giver dig mulighed for at gemme fejlfindingsoplysninger for kernen og kernemodulerne i separate filer.
  • Linux ABI er næsten komplet med understøttelse af vDSO (virtual dynamic shared objects) mekanismen, som giver et begrænset sæt af systemkald tilgængelige i brugerrummet uden kontekstskift. Linux ABI på ARM64-systemer er blevet bragt i paritet med implementeringen af ​​AMD64-arkitekturen.
  • Forbedret hardware support. Tilføjet understøttelse af ydeevneovervågning (hwpmc) til Intel Alder Lake CPU'er. Iwlwifi-driveren til Intel trådløse kort er blevet opdateret med understøttelse af nye chips og 802.11ac-standarden. Tilføjet rtw88-driver til Realtek trådløse kort med PCI-interface. Funktionerne i linuxkpi-laget er blevet udvidet til brug med Linux-drivere i FreeBSD.
  • OpenSSL-biblioteket er blevet opdateret til version 1.1.1t, LLVM/Сlang til version 14.0.5, og SSH-serveren og klienten er blevet opdateret til OpenSSH 9.2p1 (den tidligere version brugte OpenSSH 8.8p1). Også opdateret er versioner 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, ubundet 1.17.1, zlib 1.2.13.

Derudover er det blevet annonceret, at startende med FreeBSD 14.0-grenen, engangsadgangskoder OPIE, ce og cp-drivere, drivere til ISA-kort, mergemaster- og minigzip-værktøjer, ATM-komponenter i netgraph (NgATM), telnetd-baggrundsprocessen og VINUM klasse i geom.

Kilde: opennet.ru

Tilføj en kommentar