Рэліз FreeBSD 13.2 з падтрымкай Netlink і WireGuard

Пасля 11 месяцаў распрацоўкі апублікаваны рэліз FreeBSD 13.2/64. Установачныя вобразы сфарміраваны для архітэктур amd386, i64, powerpc, powerpc64, powerpc6le, powerpcspe, armv7, armv64, aarch64 і riscv2. Дадаткова падрыхтаваны зборкі для сістэм віртуалізацыі (QCOW2, VHD, VMDK, raw) і хмарных асяродкаў Amazon ECXNUMX, Google Compute Engine і Vagrant.

Ключавыя змены:

  • Рэалізавана магчымасць стварэння снапшотаў файлавых сістэм UFS і FFS, на якіх уключана часопісаванне (soft updates). Таксама дададзена падтрымка фонавага захавання дампаў (запуск dump са сцягам «-L») са змесцівам прымантаваных файлавых сістэм UFS пры ўключаным часопісаванні. З магчымасцяў, якія недаступныя пры выкарыстанні часопісавання, застаецца фонавае выкананне праверкі цэласнасці пры дапамозе ўтыліты fsck.
  • У асноўны склад прыняты які працуе на ўзроўні ядра драйвер wg з рэалізацыяй сеткавага інтэрфейсу для VPN WireGuard. Для выкарыстання неабходных драйверу крыптаграфічных алгарытмаў было выраблена пашырэнне API крыптападсістэмы ядра FreeBSD, у які была дададзеная абвязка, якая дазваляе выкарыстоўваць праз стандартны крыпта-API не падтрымоўваныя ва FreeBSD алгарытмы з бібліятэкі libsodium. У працэсе распрацоўкі таксама была праведзена аптымізацыя для раўнамернага балансавання прывязкі задач шыфравання і расшыфроўкі пакетаў да ядраў CPU, што дазволіла зменшыць накладныя выдаткі пры апрацоўцы пакетаў WireGuard.

    Мінулая спроба ўключэння WireGuard у склад FreeBSD была зроблена ў 2020 годзе, але завяршылася скандалам, у выніку якога ўжо дададзены код быў выдалены з-за нізкай якасці, бязладнай працы з буферамі, выкарыстання заглушак замест праверак, няпоўнай рэалізацыі пратакола і парушэнні ліцэнзіі GPL. Новая рэалізацыя, сумесна падрыхтаваная асноўнымі камандамі распрацоўшчыкаў FreeBSD і WireGuard пры ўдзеле Джэйсана Даненфілда (Jason A. Donenfeld), аўтара VPN WireGuard, і Джона Болдуіна (John H. Baldwin), вядомага распрацоўніка FreeBSD. Перад прыняццем новага кода пры падтрымцы арганізацыі FreeBSD Foundation было праведзена поўнае рэцэнзаванне змен.

  • Рэалізаваная падтрымка камунікацыйнага пратаколу Netlink (RFC 3549), ужывальнага ў Linux для арганізацыі ўзаемадзеяння ядра з працэсамі ў прасторы карыстача. Праект абмяжоўваецца падтрымкай сямейства аперацый NETLINK_ROUTE для кіравання станам сеткавай падсістэмы ў ядры, што дазваляе выкарыстоўваць ва FreeBSD Linux-утыліту ip з пакета iproute2 для кіравання сеткавымі інтэрфейсамі, усталёўкі IP-адрасоў, налады маршрутызацыі і маніпуляцыі аб'ектамі nexthop, якія захоўваюць дадзеныя аб перадачы пакета ў жаданую кропку прызначэння.
  • Для ўсіх выкананых файлаў базавай сістэмы на 64-разрадных платформах уключаная па змаўчанні рандомизация адраснай прасторы (ASLR, Address Space Layout Randomization). Для выбарачнага адключэння ASLR можна выкарыстоўваць каманды "proccontrol -m aslr -s disable" ці "elfctl -e +noaslr".
  • У ipfw для пошуку MAC-адрасоў задзейнічаны базісныя табліцы (Radix table), што дазваляе ствараць табліцы з MAC-адрасамі і выкарыстоўваць іх для фільтрацыі трафіку. Напрыклад: 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 lookup dst-mac 1
  • Дададзеныя і даступныя для загрузкі праз loader.conf модулі ядра dpdk_lpm4 і dpdk_lpm6 з рэалізацыяй алгарытму пошуку маршрутаў DIR-24-8 для IPv4/IPv6, які дазваляе аптымізаваць функцыі маршрутызацыі для хастоў з вельмі вялікімі табліцамі маршрутызацыі (у тэстах назіраецца прырост хуткасці %). Для настройкі модуляў можа выкарыстоўвацца штатная ўтыліта route (дададзена опцыя FIB_ALGO).
  • Рэалізацыя файлавай сістэмы ZFS абноўлена да выпуску OpenZFS 2.1.9. У стартавым скрыпце zfskeys забяспечана аўтаматычная загрузка ключоў, якія захоўваюцца ў ФС ZFS. Дададзены новы RC-скрыпт zpoolreguid для прызначэння ідэнтыфікатара GUID да аднаго ці некалькіх zpool (напрыклад, карысна для асяродкаў віртуалізацыі з агульнымі дадзенымі).
  • У гіпервізоры Bhyve і модулі vmm рэалізавана падтрымка прымацавання да гасцявой сістэмы больш за 15 віртуальных CPU (рэгулюецца праз sysctl hw.vmm.maxcpu). Ва ўтыліце bhyve рэалізавана эмуляцыя прылады virtio-input, пры дапамозе якога можна падстаўляць падзеі ўводу з клавіятуры і мышы ў гасцёўню сістэму.
  • У KTLS, рэалізацыю пратаколу TLS, якая працуе на ўзроўні ядра FreeBSD, дададзеная падтрымка апаратнага паскарэння TLS 1.3 праз вынас на плечы сеткавай карты некаторых аперацый, злучаных з апрацоўкай зашыфраваных уваходных пакетаў. Раней падобная магчымасць была даступна для TLS 1.1 і TLS 1.2.
  • У стартавым скрыпце growfs пры пашырэнні каранёвай ФС забяспечана даданне часткі падпампоўкі, калі такая частка першапачаткова адсутнічаў (напрыклад, карысна пры ўсталёўцы на SD-карту гатовай сістэмнай выявы). Для кіраваннем памерам падпампоўкі ў rc.conf дададзены новы параметр growfs_swap_size.
  • У стартавым скрыпце hostid забяспечана генерацыя выпадковага UUID у выпадку адсутнасці файла /etc/hostid і немагчымасці атрымання UUID ад апаратнага забеспячэння. Таксама дададзены файл /etc/machine-id з кампактным уяўленнем ідэнтыфікатара хаста (без злучкоў).
  • У rc.conf дададзены зменныя defaultrouter_fibN і ipv6_defaultrouter_fibN, праз якія можна дадаць маршруты па змаўчанні ў FIB-табліцы, выдатныя ад першаснай.
  • У бібліятэку libmd дададзена падтрымка хэшаў SHA-512/224.
  • У бібліятэцы pthread рэалізавана падтрымка семантыкі функцый, якія выкарыстоўваюцца ў Linux.
  • У kdump дададзена падтрымка дэкадавання сістэмных выклікаў Linux. У kdump і sysdecode дададзена падтрымка трасіроўкі сістэмных выклікаў у стылі Linux.
  • Ва ўтыліце killall з'явілася магчымасць адпраўкі сігналу працэсам, прывязаным да вызначанага тэрмінала (напрыклад, "killall -t pts/1").
  • Дададзена ўтыліта nproc для высновы ліку даступных бягучаму працэсу вылічальных блокаў.
  • Ва ўтыліту pciconf дададзеная падтрымка дэкадавання параметраў ACS (Access Control Services).
  • У ядро ​​дададзена налада SPLIT_KERNEL_DEBUG, якая дазваляе захоўваць у асобныя файлы адладкавую інфармацыю для ядра і модуляў ядра.
  • У ABI linux амаль завершана рэалізацыі падтрымкі механізму vDSO (virtual dynamic shared objects), які прадстаўляе абмежаваны набор сістэмных выклікаў, даступны ў прасторы карыстача без пераключэння кантэксту. ABI linux на сістэмах ARM64 даведзены да парытэту з рэалізацыяй для архітэктуры AMD64.
  • Палепшана падтрымка абсталявання. Дададзена падтрымка маніторынгу прадукцыйнасці (hwpmc) для CPU Intel Alder Lake. Абноўлены драйвер iwlwifi для бесправадных карт Intel з падтрымкай новых чыпаў і стандарту 802.11ac. Дададзены драйвер rtw88 для бесправадных карт Realtek з інтэрфейсам PCI. Пашыраныя магчымасці праслойкі linuxkpi для выкарыстання ва FreeBSD драйвераў Linux.
  • Бібліятэка OpenSSL абноўлена да версіі 1.1.1t, LLVM/Сlang да версіі 14.0.5, а SSH-сервер і кліент абноўлены да OpenSSH 9.2p1 (у мінулай версіі выкарыстоўваўся OpenSSH 8.8p1). Таксама абноўлены версіі 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, zlib 1.2.13.

Дадаткова абвешчана аб пераводзе ў разрад састарэлых і выдаленні пачынальна з галінкі FreeBSD 14.0 аднаразовых пароляў OPIE, драйвераў ce і cp, драйвераў для карт з інтэрфейсам ISA, утыліт mergemaster і minigzip, кампанентаў ATM у netgraph (NgATM), фонавага працэсу geom.

Крыніца: opennet.ru

Дадаць каментар