OpenWRT 路由器快速漫游(802.11r)配置教程以及深度解析

2022-08-21 14:25:43 512点赞 3535收藏 167评论

写个开头

Wi-Fi技术在经历多次更迭以后,现在已经来到了第六代。但是除了速度的提升以外,其他方面的变化实在是感知不强(方向错了!)。在最关键的信号覆盖部分,Wi-Fi6更是和以前可以说是么有任何区别。OpenWRT 路由器快速漫游(802.11r)配置教程以及深度解析

由于我家是住别墅的,路由器信号覆盖问题在我这里由其严重。在以前,让家里覆盖Wi-Fi的方法简单粗暴:哪里没网在哪里插个路由器。每个路由器设置不同的名称(ssid)自己手动选。这种方式虽然解决了从0到1的问题,但解决方式实在是不够优雅简洁。

你也可以把家里的Wi-Fi名称改成一样的。这样简洁了,但是不优雅。有些设备不会在不同的路由器之间自动切换,会自己切换的也做不到完全无缝切换。

当然了,优雅的解决方式也不是没有,那就是快速漫游技术。OpenWRT 路由器快速漫游(802.11r)配置教程以及深度解析


什么是快速漫游

在说明什么是快速漫游之前我需要先阐明一个误区:快速漫游和你家里用的组网方式没!有!关!系!

无论你家里是AC+AP还是更加亲民的MESH组网,它们利用的漫游协议是一!样!的!

更准确来说,组网方式解决的是路由器和ap之间互相通讯的问题,而快速漫游解决的是你的手机在不同Wi-Fi节点中切换的问题,他们就不是一个层面上的东西!

