Lëshimi i FreeBSD 13.2 me mbështetjen e Netlink dhe WireGuard

Pas 11 muajsh zhvillimi, FreeBSD 13.2 është lëshuar. Imazhet e instalimit krijohen për arkitekturat amd64, i386, powerpc, powerpc64, powerpc64le, powerpcspe, armv6, armv7, aarch64 dhe riscv64. Për më tepër, asambletë janë përgatitur për sistemet e virtualizimit (QCOW2, VHD, VMDK, raw) dhe mjediset cloud Amazon EC2, Google Compute Engine dhe Vagrant.

Ndryshimet kryesore:

  • Është zbatuar aftësia për të krijuar fotografi të sistemeve të skedarëve UFS dhe FFS me regjistrimin e aktivizuar (përditësime të buta). U shtua gjithashtu mbështetje për ruajtjen e sfondit të deponive (funksionim hale me flamurin "-L") me përmbajtjen e sistemeve të skedarëve të montuar UFS kur aktivizohet ditari. Një nga veçoritë që nuk disponohet kur përdorni logging është ekzekutimi në sfond i kontrolleve të integritetit duke përdorur mjetin fsck.
  • Përbërja bazë përfshin një drejtues wg që funksionon në nivelin e kernelit me zbatimin e një ndërfaqe rrjeti për VPN WireGuard. Për të përdorur algoritmet kriptografike të kërkuara nga drejtuesi, u zgjerua API i kripto-nënsistemit të kernelit FreeBSD, të cilit iu shtua një parzmore që lejon përdorimin e algoritmeve nga biblioteka e libsodiumit që nuk mbështeten në FreeBSD përmes kripto-API standarde. . Gjatë procesit të zhvillimit, optimizimi u krye gjithashtu për të balancuar në mënyrë të barabartë lidhjen e detyrave të enkriptimit dhe deshifrimit të paketave me bërthamat e CPU-së, gjë që zvogëloi shpenzimet e përgjithshme gjatë përpunimit të paketave WireGuard.

    Përpjekja e fundit për të përfshirë WireGuard në FreeBSD u bë në vitin 2020, por përfundoi në një skandal, si rezultat i të cilit kodi tashmë i shtuar u hoq për shkak të cilësisë së ulët, punës së pakujdesshme me buffers, përdorimit të cungëve në vend të kontrolleve, zbatimit jo të plotë. të protokollit dhe shkelje të licencës GPL. Implementimi i ri u përgatit bashkërisht nga ekipet kryesore të zhvillimit të FreeBSD dhe WireGuard, me kontribute nga Jason A. Donenfeld, autor i VPN WireGuard dhe John H. Baldwin, një zhvillues i njohur i FreeBSD. Një rishikim i plotë i ndryshimeve u krye me mbështetjen e Fondacionit FreeBSD përpara se kodi i ri të pranohej.

  • Mbështetja për protokollin e komunikimit Netlink (RFC 3549), i përdorur në Linux për të organizuar ndërveprimin e kernelit me proceset në hapësirën e përdoruesit, është zbatuar. Projekti është i kufizuar në mbështetjen e familjes NETLINK_ROUTE të operacioneve për menaxhimin e gjendjes së nënsistemit të rrjetit në kernel, i cili lejon FreeBSD të përdorë programin Linux ip nga paketa iproute2 për të menaxhuar ndërfaqet e rrjetit, për të vendosur adresat IP, për të konfiguruar rrugëzimin dhe për të manipuluar Nexthop objektet që ruajnë të dhënat e gjendjes së përdorur për transmetimin e paketës në destinacionin e dëshiruar.
  • Të gjithë ekzekutuesit e sistemit bazë në platformat 64-bitësh kanë të aktivizuar si parazgjedhje, Adresa Space Layout Randomization (ASLR). Për të çaktivizuar në mënyrë selektive ASLR, mund të përdorni komandat "proccontrol -m aslr -s disable" ose "elfctl -e +noaslr".
  • Në ipfw, tabelat radix përdoren për të kërkuar adresat MAC, gjë që ju lejon të krijoni tabela me adresa MAC dhe t'i përdorni ato për të filtruar trafikun. Për shembull: ipfw tabela 1 krijoni llojin mac ipfw tabela 1 shtoni 11:22:33:44:55:66/48 ipfw shtoni skipto tablearg src-mac 'tabela(1)' ipfw shtoni mohoni src-mac 'tabela(1, 100 )' ipfw shtoni refuzimin e kërkimit dst-mac 1
  • Modulet e kernelit dpdk_lpm4 dhe dpdk_lpm6 janë shtuar dhe janë të disponueshëm për ngarkim nëpërmjet loader.conf me zbatimin e algoritmit të kërkimit të rrugës DIR-24-8 për IPv4/IPv6, i cili ju lejon të optimizoni funksionet e rrugëtimit për hostet me tabela shumë të mëdha të rrugëtimit ( në teste vërehet një rritje e shpejtësisë prej 25 %). Për të konfiguruar modulet, mund të përdoret programi standard i rrugës (opsioni FIB_ALGO është shtuar).
  • Zbatimi i sistemit të skedarëve ZFS është përditësuar për të lëshuar OpenZFS 2.1.9. Skripti i nisjes zfskeys siguron ngarkimin automatik të çelësave të ruajtur në sistemin e skedarëve ZFS. U shtua zpoolreguid i ri i skriptit RC për të caktuar një GUID në një ose më shumë zpools (p.sh. i dobishëm për mjediset e përbashkëta të virtualizimit të të dhënave).
  • Hipervizori Bhyve dhe moduli vmm mbështesin bashkimin e më shumë se 15 CPU-ve virtuale në sistemin mysafir (të rregulluar nëpërmjet sysctl hw.vmm.maxcpu). Programi bhyve zbaton emulimin e pajisjes së hyrjes virtio, me të cilën mund të zëvendësoni ngjarjet e hyrjes së tastierës dhe miut në sistemin e vizitorëve.
  • Në KTLS, një implementim i protokollit TLS që funksionon në nivelin e kernelit FreeBSD, është shtuar mbështetje për përshpejtimin e harduerit të TLS 1.3 duke shkarkuar disa operacione që lidhen me përpunimin e paketave hyrëse të koduara në kartën e rrjetit. Më parë, një veçori e ngjashme ishte e disponueshme për TLS 1.1 dhe TLS 1.2.
  • Në skriptin e fillimit të growfs, kur zgjeroni sistemin e skedarëve rrënjë, është e mundur të shtoni një ndarje shkëmbimi nëse fillimisht mungonte një ndarje e tillë (për shembull, e dobishme kur instaloni një imazh të gatshëm të sistemit në një kartë SD). Për të kontrolluar madhësinë e shkëmbimit, një parametër i ri growfs_swap_size është shtuar në rc.conf.
  • Skripti fillestar i hostid-it siguron që një UUID e rastësishme të gjenerohet nëse skedari /etc/hostid mungon dhe UUID nuk mund të merret nga hardueri. U shtua gjithashtu një skedar /etc/machine-id me një paraqitje kompakte të ID-së së hostit (pa viza).
  • Variablat defaultrouter_fibN dhe ipv6_defaultrouter_fibN janë shtuar në rc.conf, përmes të cilave mund të shtoni rrugë të paracaktuara në tabelat FIB të ndryshme nga ajo kryesore.
  • Mbështetja për hash-et SHA-512/224 është shtuar në bibliotekën libmd.
  • Biblioteka pthread ofron mbështetje për semantikën e funksioneve të përdorura në Linux.
  • Mbështetje e shtuar për dekodimin e thirrjeve të sistemit Linux në kdump. Mbështetje e shtuar për gjurmimin e thirrjeve të sistemit të stilit Linux në kdump dhe sysdecode.
  • Shërbimi killall tani ka aftësinë për të dërguar një sinjal në proceset e lidhura në një terminal specifik (për shembull, "killall -t pts/1").
  • U shtua mjeti nproc për të shfaqur numrin e blloqeve llogaritëse të disponueshme për procesin aktual.
  • Mbështetja për dekodimin e parametrave ACS (Access Control Services) është shtuar në programin pciconf.
  • Cilësimi SPLIT_KERNEL_DEBUG është shtuar në kernel, i cili ju lejon të ruani informacionin e korrigjimit për modulet e kernelit dhe kernelit në skedarë të veçantë.
  • Linux ABI është pothuajse i kompletuar me mbështetjen për mekanizmin vDSO (objekte të përbashkëta dinamike virtuale), i cili ofron një grup të kufizuar thirrjesh sistemi të disponueshme në hapësirën e përdoruesit pa ndërrim konteksti. Linux ABI në sistemet ARM64 është sjellë në barazi me zbatimin për arkitekturën AMD64.
  • Mbështetje e përmirësuar e harduerit. Mbështetje e shtuar e monitorimit të performancës (hwpmc) për CPU-të Intel Alder Lake. Shoferi iwlwifi për kartat me valë Intel është përditësuar me mbështetje për çipa të rinj dhe standardin 802.11ac. Shtuar shofer rtw88 për kartat wireless Realtek me ndërfaqe PCI. Aftësitë e shtresës linuxkpi janë zgjeruar për t'u përdorur me drejtuesit e Linux në FreeBSD.
  • Biblioteka OpenSSL është përditësuar në versionin 1.1.1t, LLVM/Сlang në versionin 14.0.5 dhe serveri SSH dhe klienti janë përditësuar në OpenSSH 9.2p1 (versioni i mëparshëm përdorte OpenSSH 8.8p1). Përditësohen gjithashtu versionet bc 6.2.4, expat 2.5.0, skedari 5.43, më pak 608, libarchive 3.6.2, sendmail 8.17.1, sqlite 3.40.1, palidhur 1.17.1, zlib 1.2.13.

Për më tepër, është njoftuar se, duke filluar me degën FreeBSD 14.0, fjalëkalimet një herë OPIE, drejtuesit ce dhe cp, drejtuesit për kartat ISA, shërbimet mergemaster dhe minigzip, komponentët e ATM në netgraph (NgATM), procesi i sfondit telnetd dhe Klasa VINUM në gjeom.

Burimi: opennet.ru

Shto një koment