14.2 无线网络(Wi-Fi)配置
无线网络配置是指对 FreeBSD 操作系统中的无线网卡驱动加载、无线接口创建、无线网络扫描与连接等功能进行设置的过程。无线网络配置是移动计算环境和便携式设备的核心功能之一,也是 FreeBSD 系统在桌面和服务器环境中不可或缺的网络连接方式。
附录:更新系统版本后无法使用无线网络
固件与系统更新的兼容性问题
在 FreeBSD 中,固件(Firmware)是硬件设备正常工作所需的底层软件,它提供了硬件设备与操作系统内核之间的通信接口。固件与内核版本之间存在紧密的耦合关系,这是因为固件接口可能随内核版本更新而发生变化,系统版本更新后可能导致原有固件与新内核不兼容。因此,在更新 FreeBSD 系统后,如果遇到无线网络问题,应首先检查固件兼容性。
固件重新获取方法
如果在更新系统版本后无法使用无线网络,需要重新获取与当前内核版本兼容的固件。FreeBSD 提供了 fwget 工具用于自动获取和安装所需固件:
# fwget如果当前系统没有网络连接,可以通过 USB 网络共享等方式临时获得网络连接后再执行上述命令;也可手动从 https://mirrors.ustc.edu.cn/freebsd-pkg/FreeBSD%3A14%3Aamd64/kmods_latest_3/All/ 等镜像站点下载所需固件包,然后使用以下命令进行安装:
# pkg add /path/to/firmware.pkg一般无线网卡驱动方式(基于 COMFAST CF-912AC 1200M 802.11AC)
示例网卡选择说明
本节以 COMFAST CF-912AC 1200M 802.11AC 无线网卡为例,介绍一般无线网卡的驱动配置方法。该网卡采用 Realtek 芯片组,在 FreeBSD 中具有较好的兼容性。请注意,其他 Realtek 芯片网卡的配置方法类似。
硬件识别方法
在配置无线网络前,需要确认系统是否能够识别无线网卡。可通过查询内核无线设备列表来确认硬件识别状态,该命令会显示系统中可用的无线网络接口设备:
上述输出中的 rtwn0 是示例网卡(COMFAST CF-912AC)的设备名称,实际输出可能因硬件而异。如果输出中冒号 : 后没有内容,则说明无线网卡未被识别,此时可能需要检查硬件连接或更换兼容性更好的无线网卡。
虚拟无线接口机制
在 FreeBSD 中,无线网络采用分层架构设计,需要创建一个虚拟的无线接口 wlan0,并将其绑定到物理无线网卡上才能使用。这种设计实现了物理设备与逻辑配置的分离,使得同一物理网卡可支持多个虚拟接口,同时便于网络参数的灵活配置。
创建一个新的无线接口 wlan0,并将其绑定到物理设备 rtwn0:
上述命令中,rtwn0 为 sysctl net.wlan.devices 输出中的物理网卡名称,需根据实际硬件进行替换(除非你也使用 COMFAST CF-912AC 1200M 802.11AC)。
创建完成后,可使用 ifconfig 命令查看接口状态(以下输出已省略以太网卡和 lo0 接口):
正常情况下,输出中应包含 wlan0 接口。
扫描 WiFi
在连接到无线网络之前,需要先扫描周围可用的无线网络。启用 wlan0 接口并执行扫描操作:
扫描结果会显示可用的无线网络列表,包括 SSID、BSSID、信道、信号强度等信息。
SSID 的定义与作用
服务集标识符(Service Set Identifier,SSID)是无线网络的名称标识,用于区分不同的无线网络。
将 wlan0 接口连接到 SSID 为 test_5G 的无线网络(适用于无密码的开放网络):
上述命令中,test_5G 为示例 WiFi 名称(SSID),需替换为实际网络名称。
如果扫描不到 WiFi 网络,可能需要修改无线区域设置或路由器信道。此时可按以下步骤重新配置:
第一条命令销毁现有 wlan0 接口并释放其占用的资源,避免出现 ifconfig: SIOCS80211: Device busy 错误;第二条命令重新创建无线接口并绑定到物理设备;第三条命令设置无线国家码为 HR 并使用 ETSI 无线频段规范,当目标网络使用大于 48 的信道(DFS 信道)时需要进行此设置,如信道小于 48,可省略该步骤。
完成上述配置后,重启网络服务以接入 WiFi:
第一条命令重新启动网络接口服务,第二条命令为 wlan0 接口获取动态 IP 地址。
WPA 安全机制概述
对于加密的无线网络,需要使用 Wi-Fi 保护访问(Wi-Fi Protected Access,WPA)配置文件进行连接。WPA 是目前主流的无线网络安全协议,提供了数据加密与身份认证功能。
创建 /etc/wpa_supplicant.conf 配置文件,内容如下:
配置说明:
ssid指定要连接的无线网络 SSID(WiFi 名称),此处示例为test_5Gpsk指定无线网络的密码,此处示例为freebsdcn
在 /etc/rc.conf 中添加或修改相关配置条目:
无线网络配置文件结构
完成上述配置后,重启系统以使所有配置生效:
如果不想重启整个系统,可以通过以下命令重启网络服务来应用配置:
重启后,使用 ifconfig 查看连接情况,正常情况下可看到已成功连接(示例输出中 IP 为 192.168.31.178):
英特尔无线网卡驱动概况
英特尔(Intel)网卡是目前使用较为广泛的无线网卡之一。iwlwifi 驱动 适用于 AC 8265、AC 9260、AC 9560、AX200、AX201、AX210、AX 211 以及旧的 iwm 驱动所包含的网卡,见 英特尔 ® 无线适配器的 Linux* 支持 。
在 /etc/rc.conf 中添加以下配置:
创建 /etc/wpa_supplicant.conf 配置文件:
完成配置后,执行以下命令启动 WiFi 进行测试:
第一条命令创建 wlan0 接口并绑定到物理无线设备 iwlwifi0,第二条命令启动 wlan0 接口。
故障排除与未竟事宜请参考:wiki/WiFi/Iwlwifi
博通(Broadcom)网卡驱动
博通(Broadcom)是另一家常用的无线网卡厂商。FreeBSD 内置的 Broadcom(博通)网卡驱动主要有两种:bwi 和 bwn,其中 bwi 支持较旧型号,bwn 支持较新型号。两者的支持范围部分重叠,但 bwn 对硬件的兼容性更好。
关于驱动选择的详细信息,请参考 FreeBSD Broadcom Wi-Fi Improvements。若无法直接访问,可使用互联网档案馆的 存档 查看。
示例:BCM4301、BCM4303、BCM4306 rev 2
根据参考文献,上述型号的网卡只能使用 bwi 驱动。
首先,在 /boot/loader.conf 文件中添加以下配置,设置系统在启动时加载 bwi 驱动:
然后使用 ports 安装 Broadcom 无线设备的固件(该固件未提供二进制包):
可先通过 USB 或以太网共享网络来安装,也可以提前将所需依赖下载到指定目录。
在 /etc/rc.conf 文件中添加以下配置,将物理无线设备 bwi0 绑定到 wlan0 接口:
完成上述配置后,重启系统即可。
示例:配置 bwn 驱动
安装 Broadcom 无线设备的固件:
博通网卡驱动相关文件结构
编辑 /boot/loader.conf 文件添加以下配置,设置系统在启动时加载 bwn 驱动:
在 /etc/rc.conf 文件中添加以下配置,将物理无线设备 bwn0 绑定到 wlan0 接口:
附录:特殊型号需要编译内核
对于一些特殊型号的博通无线网卡,可能需要重新编译内核才能获得完整支持。
在 FreeBSD Broadcom Wi-Fi Improvements(若无法访问,可参考互联网档案馆的 存档 )中列出的部分型号带有 $ 注释:The optional bwn(4) PHY driver is derived from b43 GPL code, and must be explicitly enabled.,表示需要使用基于通用公共许可证(GNU General Public License,GPL)协议的代码。由于 FreeBSD 基本系统及内核去除了 GNU 组件,因此需要重新编译内核以支持该选项。
上述命令中,/usr/src/ 为 FreeBSD 内核源码安装目录,需注意根据实际架构选择相应的配置文件目录。
然后在 /boot/loader.conf 文件中添加以下配置:
完成后重启系统,使用 ifconfig 检查是否存在 wlan0 接口,然后按照前文教程进行配置。
参考文献
故障排除概述
在配置无线网络的过程中,可能会遇到一些常见问题,以下是相关的故障排除方法。
如果连不上或者搜不到特定信道
无线网络的区域码设置会影响可用的信道列表。可尝试调整无线区域码设置。
在 /etc/rc.conf 中添加以下配置:
该配置在创建 wlan0 接口时设置无线国家码为 CN,使用无特定无线频段限制。
完成配置后,重启系统。
断开 WiFi
禁用 wlan0 接口:
WPA 验证
在 /etc/rc.conf 中配置 wlan0 接口使用 WPA,并设置静态 IP 地址和子网掩码:
设置静态 IP
为 wlan0 接口配置静态 IPv4 地址和子网掩码:
开启无线热点
在配置无线热点前,需要确认网卡是否支持 hostap 模式。可通过以下命令列出 wlan0 接口支持的无线功能和能力:
若输出中包含 HOSTAP,则说明该网卡支持 hostap 功能。
确认网卡支持后,销毁现有 wlan0 接口并释放其占用的资源:
重新创建 wlan0 接口并配置为热点模式:
第一条命令创建 wlan0 接口,绑定到 rtwn0 并设置为 Host AP 模式;第二条命令配置 wlan0 的 IP 地址、SSID、无线模式和信道。

附录:图形化网络配置工具
FreeBSD 提供了图形化网络管理工具,功能类似于 Linux 的 Plasma NetworkManager 或 NetworkManager。
使用 pkg 安装:
或者使用 Ports 安装:
课后习题
使用两种不同厂商的无线网卡(如 Realtek 和 Intel),分别在 FreeBSD 上创建虚拟无线接口并连接同一 AP,使用
systat -if监控两者的流量差异。配置 FreeBSD 为无线热点(Host AP 模式),修改默认信道和发射功率参数,使用另一设备连接并测试信号强度变化。
查阅 FreeBSD 源码中
wlan接口的创建逻辑,复现其最小实现,分析为什么系统采用“物理网卡 + 虚拟接口”的分层架构而非直接管理物理设备。
最后更新于