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 文件系统快照(软更新)的功能。 还添加了在启用日志功能时对后台保存转储(使用“-L”标志运行转储)以及已安装 UFS 文件系统内容的支持。 使用日志记录时不可用的功能之一是使用 fsck 实用程序在后台执行完整性检查。
  • 基本组成包括在内核级别运行的 wg 驱动程序以及 VPN WireGuard 网络接口的实现。 为了使用驱动程序所需的加密算法,扩展了 FreeBSD 内核加密子系统的 API,其中添加了一个工具,允许通过标准加密 API 使用 FreeBSD 不支持的 libsodium 库中的算法。 开发过程中还进行了优化,均匀平衡报文加解密任务与CPU核的绑定,减少了处理WireGuard报文时的开销。

    最后一次尝试将 WireGuard 纳入 FreeBSD 是在 2020 年,但以丑闻告终,由于质量低下、对缓冲区的粗心工作、使用存根而不是检查、实施不完整,已添加的代码被删除协议和违反 GPL 许可证。 新的实现由核心 FreeBSD 和 WireGuard 开发团队共同编写,VPN WireGuard 的作者 Jason A. Donenfeld 和著名 FreeBSD 开发人员 John H. Baldwin 做出了贡献。 在接受新代码之前,在 FreeBSD 基金会的支持下对更改进行了全面审查。

  • 已实现对 Netlink 通信协议 (RFC 3549) 的支持,该协议在 Linux 中用于组织内核与用户空间进程的交互。 该项目仅限于支持 NETLINK_ROUTE 系列操作,用于管理内核中网络子系统的状态,这允许 FreeBSD 使用 iproute2 包中的 Linux ip 实用程序来管理网络接口、设置 IP 地址、配置路由和操作 nexthop存储用于将数据包传输到所需目的地的状态数据的对象。
  • 64 位平台上的所有基本系统可执行文件默认启用地址空间布局随机化 (ASLR)。 要有选择地禁用 ASLR,可以使用命令“proccontrol -m aslr -sdisable”或“elfctl -e +noaslr”。
  • 在 ipfw 中,基数表用于查找 MAC 地址,这允许您创建包含 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 添加拒绝查找 dst-mac 1
  • 添加了内核模块 dpdk_lpm4 和 dpdk_lpm6,可通过 loader.conf 加载,并实现 IPv24/IPv8 的 DIR-4-6 路由搜索算法,这允许您为具有非常大的路由表的主机优化路由功能(在测试中,观察到速度提高了 25%)。 要配置模块,可以使用标准路由实用程序(已添加 FIB_ALGO 选项)。
  • ZFS 文件系统实现已更新为发布 OpenZFS 2.1.9。 zfskeys 启动脚本提供自动加载存储在 ZFS 文件系统中的密钥。 添加了新的 RC 脚本 zpoolreguid,以将 GUID 分配给一个或多个 zpool(例如,对于共享数据虚拟化环境很有用)。
  • Bhyve 虚拟机管理程序和 vmm 模块支持将超过 15 个虚拟 CPU 连接到客户系统(通过 sysctl hw.vmm.maxcpu 进行调节)。 bhyve 实用程序实现了 virtio 输入设备的模拟,您可以使用该设备将键盘和鼠标输入事件替换到客户系统中。
  • KTLS 是在 FreeBSD 内核级别运行的 TLS 协议的实现,通过将一些与处理加密传入数据包相关的操作卸载到网卡,添加了对 TLS 1.3 硬件加速的支持。 此前,TLS 1.1 和 TLS 1.2 也提供了类似的功能。
  • 在growfs启动脚本中,当扩展根文件系统时,如果最初缺少交换分区,则可以添加交换分区(例如,在SD卡上安装现成的系统映像时很有用)。 为了控制交换大小,rc.conf中添加了一个新参数growfs_swap_size。
  • hostid 启动脚本可确保在 /etc/hostid 文件丢失且无法从硬件获取 UUID 的情况下生成随机 UUID。 还添加了一个 /etc/machine-id 文件,其中包含主机 ID 的紧凑表示(无连字符)。
  • rc.conf中添加了defaultrouter_fibN和ipv6_defaultrouter_fibN变量,通过它们可以将默认路由添加到除主FIB表之外的FIB表中。
  • libmd 库中添加了对 SHA-512/224 哈希值的支持。
  • pthread 库提供对 Linux 中使用的函数语义的支持。
  • 添加了对 kdump 解码 Linux 系统调用的支持。 添加了对 kdump 和 sysdecode 的 Linux 风格系统调用跟踪的支持。
  • Killall 实用程序现在能够向绑定到特定终端的进程发送信号(例如“killall -t pts/1”)。
  • 添加了 nproc 实用程序来显示当前进程可用的计算块的数量。
  • pciconf 实用程序中添加了对解码 ACS(访问控制服务)参数的支持。
  • SPLIT_KERNEL_DEBUG 设置已添加到内核中,它允许您将内核和内核模块的调试信息保存在单独的文件中。
  • Linux ABI 几乎完成了对 vDSO(虚拟动态共享对象)机制的支持,该机制提供了用户空间中可用的一组有限的系统调用,而无需上下文切换。 ARM64 系统上的 Linux ABI 已与 AMD64 架构的实现持平。
  • 改进的硬件支持。 添加了对 Intel Alder Lake CPU 的性能监控 (hwpmc) 支持。 Intel 无线卡的 iwlwifi 驱动程序已更新,支持新芯片和 802.11ac 标准。 添加了适用于具有 PCI 接口的 Realtek 无线卡的 rtw88 驱动程序。 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 实用程序、netgraph 中的 ATM 组件 (NgATM)、telnetd 后台进程和geom 中的 VINUM 类。

来源: opennet.ru

添加评论