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

След 11 месеца разработка беше публикуванa версия 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 беше направенa през 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-карта). За управление на размера на свитъка в 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 (виртуални динамични споделени обекти), предоставящ ограничен набор от системни повиквания, достъпни в пространството на потребителя без превключване на контекста. ABI linux на ARM64 системи е приведен в съответствие с реализирането за архитектурата AMD64.
  • Подобрена е поддръжката на оборудването. Добавена е поддръжка за мониторинг на производителността (hwpmc) за CPU 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