通知 欢迎关注我的店铺天天软件圆

OpenWrt无缝漫游:手把手配置WPA3 + 802.11kvr优化家庭Wi-Fi

2025-03-05
0评论
/
阅读
爱搜啊

手把手配置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, 同上。

  1. option ieee80211v '1' 是多余的设置已被弃用

  2. wnm_sleep_mode WiFi 客户端待机睡眠模式

  3. bss_transition AP 会发生指令给 WiFi 客户端,推荐最佳信号的 AP 供链接,但是客户端连不连,AP 就管不到了。

  4. 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 Airoption 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(已满)

饿了么红包
饿了么红包


本站附件分享,如果附件失效,可以去找找看

诚通网盘附件百度网盘附件

于2025-03-05发布