Lanzamiento de FreeBSD 13.2 con soporte para Netlink y WireGuard

Después de 11 meses de desarrollo, se lanzó FreeBSD 13.2. Se generan imágenes de instalación para las arquitecturas amd64, i386, powerpc, powerpc64, powerpc64le, powerpcspe, armv6, armv7, aarch64 y riscv64. Adicionalmente se han preparado montajes para sistemas de virtualización (QCOW2, VHD, VMDK, raw) y entornos de nube Amazon EC2, Google Compute Engine y Vagrant.

Cambios clave:

  • Se ha implementado la capacidad de crear instantáneas de sistemas de archivos UFS y FFS con el registro habilitado (actualizaciones suaves). También se agregó soporte para guardar volcados en segundo plano (ejecutando volcados con el indicador "-L") con el contenido de los sistemas de archivos UFS montados cuando el registro en diario está habilitado. Una de las funciones que no está disponible cuando se utiliza el registro es la ejecución en segundo plano de comprobaciones de integridad mediante la utilidad fsck.
  • La composición básica incluye un controlador wg que opera a nivel de kernel con la implementación de una interfaz de red para VPN WireGuard. Para utilizar los algoritmos criptográficos requeridos por el controlador, se amplió la API del subsistema criptográfico del kernel de FreeBSD, a lo que se le agregó un arnés que permite el uso de algoritmos de la biblioteca libsodium que no son soportados en FreeBSD a través de la API criptográfica estándar. . Durante el proceso de desarrollo, también se llevó a cabo una optimización para equilibrar uniformemente la vinculación de las tareas de cifrado y descifrado de paquetes a los núcleos de la CPU, lo que redujo la sobrecarga al procesar paquetes WireGuard.

    El último intento de incluir WireGuard en FreeBSD se realizó en 2020, pero terminó en un escándalo, como resultado del cual se eliminó el código ya agregado debido a la baja calidad, el trabajo descuidado con los buffers, el uso de stubs en lugar de cheques, implementación incompleta del protocolo y violación de la licencia GPL. La nueva implementación fue preparada conjuntamente por los equipos principales de desarrollo de FreeBSD y WireGuard, con contribuciones de Jason A. Donenfeld, autor de VPN WireGuard, y John H. Baldwin, un reconocido desarrollador de FreeBSD. Se llevó a cabo una revisión completa de los cambios con el apoyo de la Fundación FreeBSD antes de que se aceptara el nuevo código.

  • Se ha implementado soporte para el protocolo de comunicación Netlink (RFC 3549), utilizado en Linux para organizar la interacción del kernel con procesos en el espacio del usuario. El proyecto se limita a admitir la familia de operaciones NETLINK_ROUTE para administrar el estado del subsistema de red en el kernel, lo que permite a FreeBSD usar la utilidad ip de Linux del paquete iproute2 para administrar interfaces de red, establecer direcciones IP, configurar enrutamiento y manipular nexthop. Objetos que almacenan datos de estado utilizados para transmitir el paquete al destino deseado.
  • Todos los ejecutables del sistema base en plataformas de 64 bits tienen habilitada la aleatorización del diseño del espacio de direcciones (ASLR) de forma predeterminada. Para desactivar ASLR selectivamente, puede utilizar los comandos “proccontrol -m aslr -s enable” o “elfctl -e +noaslr”.
  • En ipfw, las tablas radix se usan para buscar direcciones MAC, lo que le permite crear tablas con direcciones MAC y usarlas para filtrar el tráfico. Por ejemplo: ipfw tabla 1 crear tipo mac ipfw tabla 1 agregar 11:22:33:44:55:66/48 ipfw agregar skipto tablearg src-mac 'tabla(1)' ipfw agregar denegar src-mac 'tabla(1, 100 )' ipfw agregar denegar búsqueda dst-mac 1
  • Los módulos del kernel dpdk_lpm4 y dpdk_lpm6 se han agregado y están disponibles para cargar a través de loader.conf con la implementación del algoritmo de búsqueda de rutas DIR-24-8 para IPv4/IPv6, que le permite optimizar las funciones de enrutamiento para hosts con tablas de enrutamiento muy grandes ( en las pruebas se observa un aumento de velocidad del 25%). Para configurar módulos, se puede utilizar la utilidad de ruta estándar (se ha agregado la opción FIB_ALGO).
  • La implementación del sistema de archivos ZFS se actualizó para lanzar OpenZFS 2.1.9. El script de inicio zfskeys proporciona la carga automática de claves almacenadas en el sistema de archivos ZFS. Se agregó un nuevo script RC zpoolreguid para asignar un GUID a uno o más zpools (por ejemplo, útil para entornos de virtualización de datos compartidos).
  • El hipervisor Bhyve y el módulo vmm admiten la conexión de más de 15 CPU virtuales al sistema invitado (regulado a través de sysctl hw.vmm.maxcpu). La utilidad bhyve implementa la emulación del dispositivo de entrada virtio, con el que puede sustituir eventos de entrada de teclado y mouse en el sistema invitado.
  • En KTLS, una implementación del protocolo TLS que se ejecuta en el nivel del kernel de FreeBSD, se agregó soporte para la aceleración de hardware de TLS 1.3 al descargar algunas operaciones relacionadas con el procesamiento de paquetes entrantes cifrados a la tarjeta de red. Anteriormente, una función similar estaba disponible para TLS 1.1 y TLS 1.2.
  • En el script de inicio de growfs, al expandir el sistema de archivos raíz, es posible agregar una partición de intercambio si inicialmente faltaba dicha partición (por ejemplo, útil al instalar una imagen del sistema ya preparada en una tarjeta SD). Para controlar el tamaño del intercambio, se agregó un nuevo parámetro growfs_swap_size a rc.conf.
  • El script de inicio hostid garantiza que se genere un UUID aleatorio si falta el archivo /etc/hostid y no se puede obtener el UUID del hardware. También se agregó un archivo /etc/machine-id con una representación compacta del ID del host (sin guiones).
  • Las variables defaultrouter_fibN e ipv6_defaultrouter_fibN se agregaron a rc.conf, a través de las cuales puede agregar rutas predeterminadas a tablas FIB distintas a la principal.
  • Se ha agregado compatibilidad con hashes SHA-512/224 a la biblioteca libmd.
  • La biblioteca pthread brinda soporte para la semántica de funciones utilizadas en Linux.
  • Se agregó soporte para decodificar llamadas del sistema Linux a kdump. Se agregó soporte para el seguimiento de llamadas del sistema estilo Linux a kdump y sysdecode.
  • La utilidad Killall ahora tiene la capacidad de enviar una señal a procesos vinculados a una terminal específica (por ejemplo, "killall -t pts/1").
  • Se agregó la utilidad nproc para mostrar la cantidad de bloques computacionales disponibles para el proceso actual.
  • Se ha agregado soporte para decodificar parámetros ACS (Servicios de control de acceso) a la utilidad pciconf.
  • La configuración SPLIT_KERNEL_DEBUG se ha agregado al kernel, lo que le permite guardar información de depuración para el kernel y los módulos del kernel en archivos separados.
  • La ABI de Linux está casi completa con soporte para el mecanismo vDSO (objetos virtuales dinámicos compartidos), que proporciona un conjunto limitado de llamadas al sistema disponibles en el espacio del usuario sin cambio de contexto. La ABI de Linux en sistemas ARM64 se ha equiparado con la implementación de la arquitectura AMD64.
  • Soporte de hardware mejorado. Se agregó soporte de monitoreo de rendimiento (hwpmc) para las CPU Intel Alder Lake. El controlador iwlwifi para tarjetas inalámbricas Intel se ha actualizado con soporte para nuevos chips y el estándar 802.11ac. Se agregó el controlador rtw88 para tarjetas inalámbricas Realtek con interfaz PCI. Las capacidades de la capa linuxkpi se han ampliado para su uso con controladores de Linux en FreeBSD.
  • La biblioteca OpenSSL se actualizó a la versión 1.1.1t, LLVM/Сlang a la versión 14.0.5 y el servidor y cliente SSH se actualizaron a OpenSSH 9.2p1 (la versión anterior usaba OpenSSH 8.8p1). También se actualizaron las versiones 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.

Además, se ha anunciado que, a partir de la rama FreeBSD 14.0, las contraseñas de un solo uso OPIE, los controladores ce y cp, los controladores para tarjetas ISA, las utilidades mergemaster y minigzip, los componentes de cajeros automáticos en netgraph (NgATM), el proceso en segundo plano telnetd y el Clase VINUM en geom.

Fuente: opennet.ru

Añadir un comentario