很多人认为路由器是mesh的,那么手机就可以漫游了。这是一个错误的观点!如果路由器支持mesh但是不支持漫游协议,那么他的漫游效果和两家不同品牌的路由器混搭没!有!区!别!(不过现在的mesh一般都有漫游,吧OpenWRT 路由器快速漫游(802.11r)配置教程以及深度解析

快速漫游

快速漫游不是一个单独的协议。它其实包含了三个单独的协议,802.11k, 802.11v, 802.11r, 分别达成了漫游的一部分功能。尽管这些协议早在2008年就已经问世,但由于当时没有太大用处,也不是强制性的协议,直到10多年后的今天才受到了关注。关于每个协议的细节可以参考苹果的科普,比我讲的肯定要好多了OpenWRT 路由器快速漫游(802.11r)配置教程以及深度解析

https://support.apple.com/zh-cn/HT202628

在这三个协议中,最重要也是最指标性的就是802.11r了。其他两个更多是向你的手机提供关于漫游方面的建议,建议予不予以采用完全是取决于手机优化(不调,好不?发布!)。而802.11r是实实在在的一个认证协议,大幅缩短了切换过程中所需的时间。不完全准确的解释:以前切换是先和前一个wifi断开,然后连上新的wifi。而现在,是先连上新的wifi然后和前一个wifi断开

802.11r和以往认证方式所需时间对比802.11r和以往认证方式所需时间对比

802.11r还有些别名:Fast BSS Transition, Fast Transition, FT。这些可能会在你读log或者查英文资料的时候用得到。

这篇文章接下来也会详细说明关于手动配置802.11r中会遇到的一些坑。


OpenWRT

当然了,看到这个标题点进来的人应该都对快速漫游有一定了解了,不是来听我bb浅显的知识的。玩openwrt(op)的大佬也估计知道80211r在op里面就是一个开关,选了就行。然而事实并没有那么简单。我翻遍了中文互联网,发现没有一篇文章的教程是对的。我想我这篇可能是第一个……OpenWRT 路由器快速漫游(802.11r)配置教程以及深度解析

关于如何安装OpenWRT我就不多赘述了,网上教程很多,过程也很麻烦,每个路由器都不一样。我就简单介绍一下我的设备

WSR-2533DHPLWSR-2533DHPL

WSR-600DHPWSR-600DHP

两台都是日拍上捡的垃圾,运行的是op官方系统21.02.3。两个机器都是日本特供货,国内估计见不着,没有广告嫌疑。(不得不吐槽一下日本路由器原厂固件那简直就是垃圾中的战斗机,tp-link都自愧不如)OpenWRT 路由器快速漫游(802.11r)配置教程以及深度解析


配置快速漫游

第一步

原版op固件为了节省空间,自带的wpad库是残血的。因为我们需要用到满血wpad的一些功能,需要先安装满血库。如果你的op自带了wpad-openssl 或者 wpad-wolfssl(国人自己编译的很多都是),那可以跳过这步。

中文界面也是一样中文界面也是一样

进入 System -> Software

先在installed里找到自带的wpad,卸载

接着点击update lists,随后在available里搜索wpad-wolfssl,最后安装即可。

在安装过程中不要刷新或者断电,静静地等就行,国内可能慢点。主要是,我以前这么做变砖了……(现在我都是ssh命令行操作了,不信任web)


第二步

进入 Network -> Wireless,找到你想支持快速漫游的那个无线网络,点击 edit 编辑

选择你想要修改的Wi-Fi选择你想要修改的Wi-Fi

进入wireless security选项,这里也是我们的重点

重点!!!重点!!!

进入这里我们能看到大大的 “802.11r Fast Transition” 选项。是不是以为勾选了这个就万事大吉了?No no no~ 看到勾选了以后下面跳出来的选项了吗?OpenWRT不当人的一点就是,它这里给的默认值是坏的,你如果不做调整,别说快速漫游了,还会报错,增加切换所需时间OpenWRT 路由器快速漫游(802.11r)配置教程以及深度解析。 这些选项我们一个一个来看

  • NAS ID:每个设备对应一个唯一的ID,不能重复。这里不填就行,会自动生成的

  • Mobility Domain:用于认证的一个统一的四位号码。所有无线网络填一样的就行。建议填 1111 或者 1221 这种从左从右读起来都一样的,不然可能会和别的公司的设备不兼容(big endian little endian 自行百度)

  • Reassociation Deadline:这里的默认数值是1000,需要改成20000

  • FT protocol:选择 FT over the Air

  • Generate PMK locally: 如果你的加密方式是WPA3,不要勾选。如果你的加密方式是WPA2,可以选择勾选。

  • 下面那些就默认即可

以上任何一个选项填写不正确都有可能导致快速漫游不工作。这里我们重点讲解一下Reassociation Deadline 和 FT protocol 两个

Reassociation Deadline 意思为重新连接期限。这个数值在Cisco和UniFi的设备上默认数值都是20000(20秒),但不知道为什么op却把这个数值设定为了1000(1秒)。经测试,1000会在苹果手机上会疯狂报错(Rekeying PTK for STA xx:xx:xx:xx:82:11 but driver can't safely do that.),而20000则没问题。

FT protocol 决定了快速漫游的技术细节。可选方式为over the Air 和 over DS。设备漫游的过程中是需要和新的wifi节点交换验证信息的。如果是over the Air方式,设备需要自行把验证信息传送给新的节点;而在over DS方式里,设备只需要和当前的节点说一声,当前节点就会把验证信息通过网线直接发送给新的节点,设备直接换过去就行了。看起来over DS方式更加的高大上,但现实它却是个陷阱:没有设备支持over DS!就算是苹果也只支持over the Air,更不提各自优化的各大安卓厂商了。

这部分在外网的讨论详见这篇帖子:https://forum.openwrt.org/t/802-11r-fast-transition-how-to-understand-that-ft-works/110920

至此,配置方面就告一段落了。如果你跟着这篇文章走了一遍,并且你的手机也支持802.11r,那么你已经做到了真正的全屋快速漫游!OpenWRT 路由器快速漫游(802.11r)配置教程以及深度解析



验证

然而我们求知的步伐不能在此停下。即使设置好了802.11r,我们怎么才能知道它是否真的在工作呢?同样的,我在网上找了一圈,发现所有的文章也都是草草了事,验证方法也是或基于玄学,或浮于表面。那只能我亲自上场教学一下如何科学地验证漫游是否在工作,且如果出现了问题,你也能迅速定位问题所在。

验证需要以下几个工具:

  • 支持快速漫游的手机(iPhone是肯定可以,安卓你很难知道它支不支持)

  • 手机安装监测Wi-Fi漫游的软件。第一推荐WiFiman,是个ubiquiti的配套软件,很好用,信息显示也很全。其次可以用tplink的网络百宝箱,也还算好用。安卓端还推荐一个wifi analyzer软件,可以用来分析信号

  • 电脑ssh连接路由器。很多人喜欢用putty,不过我喜欢直接命令行ssh。这里涉及命令行,要用到专业知识,不过都是复制粘贴,难度不大。可能比较劝退,我就不解释了,如果有不懂的请百度OpenWRT 路由器快速漫游(802.11r)配置教程以及深度解析

准备好以后我们就可以开始了。可以先快速在wifi analyzer里看一看协议里有没有 +FT。如果没有的话可能路由器设置有问题,或者你的手机不支持。苹果用户没有,或者安卓用户没找到这个软件也没关系,不影响我们之后的步骤。

OpenWRT 路由器快速漫游(802.11r)配置教程以及深度解析


首先我们需要ssh连接路由器更改几个设置。输入以下几条命令

root@OpenWrt:~# uci set wireless.radio0.log_level=1

root@OpenWrt:~# uci commit wireless

root@OpenWrt:~# wifi up

root@OpenWrt:~# grep _level /var/run/hostapd-phy0.conf # 保证你的输出和下面对的上就行

logger_syslog_level=1

logger_stdout_level=1

这里我们做的是让 openwrt 的 log 打印更多东西。原本关于快速漫游的信息在log里是不显示的。

准备工作已经做好,现在你需拿出手机,打开监测漫游的软件,在房间里走来走去让手机漫游个几次。

网络百宝箱网络百宝箱

在手机漫游的过程中,设备漫游的相关信息也会在路由器的log里被记录下来。这时候只要我们查看log数据就可以知道手机是否使用了快速漫游。

回到ssh窗口,输入logread命令并按下回车。这时你的命令行会打印一大堆log。如果你发现log结尾有这样的内容

daemon.debug hostapd: wlan0: STA e0:...:30 WPA: FT authentication already completed - do not start 4-way handshake

那么你的快速漫游已经成功了。但是如果你发现你的log有这样的内容

Wed Nov 3 21:45:48 2021 daemon.debug hostapd: wlan0: STA 70:8a:09:df:f1:bc WPA: sending 1/4 msg of 4-Way Handshake

Wed Nov 3 21:45:48 2021 daemon.debug hostapd: wlan0: STA 70:8a:09:df:f1:bc WPA: received EAPOL-Key frame (2/4 Pairwise)

Wed Nov 3 21:45:48 2021 daemon.debug hostapd: wlan0: STA 70:8a:09:df:f1:bc WPA: sending 3/4 msg of 4-Way Handshake

Wed Nov 3 21:45:48 2021 daemon.debug hostapd: wlan0: STA 70:8a:09:df:f1:bc WPA: received EAPOL-Key frame (4/4 Pairwise)

那说明你的手机没有使用快速漫游,而是用了传统的龟速切换方式。要么你的手机不支持802.11r,要么你的配置和你的手机不兼容。如果有别的报错的话,可以通过报错信息查看问题出在哪里。


有些小伙伴可能会说:诶不对啊,我看别人都是通过延迟和丢包看漫游有没有成功的呀!OpenWRT 路由器快速漫游(802.11r)配置教程以及深度解析 在我看来,这种方法就是玄学。有丢包不一定是漫游的问题,没有丢包也可能是手机优化好(iPhone就是如此)。不过玄学也不是没有可取之处。基本上正常连接无丢包的话,漫游时出现了1次丢包,90%概率快速漫游没有工作;出现2次丢包,概率就是99%。


总结

我觉得这篇文章对于802.11r讲解的也是比较全面了,如果有什么我说的不周到的、有疑问的也请在评论区提出OpenWRT 路由器快速漫游(802.11r)配置教程以及深度解析 。快速漫游的 k v 协议在openwrt里也是个坑,不过没有 r 那么深,如果感兴趣的人多的话我也可能深入讲解一下。

我本来也是个小白,本着求知的心态在外网学习了一圈终于是搞懂了许多根本没有官方解释的深坑,但也还有很多东西等着我去学习。撰写这篇文章的时间点是2022/8/20,本人这篇教学仅对这个时间点负责,很多问题以后openwrt也可能会修复(也可能不会)。

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起

Xiaomi 小米 AX3000T 双频3000M 家用千兆Mesh路由器 Wi-Fi 6 白色 单个装

Xiaomi 小米 AX3000T 双频3000M 家用千兆Mesh路由器 Wi-Fi 6 白色 单个装

99元起

Xiaomi 小米 BE6500 Pro 双频6500M 家用千兆Mesh无线路由器 Wi-Fi 7

Xiaomi 小米 BE6500 Pro 双频6500M 家用千兆Mesh无线路由器 Wi-Fi 7

535元起

Ruijie 锐捷 雪豹 X30E 双频3000M 家用千兆Mesh无线路由器 Wi-Fi 6 白色 单个装

Ruijie 锐捷 雪豹 X30E 双频3000M 家用千兆Mesh无线路由器 Wi-Fi 6 白色 单个装

159元起

ZTE 中兴 AX3000 巡天版 双频3000M 家用千兆Mesh无线路由器 Wi-Fi 6 单个装 白色

ZTE 中兴 AX3000 巡天版 双频3000M 家用千兆Mesh无线路由器 Wi-Fi 6 单个装 白色

146元起

ASUS 华硕 RT-BE88U 双频7200M 家用Mesh无线路由器 Wi-Fi 7 黑色 单个装

ASUS 华硕 RT-BE88U 双频7200M 家用Mesh无线路由器 Wi-Fi 7 黑色 单个装

1999元起

Xiaomi 小米 BE3600 2.5G版 3600M 双频千兆家用无线路由器 Wi-Fi 7 白色

Xiaomi 小米 BE3600 2.5G版 3600M 双频千兆家用无线路由器 Wi-Fi 7 白色

219元起

Redmi 红米 AX6000 双频5952M 家用千兆Mesh无线路由器 Wi-Fi 6 单个装黑色

Redmi 红米 AX6000 双频5952M 家用千兆Mesh无线路由器 Wi-Fi 6 单个装黑色

319元起

Xiaomi 小米 AX6000 双频6000M 家用千兆Mesh无线路由器 Wi-Fi 6 单个装 黑色

Xiaomi 小米 AX6000 双频6000M 家用千兆Mesh无线路由器 Wi-Fi 6 单个装 黑色

299元起

HUAWEI 华为 BE3 Pro 双频3000M 千兆家用路由器 Wi-Fi 7 黑色

HUAWEI 华为 BE3 Pro 双频3000M 千兆家用路由器 Wi-Fi 7 黑色

249元起

Xiaomi 小米 BE7000 三频千兆Mesh无线路由器 Wi-Fi 7

Xiaomi 小米 BE7000 三频千兆Mesh无线路由器 Wi-Fi 7

406元起

ZTE 中兴 问天BE7200Pro+ 双频7200M 家用千兆Mesh无线路由器 WiFi 7 黑色

ZTE 中兴 问天BE7200Pro+ 双频7200M 家用千兆Mesh无线路由器 WiFi 7 黑色

594元起

京东云 BE6500 千兆无线路由器 WiFi7

京东云 BE6500 千兆无线路由器 WiFi7

586.01元起

TP-LINK 普联 BE5100 双频5100M 家用千兆Mesh无线路由器 Wi-Fi 7 黑色 单个装

TP-LINK 普联 BE5100 双频5100M 家用千兆Mesh无线路由器 Wi-Fi 7 黑色 单个装

279元起

TP-LINK 普联 飞流系列 TL-XDR5480 易展Turbo版 双频5400M 家用千兆Mesh无线路由器 WiFi 6 单个装 灰色

TP-LINK 普联 飞流系列 TL-XDR5480 易展Turbo版 双频5400M 家用千兆Mesh无线路由器 WiFi 6 单个装 灰色

379元起

HUAWEI 华为 Q6 网线版 双频3000M 千兆Mes无线分布式路由器 Wi-Fi 6 一母三子装 白色

HUAWEI 华为 Q6 网线版 双频3000M 千兆Mes无线分布式路由器 Wi-Fi 6 一母三子装 白色

397元起

ZTE 中兴 巡天AX3000Pro+ 双频3000M 家用千兆Mesh无线路由器 Wi-Fi 6 白色 单个装

ZTE 中兴 巡天AX3000Pro+ 双频3000M 家用千兆Mesh无线路由器 Wi-Fi 6 白色 单个装

269元起
167评论

  • 精彩
  • 最新
  • r对于家用psk方式用处不大,反而会引起一些兼容性问题,更应该使用kv,让客户端自己决定漫游。

    校验提示文案

    提交
    r不是强制性的,如果设备不支持也还是可以走普通的认证方式的(802.11i)

    校验提示文案

    提交
    偶尔会出现抱着弱信号的那个路由不放,或者不自动连到5G信道

    校验提示文案

    提交
    还有17条回复
    收起所有回复
  • 我想知道,别墅有多大?我只是住的400+的大平层。

    校验提示文案

    提交
    我国内家四层楼加起来也才400多 [狂汗]

    校验提示文案

    提交
    国外家呢?

    校验提示文案

    提交
    还有6条回复
    收起所有回复
  • 这个是不仅需要手机支持,还需要路由器支持802.11r这个协议吧

    校验提示文案

    提交
    和路由器硬件没关系,主要是软件层面上的。所以只要刷了openwrt就支持了

    校验提示文案

    提交
    这么厉害👍🏻有空试试看看

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • big endian,little endian 那里不对呀,没有对十进制大小端的道理,就算有,影响的只是数据在内存中的存储情况,对外该是多少就是多少 [疑问]

    校验提示文案

    提交
    具体我也记得不清楚了,老外论坛上看到的,反正就是就是某个公司写了个bug,中间论证过程我没想明白,最后结论就是我文中那样。无伤大雅,相信网友的判断吧 [高兴]

    校验提示文案

    提交
    你说的这个是本来的意思。实际上也存在lz文章里说的这种通讯过程中高低字节先后的问题。

    校验提示文案

    提交
    收起所有回复
  • 目前主流的AX路由的选择困境:
    1.用原厂系统,大部分不能做IPv6的Port forwarding,有的可以直接关闭IPv6的防火墙。虽然理论上IP6不需要Port forwarding,可以IPv6直接暴露在公网,但是还是风险太大,海量v6地址加指定端口开放好点
    2.刷Openwrt,例如360 v6,小米AX3600,AX6s,刷完IPv6防火墙或者说端口开放解决了,但是Mesh基本废了,Openwrt的OpenMesh也没有个成熟的配置教程。

    校验提示文案

    提交
    想看的话我可以写一篇,没人写但实际不是很难

    校验提示文案

    提交
    easymesh [高兴]
    编译的时候选上就行

    校验提示文案

    提交
    还有5条回复
    收起所有回复
  • 看完了,省流:别折腾,组mesh

    校验提示文案

    提交
    mesh和漫游不是一个层面的东西,根本不搭界。怀疑没有读 [皱眉]

    校验提示文案

    提交
    mesh ,ac+ap,懂?有一个纸上谈兵的,估计还在用小米,华为硬路由

    校验提示文案

    提交
    还有2条回复
    收起所有回复
  • 好像只有才用高通芯片的才能支持r,之前家里组ac+ap,tplink的ap1200和ap1700两个系列用的是高通芯片支持r,其他的ap1900,ap2600都是mtk不支持,整个网络内有一个不支持,整个网里r也开不了。

    校验提示文案

    提交
    我用的路由器是联发科的……

    校验提示文案

    提交
    收起所有回复
  • 这个教程是可以实现openwrt和品牌mesh路由器的漫游?

    校验提示文案

    提交
    像ubiquiti这种高级的给用户开放配置的可以,但是一般家用路由器固件很封闭,不行

    校验提示文案

    提交
    收起所有回复
  • 问一下,这个要求所有组网的路由都是op吧?每个都设置一次?

    校验提示文案

    提交
    是的。

    校验提示文案

    提交
    k2p使用的老毛子固件能用吗?

    校验提示文案

    提交
    收起所有回复
  • 请教一下两个无线的信道要调成一样吗,那个域是要漫游的几个同名无线填一样?像有几组互相隔离的无线都要开启漫游这种情况该怎么填

    校验提示文案

    提交
    理想情况是使用不同信道,这样的话两个信号间不会有任何干扰。是否需要使用相同信道取决于你是有有使用无线桥接。无限桥接要求天线频率一致,所以只能使用相同信道。

    校验提示文案

    提交
    收起所有回复
  • 最后几个工具求链接,百度搜的都不能用。。。

    校验提示文案

    提交
    试试必应吧,或者apkpure上面找找有没有安装包。我是直接Google play下的……

    校验提示文案

    提交
    收起所有回复
  • 是不是这样设置以后可以达到 Mesh同样的效果?

    校验提示文案

    提交
    漫游分为k,v,r三个部分,这篇文章只讲了r这一部分。现在一般mesh支持r的不多,一般只支持k和v

    校验提示文案

    提交
    收起所有回复
  • 不同品牌路由器刷了op都可以这样无缝漫游吗

    校验提示文案

    提交
    对的 [高兴]

    校验提示文案

    提交
    收起所有回复
  • 鱼塘大把的运营商wifi6路由器100不到,都支持mesh,多多的360T7也只要135,不刷机不折腾,有其他需求就再加个ipq6000的openwrt。有人会说MESH只是组网方式,跟KVR是两个层面的东西,可大多数用户只是需要一个结果,不在乎过程。

    校验提示文案

    提交
    现在卖的新的路由器原厂大都是有kv的,但是r只有极少数有。这篇文章主要还是献给已经刷了openwrt热爱折腾的人吧,普通人的话原厂廉价路由器也是个不错的选择

    校验提示文案

    提交
    收起所有回复
  • 真的是全网第一个把这事说明白的

    校验提示文案

    提交
    确实是, 楼主写的够详细, 晚点试试!

    校验提示文案

    提交
    你让我2018年发的文章情何以堪去看看,不过比我这半吊子写的好

    校验提示文案

    提交
    还有2条回复
    收起所有回复
  • 还好,我住的1000平大平层厂房

    校验提示文案

    提交
    以厂为家的公司老总你好!

    校验提示文案

    提交
    收起所有回复
  • 这个我有经验,openwrt的漫游802.11r会受限于cpu型号不同,无线模块型号不同等问题,导致丢包;如果只设置2.4G漫游,又容易出现抱着2.4Gwifi不放(不会自动连接5G),设置弱信号踢,又会出现各种奇怪BUG。后来自己编译LEDE的版本可玩性高点,稳定一点,但是BUG偶尔存在。最后还是老毛子稳定。可能我玩的主要是MT7621和MT7620,家里3个路由器。802.11r这协议已经落后了,还是玩有线mesh吧,不过LEDE的mesh有bug...(测试了很久)

    校验提示文案

    提交
  • 很好的帖子,以后刷OP用得上,收藏了。目前用的自己刷的4台集客AP,没有边走边玩手游的习惯,也不知道到底漫游效率怎么样,抽空用你介绍的功率测试一下 [高兴]

    校验提示文案

    提交
  • 我想问一下,软路由拨号,两个AP怎么设置

    校验提示文案

    提交
    组mesh呗

    校验提示文案

    提交
    收起所有回复
  • 快进来我的收藏夹食灰吧 [嘿嘿] [嘿嘿]

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关好价推荐
查看更多好价

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
3.5K
扫一下,分享更方便,购买更轻松