Релиз FreeBSD 13.2 с поддръжка на Netlink и WireGuard

След 11 месеца разработка е публикуван релиз FreeBSD 13.2. Инсталационните образи са генерирани за архитектури amd64, i386, powerpc, powerpc64, powerpc64le, powerpcspe, armv6, armv7, aarch64 и riscv64. Допълнително са подготвени компилации за виртуализационни системи (QCOW2, VHD, VMDK, raw) и облачни среди Amazon EC2, 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 за управление на състоянието на мрежовата подсистема в ядрото, което позволява използването на 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 src-mac ‘table(1, 100)’ ipfw add deny lookup dst-mac 1
  • Добавени и налични за зареждане чрез loader.conf са модулите на ядрото dpdk_lpm4 и dpdk_lpm6 с реализация на алгоритъма за търсене на маршрути DIR-24-8 за IPv4/IPv6, което позволява оптимизация на функциите за маршрутизация за хостове с много големи таблици за маршрутизация (в тестовете се наблюдава увеличение на скоростта до 25%). За настройка на модулите може да се използва стандартната утилита 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-карта с готов системен образ). За управление на размера на размяната е добавен нов параметър growfs_swap_size в rc.conf.
  • В стартовия скрипт 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 (виртуални динамични споделени обекти), предоставящ ограничен набор от системни повиквания, достъпни в пространството на потребителя без превключване на контекста. ABI linux за ARM64 е доведен до паритет с реализацията за архитектурата AMD64.
  • Подобрена поддръжка на хардуера. Добавена е поддръжка за мониторинг на производителността (hwpmc) за процесори Intel Alder Lake. Обновен е драйверът iwlwifi за безжични карти Intel с поддръжка на нови чипове и стандарта 802.11ac. Добавен е драйвер rtw88 за безжични карти Realtek с PCI интерфейс. Разширени са възможностите на слоя linuxkpi за използване на драйвери от Linux в FreeBSD.
  • Библиотеката OpenSSL е обновена до версия 1.1.1t, LLVM/Clang до версия 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), фоновия процес telnetd и класа VINUM в geom.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster