Wifibox 0.10 - 在 FreeBSD 上使用 Linux WiFi 驱动程序的环境

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 版本中表现得很明显。

Wifibox 0.10 - 在 FreeBSD 中使用 Linux WiFi 驱动程序的环境

FreeBSD 最近的非无线堆栈变化包括: 启动时间优化,在测试系统上从 10 秒减少到 8 秒; 实现了 GEOM 模块 Gunion,以将在只读模式下可用的磁盘上所做的更改传输到另一个磁盘; 对于内核加密 API,已准备好 VPN WireGuard 驱动程序所需的 XChaCha20-Poly1305 AEAD 和 curve25519 加密原语。

来源: opennet.ru

添加评论