2.1 的接力里,手机连 WiFi 那一步是"hostapd 管进门"。这章就讲 hostapd:它怎么把一块无线网卡变成你家的 WiFi 热点,设备上 WiFi 时经历的扫描 / 认证 / 关联三步,以及 WPA 加密握手。然后落到 /etc/config/wireless——你会看到一个熟悉的分离:radio 硬件(wifi-device)vs 一个 SSID(wifi-iface),和 2.2 的 device/interface 是同一种思路。WiFi 说到底是链路层(0.2)的一种,hostapd 管的就是"谁能进这个二层网、进之前怎么验证加密"。
hostapd 是 WiFi 接入点(AP)守护进程:把一块无线网卡变成热点,广播 SSID、处理设备的关联请求、做 WPA 认证和加密握手——即"管理谁能连上你的 WiFi、怎么加密"。
1hostapd:把网卡变成 AP
一块无线网卡有两种角色:客户端(station)——连别人的 WiFi(你手机平时的样子),由 wpa_supplicant 管;AP(access point)——自己开一个 WiFi 让别人连(你路由器的样子),由 hostapd 管。hostapd 干的事:广播 beacon(定期发信标帧,宣告"这里有个叫 XXX 的 WiFi"——你手机扫到的 SSID 列表就是收到的 beacon)、处理接入(设备来连时做 802.11 认证 + 关联 + WPA 握手)、管理每个设备的加密密钥。
关键:WiFi 是链路层(0.2)技术。hostapd 管的是二层接入——谁能加入这个无线二层网络、加入前怎么验证和加密。它不碰 IP(那是设备连上后 dnsmasq 发 DHCP 的事,2.3)。
回想 0.2:有线以太网里,插上网线就在二层网里了(物理连接即接入)。WiFi 没有网线,"插上"被换成一套无线握手——hostapd 就是那个门卫,决定谁的握手通过、发给谁加密钥匙。有线的"物理接入"在无线里变成了"认证接入",这是 WiFi 相对有线多出来的一层。
2上 WiFi 三步 + WPA 握手
设备上 WiFi 走三步(设备侧发起,hostapd 响应):
- 扫描(scan):设备监听各信道的 beacon,或主动发探测请求,找到可用 SSID(你手机看到的 WiFi 列表)。
- 认证(authentication):802.11 层面的握手(开放系统认证,现代基本走个过场,真正的安全靠下面的 WPA)。
- 关联(association):设备请求加入这个 AP,hostapd 接受后设备就"关联"上了——此时它在二层网里,但流量还没被允许(要先过加密握手)。
关联后做 WPA2/WPA3 四次握手协商加密:用共享密码(PSK,你的 WiFi 密码)+ 一套算法,AP 和设备互相证明"都知道密码",并派生出这次会话的加密密钥。密码本身不在空中传输——四次握手交换的是随机数,双方各自用"密码 + 随机数"算出相同的会话密钥,之后这台设备的无线流量都用它加密。
"用共享秘密派生会话密钥、且秘密不上线"的思路,和 0.5 的 TLS 精神一致(都为在不安全信道上安全通信),只是 WPA 用预共享密码、作用在无线链路层;TLS 用证书 / 非对称加密、作用在传输层之上。WPA3 进一步用 SAE,让即使密码弱也难被离线破解。你抓 WiFi 包只看到密文,正是这层加密在起作用。一句话:2.1 的"hostapd 管进门",展开就是扫描找到门 → 认证敲门 → 关联进门 → WPA 握手拿到屋里的加密钥匙,之后才轮到 dnsmasq 发 IP。
3配置模型:wifi-device vs wifi-iface
OpenWRT 的 /etc/config/wireless 分两种段——又是 2.2 那个"硬件 vs 其上的逻辑"分离:
WPA3 · network = lan
WPA2 · network = guest
- wifi-device:一块物理无线电(radio),如 radio0(2.4GHz)、radio1(5GHz)。配硬件层面的东西:频段、信道、信道宽度、发射功率、国家码。
- wifi-iface:这块 radio 上广播的一个 WiFi 网络(一个 SSID)。配 SSID 名、加密方式、密码、并入哪个 network。一块 radio 可有多个 wifi-iface(主网 + 访客网),共享硬件但各有 SSID / 密码 / 网络归属。
config wifi-device 'radio0'
option type 'mac80211'
option band '5g' # 频段(5GHz)
option channel '36' # 信道
option htmode 'HE80' # 宽度/模式(WiFi6 80MHz)
option country 'CN'
config wifi-iface 'default_radio0'
option device 'radio0' # 属于哪块 radio
option network 'lan' # 并入 lan(桥进 br-lan!)
option mode 'ap' # 当 AP(→ 起 hostapd)
option ssid 'MyHome-5G'
option encryption 'sae-mixed' # WPA2/WPA3 混合
option key '你的WiFi密码'
两个关键点:mode 'ap' 让 netifd 起 hostapd 把它当 AP(若 mode 是 sta 则起 wpa_supplicant 当客户端);network 'lan' 把这个 WiFi 桥进 lan——回到 2.1 接力第 2 步"netifd 把无线接口桥进 br-lan"、2.2 的 device/interface:无线设备由此加入 br-lan 二层网,和有线设备同网段、由同一个 dnsmasq 发 IP。
又见"硬件 vs 其上的逻辑网络"分离:2.2 是 device(br-lan)vs interface(lan);这里是 wifi-device(radio0 硬件)vs wifi-iface(一个 SSID)。同一种设计——把物理资源和逻辑配置分开,让一块硬件承载多个逻辑单元(一块 radio 多个 SSID)。理解了一个,就理解了另一个。
4频段、信道、加密怎么选
- 频段(band):2.4GHz 穿墙好、覆盖远,但慢、信道少(1/6/11 不重叠)、干扰多——适合远处 / 穿墙 / IoT;5GHz 快、信道多、干扰少,但穿墙差、覆盖近——适合近距离高速;6GHz(WiFi 6E/7)更宽更干净,但穿墙更差、需新设备。双频路由器同开 2.4+5,让设备自选。
- 信道(channel)与宽度:同频段内选干扰小的信道(2.4G 尽量 1/6/11 之一);宽度越大越快但越易被干扰,5G 常用 80MHz,拥挤环境降到 40MHz 更稳。
- 加密(encryption):用 WPA3(
sae)或混合(sae-mixed,兼容老设备);别用 WEP(早被破),别开无密码开放网络(除非刻意做公共热点 + 隔离)。
2.4G 被邻居挤(换信道)、5G 穿墙弱(靠近或加 AP)、信道宽度太贪(降宽度更稳)——都在 wifi-device 段调。而"访客 WiFi 隔离"就是加一个 wifi-iface(独立 SSID)+ 把它 network 指向一个独立的 guest 接口 / 区域(2.4 的 zone)——WiFi 配置和前面的网络 / 防火墙配置在这里合流。
到这你能看清路由器的无线怎么和其余部分拼起来:wifi-iface(2.5)桥进某个 network(2.2)→ 该 network 属于某个防火墙 zone(2.4)→ 设备连上后由 dnsmasq 发 IP(2.3)。访客网就是"独立 SSID + 独立网段 + guest 区域(禁止 forward 到 lan)"——Phase 2 学的几块(无线 / 网络 / DHCP / 防火墙)在一个访客网里全用上了。
本章小结
- hostapd 把无线网卡变成 AP(广播 SSID、处理接入、管加密);WiFi 是链路层(0.2),它管"谁能进这个二层网、怎么验证加密",不碰 IP。
- 上 WiFi 三步:扫描 → 认证 → 关联;连上后 WPA 四次握手用共享密码派生会话密钥(密码不上线,思路近 0.5 TLS)。这是 2.1"进门"的展开。
- 配置模型:wifi-device(radio 硬件:频段 / 信道 / 宽度)vs wifi-iface(一个 SSID:名 / 加密 / 密码 / network);一块 radio 可多 SSID。和 2.2 的 device/interface 同一思路。
mode 'ap'→ 起 hostapd;network 'lan'→ 桥进 br-lan(2.1/2.2),无线有线同网段同 DHCP。- 频段 / 信道 / 加密按需选;访客网 = 独立 SSID + 独立网段 + guest 区域(2.4),Phase 2 各块在此合流。
动手练习
- 若有 OpenWRT:
cat /etc/config/wireless,认出 wifi-device(radio)和 wifi-iface(SSID)两种段;找出 mode / ssid / encryption / network。 - 用
iw dev看无线接口,iw dev <wlan> station dump看连上的设备(每个是一条 station);对照"关联"的概念。 - 思考题:为什么 WiFi 密码不会在连接时"明文发到空中"?WPA 四次握手交换的到底是什么?(随机数;双方各自用密码 + 随机数算出相同会话密钥。)
- 进阶:设计一个访客 WiFi 方案,列出要动的几处:wireless 加一个 wifi-iface(2.5)、network 加一个 guest 接口(2.2)、firewall 加一个 guest zone 且禁止 forward 到 lan(2.4)、dhcp 给 guest 发地址(2.3)。把 Phase 2 四块串起来。