OpenWrt无缝漫游:手把手配置WPA3 + 802.11kvr优化家庭Wi-Fi
为什么你的家庭Wi-Fi总是不给力?
在折腾家庭无线网络时,许多人会陷入“信号满格却频繁断流”的怪圈。想要实现真正的无缝漫游,单纯堆砌硬件远远不够,802.11k/v/r协议和WPA3加密的合理配置才是关键!然而网上教程要么复制粘贴,要么信息零散,今天我们就用最直白的方式,从零教你打造高性能漫游网络!
一、准备工作:避开新手必踩的坑
1. 安装正确的软件包
- 官方推荐使用`wpad-wolfssl`,它集成了WPA3、Mesh和802.11r功能,体积小且兼容性强。
- 执行命令:
opkg update opkg remove wpad-mini wpad-basic 卸载旧版 opkg install wpad-wolfssl 安装完整支持包
2. AP模式设置
- 多AP组网必须开启纯AP模式(Dumb AP),否则设备列表混乱、DHCP冲突。
- 操作步骤:
- 修改LAN口IP(如`192.168.44.44`),关闭LAN的DHCP服务。
- 永久禁用多余服务(防止重启后失效):
for i in firewall dnsmasq odhcpd; do /etc/init.d/$i disable && /etc/init.d/$i stop done
3. 组播流量优化
- 如果交换机不支持IGMP Snooping,组播流(如IPTV)会拖垮Wi-Fi性能。
- 在OpenWrt的交换机配置中添加:
option igmp_snooping '1'
二、核心配置:一键开启802.11kvr + WPA3
通过SSH直接执行脚本(适配双频路由):
uci set wireless.default_radio0.ieee80211k=1 uci set wireless.default_radio0.wnm_sleep_mode=1 uci set wireless.default_radio0.bss_transition=1 uci set wireless.default_radio0.ieee80211r=1 uci set wireless.default_radio0.mobility_domain=8888 uci set wireless.default_radio0.ft_over_ds=0 uci set wireless.default_radio0.ft_psk_generate_local=0 uci set wireless.default_radio1.ieee80211k=1 uci set wireless.default_radio1.wnm_sleep_mode=1 uci set wireless.default_radio1.bss_transition=1 uci set wireless.default_radio1.ieee80211r=1 uci set wireless.default_radio1.mobility_domain=8888 uci set wireless.default_radio1.ft_over_ds=0 uci set wireless.default_radio1.ft_psk_generate_local=0 uci commit wireless wifi reload
上面的命令会将下面的参数会写到 /etc/config/wireless
option ieee80211k '1' option wnm_sleep_mode '1' option bss_transition '1' option ieee80211r '1' option mobility_domain '8888' option ft_over_ds '0' option ft_psk_generate_local '0'
如果上面参数已经被你改坏掉了,可以删除 /etc/config/wireless,使用WiFi config重新生成配置。
1、802.11k, 官方 OpenWrt Luci没有此项设置,需手动添加option ieee80211k '1'来开启。国内很多 OpenWrt 是有luci配置选项的。
2、802.11v, 同上。
-
option ieee80211v '1' 是多余的设置已被弃用
-
wnm_sleep_mode WiFi 客户端待机睡眠模式
-
bss_transition AP 会发生指令给 WiFi 客户端,推荐最佳信号的 AP 供链接,但是客户端连不连,AP 就管不到了。
-
time_advertisement 广播同步时间,好像就是字面意思,无线数据包中包含时区信息,我也不清楚,OpenWrt邮件是这么说的,我觉得没啥用,不启用了。
3、802.11r, 这个设置官方OpenWrt 已经集成到Luci网页里了。
重要:开了802.11r,部分设备会不兼容 WPA3 或者 WPA3-mixed,可能和系统版本无关,也可能无关,没有太多的数据,没办法找出规律,可以参考官方OpenWrt issue。
进入WEBUI,按照下面进行修改
-
802.11r 打勾
-
NAS ID 不填
-
移动域/Mobility Domain 可以不填
-
重关联截止时间/Reassociation Deadline 填20000
-
FT protocol/FT 协议 选FT over the Air
-
本地生成 PMK/Generate PMK locally 取消勾
-
剩下所有参数全部默认不修改。
参数解释
WPA3 必须取消勾 本地生成 PMK/Generate PMK locally,用户问了hostapd的人,必须 option ft_psk_generate_local '0'
iOS 用户必须将 FT 改为 FT over the Air,option ft_over_ds '0', 这个参数是从Cisco那边抄过来的,链接里还提到了option reassociation_deadline '20000' option max_inactivity '60' 可以试试加了有没有(副)效果。
iOS 提示 hostapd: nl80211: kernel reports: key addition failed 这个错误,OpenWrt开发者提到目前在TODO流程中
NAS ID 为啥不填,OpenWrt Guide要求填,开发者说不填,OpenWrt会用mac代替,因为开发者改代码速度比官方Guide快而已,开发者在论坛回帖子,回复时想起来有个bug,立马提patch。
OpenWrt 开发者给出了他的参数,供参考。
config wifi-iface 'Xxx_radio1' option device 'radio1' option network 'lan' option mode 'ap' option ssid 'Xxx' option encryption 'sae' option key '***' option ieee80211w '2' option ieee80211r '1' option ft_psk_generate_local '0' option ft_over_ds '0' option ieee80211k '1' option bss_transition '1' option ieee80211v '1' option disassoc_low_ack '0'
关键参数解读:
- mobility_domain:所有AP需设置相同ID(如8888),否则无法漫游。
- ft_psk_generate_local=0:WPA3必须关闭本地生成密钥,否则兼容性爆炸!
- ft_over_ds=0:iOS设备必须选择“FT over Air”模式,否则连不上!
三、Web界面补充设置(Luci)
1. 进入无线设置 → 编辑SSID
- 加密方式:选WPA3-SAE(或SAE-mixed兼容旧设备)
- 勾选“802.11r快速漫游”,其他参数保持默认:
- NAS ID留空(OpenWrt自动生成)
- Reassociation Deadline填`20000`
- FT协议选“Over the Air”
2. 避坑指南
- iOS用户注意:若日志出现`hostapd: key addition failed`,升级OpenWrt至最新版即可解决。
- 安卓兼容性:部分旧手机不支持主动漫游,建议手动锁定信号强的AP。
四、效果验证:你的漫游真的成功了吗?
1. iPhone实测法
拿着手机在两个AP间走动,观察系统日志:
- 出现`AP-STA-CONNECTED`表示设备切换成功。
- 若频繁断连,检查ft_over_ds和ft_psk_generate_local参数。
2. 高级调试
- 开启详细日志:
uci set wireless.radio0.log_level=1 1为调试模式 wifi reload
- 查看实时配置:
cat /var/run/hostapd-phy0.conf 确认参数已生效
五、终极工具推荐
- Android:
- `WiFiman`(包名:com.ubnt.usurvey):可视化信号热图,漫游延迟一目了然。
- iOS:
- `Network Analyzer`:扫描周边AP的802.11k/v/r支持状态。
结语
配置完成后,你的家庭网络将实现“真·无缝切换”,看4K视频时边走边刷也不会卡顿!如果遇到问题,牢记三大原则:统一加密方式、关闭本地PMK、FT选Air模式。赶紧动手试试吧,评论区等你晒成果!
(附)一键AP模式脚本
打开SSH,路由先联网,设置路由时间。 安装wpad-wolfssl软件包
opkg update opkg remove wpad-mini opkg remove wpad-basic opkg remove wpad-basic-wolfssl opkg install wpad-wolfssl
自定义下面脚本,IP地址、Wi-Fi密码等
uci set dhcp.lan.ignore=1 uci set dhcp.lan.dhcpv6=disabled uci set dhcp.lan.ra=disabled uci set network.lan.ipaddr='192.168.44.44' uci set network.lan.gateway='192.168.44.1' uci set network.lan.dns='192.168.44.1' uci set network.globals.ula_prefix='' uci set wireless.radio0.channel=auto uci set wireless.radio0.disabled=0 uci set wireless.radio0.country=CN uci set wireless.default_radio0.ssid=Gargoyle uci set wireless.default_radio0.encryption=sae-mixed uci set wireless.default_radio0.key=password uci set wireless.default_radio0.ieee80211k=1 uci set wireless.default_radio0.wnm_sleep_mode=1 uci set wireless.default_radio0.bss_transition=1 uci set wireless.default_radio0.ieee80211r=1 uci set wireless.default_radio0.mobility_domain=8888 uci set wireless.default_radio0.ft_over_ds=0 uci set wireless.default_radio0.ft_psk_generate_local=0 uci set wireless.radio1.channel=auto uci set wireless.radio1.disabled=0 uci set wireless.radio1.country=CN uci set wireless.default_radio1.ssid=Gargoyle uci set wireless.default_radio1.encryption=sae-mixed uci set wireless.default_radio1.key=password uci set wireless.default_radio1.ieee80211k=1 uci set wireless.default_radio1.wnm_sleep_mode=1 uci set wireless.default_radio1.bss_transition=1 uci set wireless.default_radio1.ieee80211r=1 uci set wireless.default_radio1.mobility_domain=8888 uci set wireless.default_radio1.ft_over_ds=0 uci set wireless.default_radio1.ft_psk_generate_local=0 uci set system.@system[0].hostname=Router uci set system.@system[0].zonename=Asia/Shanghai uci set system.@system[0].timezone=CST-8 uci commit /etc/init.d/dnsmasq disable /etc/init.d/odhcpd disable /etc/init.d/firewall disable reboot
点击链接加入群聊四群:722808830
点击链接加入群聊三群:751529538(已满)
点击链接加入群聊二群:376877156(已满)
点击链接加入群聊一群:622891808(已满)
饿了么红包
本站附件分享,如果附件失效,可以去找找看