Wifibox 0.10 项目的一个版本可以解决 FreeBSD 使用缺乏必要驱动程序的无线适配器的问题。 对于 FreeBSD 来说有问题的适配器是通过运行 Linux 来宾提供的,该来宾加载本机 Linux 无线设备驱动程序。
带有驱动程序的访客系统的安装是自动化的,所有必要的组件都打包为现成的 wifibox 包,该包在启动时使用提供的 rc 服务启动。 包括正确处理到睡眠模式的转换。 该环境可能适用于 Linux 支持的任何 WiFi 卡,但主要在 Intel 芯片上进行了测试。 我们还在配备 Qualcomm Atheros 和 AMD RZ608 (MediaTek MT7921K) 无线芯片的系统上测试了正确的操作。
访客系统使用 Bhyve 管理程序启动,该管理程序组织对无线卡的访问转发。 需要支持硬件虚拟化(AMD-Vi 或 Intel VT-d)的系统。 访客系统基于 Alpine Linux 发行版,构建于 Musl 系统库和 BusyBox 实用程序集之上。 图像在磁盘上的大小约为 30MB,消耗约 90MB 的 RAM。
要连接到无线网络,需要使用 wpa_supplicant 包,其配置文件与主 FreeBSD 环境中的设置同步。 wpa_supplicant 创建的控制 Unix 套接字被转发到主机环境,这允许您使用标准 FreeBSD 实用程序来连接和使用无线网络,包括 wpa_cli 和 wpa_gui (net/wpa_supplicant_gui) 实用程序。
在新版本中,重新设计了将WPA转发到主环境的机制,这使得可以与wpa_supplicant和hostapd一起工作。 客户系统所需的内存量已减少。 对 FreeBSD 13.0-RELEASE 的支持已被放弃。
此外,还值得注意的是改进 FreeBSD 中提供的基于 Intel 和 Realtek 芯片的无线卡驱动程序的工作。 在 FreeBSD 基金会的支持下,FreeBSD 13.1 中包含的新 iwlwifi 驱动程序的开发仍在继续。 该驱动程序基于 Linux 驱动程序和 net80211 Linux 子系统的代码,支持 802.11ac,可与新的 Intel 无线芯片一起使用。 当找到正确的无线卡时,驱动程序会在启动时自动加载。 Linux 无线堆栈的组件由 LinuxKPI 层提供支持。 此前,iwm 驱动程序也以类似的方式移植到 FreeBSD。
与此同时,Realtek RTW88和RTW89无线芯片的RTW88和RTW89驱动程序的开发也开始了,这些驱动程序也是通过从Linux移植相应的驱动程序来开发的,并使用LinuxKPI层工作。 rtw88 驱动程序已准备好进行初始测试,而 rtw89 驱动程序仍在开发中。
此外,我们还可以提及与 FreeBSD 无线堆栈中的漏洞 (CVE-2022-23088) 相关的详细信息和已完成的利用,已在 80211 月份的更新中修复。 当客户端处于网络扫描模式(SSID 绑定之前的阶段)时,该漏洞允许通过发送特制帧来在内核级别执行代码。 该问题是由 ieee2009_parse_beacon() 函数在解析接入点传输的信标帧时发生缓冲区溢出引起的。 由于没有检查数据的实际大小是否与标头字段中指定的大小相匹配,从而导致了溢出。 这个问题在 XNUMX 年以来形成的 FreeBSD 版本中表现得很明显。
FreeBSD 最近的非无线堆栈变化包括: 启动时间优化,在测试系统上从 10 秒减少到 8 秒; 实现了 GEOM 模块 Gunion,以将在只读模式下可用的磁盘上所做的更改传输到另一个磁盘; 对于内核加密 API,已准备好 VPN WireGuard 驱动程序所需的 XChaCha20-Poly1305 AEAD 和 curve25519 加密原语。
来源: opennet.ru