返回文章列表

红米 AC2100 刷 OpenWrt 实战全记录:从原厂到实现 Mesh 组网与 Wi-Fi 无感切换漫游,附完整踩坑、配置与答疑

从原厂 2.0.23 刷入 OpenWrt,到两台 AC2100 组成有线回程多 AP 漫游网络,这里把步骤、概念和踩坑一次讲清楚

前言

这篇文章记录的是我把两台 Redmi AC2100 刷成 OpenWrt,再把它们配置成有线回程多 AP 漫游网络的完整过程。

我会把下面这些内容全部写清楚:

  • 为什么要刷 OpenWrt
  • Windows 下从原厂刷入 OpenWrt 的完整步骤
  • 刷机过程中遇到的报错和解决方法
  • 为什么有些教程先刷 Breed
  • Mac 和 Windows 能不能刷
  • 必须用网线吗
  • 什么是 AP、NAT、双重 NAT、Mesh、802.11k/v/r、usteer
  • 两台 AC2100 如何配置成有线回程漫游网络
  • 哪些问题是“配置错了”,哪些问题其实是“概念搞混了”

如果你和我一样,一开始对这些词一头雾水,这篇文章应该能帮你少走很多弯路。


一、我的目标是什么

我最初的目标其实很简单:

  1. Redmi AC2100 从原厂系统刷成 OpenWrt
  2. 后续把两台路由器做成覆盖更好的家庭 Wi-Fi
  3. 让手机在家里走动时,Wi-Fi 切换尽量自然一点

最开始我并不是为了“折腾而折腾”,而是因为原厂同名 Wi-Fi 的漫游效果不太理想,所以才想试试 OpenWrt。

后来真正搞懂之后,我发现这件事其实可以拆成两层:

  • 第一层:把路由器刷进 OpenWrt
  • 第二层:把两台路由器组成一个更合理的家庭网络

如果这两层混在一起看,就很容易乱。


二、为什么是红米 AC2100

这台设备的优点是:

  • 价格便宜
  • 社区资料多
  • OpenWrt 有正式支持
  • 对家庭场景来说性能够用
  • 做 AP、做多点覆盖都很有性价比

但一定要先确认型号:

  • 我这里说的是 Redmi AC2100 / RM2100
  • 不要和 小米 AC2100 / R2100 混淆

刷机时镜像下错型号,后面所有步骤都会出问题。


三、为什么很多人会先问:要不要先刷 Breed

我一开始也有这个疑问。

1. Breed 是什么

Breed 不是 OpenWrt,本质上是一个第三方 bootloader

有些教程推荐先刷 Breed,是因为它后面刷固件、救砖、恢复原厂会更方便。

2. 为什么又不建议新手先刷

因为刷 Breed 改的是 bootloader,风险比刷普通固件更高。

普通刷机失败,通常还有机会恢复;
bootloader 真写坏了,恢复难度就会上一个台阶。

3. 我的结论

如果你只是想:

  • 稳稳地刷进 OpenWrt
  • 后续正常用
  • 暂时不折腾各种恢复和多固件切换

那一开始没必要先刷 Breed

对红米 AC2100 来说,按照官方推荐的思路:

  • 原厂降到可利用版本
  • 开 SSH
  • 写入 kernel1rootfs0

就已经够了。


四、刷机前我最先问的几个问题

1. Mac 能不能刷

可以。

Mac 自带:

  • ssh
  • scp
  • 浏览器

理论上很适合刷。

但我最后是用 Windows 操作的,因为当时更方便接网线和做后续调试。

2. Windows 的 PowerShell 是什么,要不要下载

不用下载。

PowerShell 是 Windows 自带的命令行环境,类似:

  • 更现代一点的 cmd
  • 或者 Windows 版的终端命令窗口

这次刷机主要就是用它执行:

  • ssh
  • scp
  • 后面的远程命令

3. 必须接有线网线吗

基本要。

原因很简单:

  • 开 SSH 要稳定
  • 上传镜像要稳定
  • mtd write 这种关键步骤不能靠 Wi-Fi 碰运气

所以这类路由器刷机,正确思路是:

  • 电脑接路由器 LAN
  • 不走 Wi-Fi

如果你用的是 MacBook,没有网口,那就准备一个 USB-C 转 RJ45


五、我实际使用的刷机路径

我最后走的是这条路:

原厂 2.0.23 -> Web Exploit 开 SSH -> 上传 kernel1/rootfs0 -> mtd 写入 -> 重启进 OpenWrt

这条路线的优点是:

  • 风险比先刷 Breed 小
  • 步骤相对清晰
  • 官方和社区资料都比较多

六、刷机前的准备

1. 固件版本

我刷的时候,原厂版本是:

2.0.23

这个很关键,因为后面的 SSH 开启方式和这个版本有关。

2. OpenWrt 文件

第一次从原厂刷,只需要这两个文件:

  • openwrt-25.12.2-ramips-mt7621-xiaomi_redmi-router-ac2100-squashfs-kernel1.bin
  • openwrt-25.12.2-ramips-mt7621-xiaomi_redmi-router-ac2100-squashfs-rootfs0.bin

我当时补全成了下面这组地址,后面如果只是从原厂首次刷入,前两个就够了:

  • kernel1.bin https://downloads.openwrt.org/releases/25.12.2/targets/ramips/mt7621/openwrt-25.12.2-ramips-mt7621-xiaomi_redmi-router-ac2100-squashfs-kernel1.bin
  • rootfs0.bin https://downloads.openwrt.org/releases/25.12.2/targets/ramips/mt7621/openwrt-25.12.2-ramips-mt7621-xiaomi_redmi-router-ac2100-squashfs-rootfs0.bin
  • sysupgrade.bin https://downloads.openwrt.org/releases/25.12.2/targets/ramips/mt7621/openwrt-25.12.2-ramips-mt7621-xiaomi_redmi-router-ac2100-squashfs-sysupgrade.bin

注意:

  • 第一次从原厂刷,不用 sysupgrade.bin
  • sysupgrade.bin 是以后在 OpenWrt 里升级用的

如果想自己找目录,也可以直接打开官方目录:

  • https://downloads.openwrt.org/releases/25.12.2/targets/ramips/mt7621/

另外,小米原厂固件的官方入口是:

  • https://www.miwifi.com/miwifi_download.html

我这里刷机时用的是 2.0.23。OpenWrt 官方 Redmi AC2100 设备页也明确写了:

  • Web Exploit 方法要求原厂是 2.0.23
  • 这个方法也兼容 2.0.503

如果你的机器本身已经是 2.0.23,通常就不用再额外下载原厂固件了。

3. 硬件准备

  • Windows 电脑
  • 一根网线
  • 路由器通电
  • 电脑连接路由器 LAN

七、Windows 下从原厂刷入 OpenWrt 的完整过程

下面这部分,是我实际可走通的一整套步骤。

第一步:登录原厂后台

浏览器打开:

http://192.168.31.1

完成初始化,设置原厂管理员密码。

第二步:获取 stok

登录后台后,浏览器地址栏里会有类似:

http://192.168.31.1/cgi-bin/luci/;stok=xxxxxxxxxxxx/web/home#router

这个 stok 后面要用。

第三步:开启 SSH

先准备一个 SSH 密码,建议:

  • 8 位以上
  • 先别用特殊字符

然后在浏览器地址栏访问用于开启 SSH 的链接,并设置 root 密码。

这一步完成后,路由器就会开放 22 端口。

第四步:SSH 登录测试

在 Windows Terminal / PowerShell 里执行:

ssh root@192.168.31.1

我这里第一次遇到的不是密码错,而是算法问题。

报错是:

Unable to negotiate with 192.168.31.1 port 22: no matching host key type found. Their offer: ssh-rsa

这说明:

  • 路由器 SSH 实际上已经开成功了
  • 只是 Windows 自带的新版 OpenSSH 默认不接受它提供的旧 ssh-rsa

解决命令:

ssh -o HostKeyAlgorithms=+ssh-rsa root@192.168.31.1

第五步:执行保护性命令

我后来把所有“必须先登录 SSH 再手敲”的步骤,都改成了本地直接远程执行,因为 Windows 旧控制台里 SSH 登录后经常不好粘贴。

推荐直接在本地终端执行:

ssh -o HostKeyAlgorithms=+ssh-rsa root@192.168.31.1 "nvram set uart_en=1 && nvram set boot_wait=on && nvram set bootdelay=5 && nvram set flag_try_sys1_failed=1 && nvram commit"

这一组命令的作用主要是:

  • 打开 UART
  • 开启 boot_wait
  • 给后面恢复和排错留一点余地

第六步:上传固件

把两个文件传到路由器 /tmp

scp -O -o HostKeyAlgorithms=+ssh-rsa .\openwrt-25.12.2-ramips-mt7621-xiaomi_redmi-router-ac2100-squashfs-kernel1.bin root@192.168.31.1:/tmp
scp -O -o HostKeyAlgorithms=+ssh-rsa .\openwrt-25.12.2-ramips-mt7621-xiaomi_redmi-router-ac2100-squashfs-rootfs0.bin root@192.168.31.1:/tmp

确认文件存在:

ssh -o HostKeyAlgorithms=+ssh-rsa root@192.168.31.1 "cd /tmp && ls"

第七步:正式刷写

因为文件名太长,手输容易出错,所以后来我总结出两种方式:

方式 A:先改短文件名

在 SSH 中改成:

  • kernel1.bin
  • rootfs0.bin

再刷:

mtd write kernel1.bin kernel1
mtd -r write rootfs0.bin rootfs0

方式 B:直接在本地终端远程执行长命令

我最后更推荐这种:

ssh -o HostKeyAlgorithms=+ssh-rsa root@192.168.31.1 "cd /tmp && mtd write openwrt-25.12.2-ramips-mt7621-xiaomi_redmi-router-ac2100-squashfs-kernel1.bin kernel1"
ssh -o HostKeyAlgorithms=+ssh-rsa root@192.168.31.1 "cd /tmp && mtd -r write openwrt-25.12.2-ramips-mt7621-xiaomi_redmi-router-ac2100-squashfs-rootfs0.bin rootfs0"

注意:

  • 第一条刷 kernel1
  • 第二条刷 rootfs0
  • 第二条命令带 -r,会自动重启
  • 这一步开始不要断电

第八步:进入 OpenWrt

刷完后等待几分钟,然后访问:

http://192.168.1.1

第一次进入 OpenWrt 时,我问过“默认密码是什么”,实际情况是:

  • 很多 OpenWrt 首次进入时是空密码
  • 有时会直接提示你设置密码
  • 如果弹登录框,常见是:
    • 用户名:root
    • 密码:留空

第九步:第一次进入 OpenWrt 时我看到的两个提示

刷完第一次进后台时,我还遇到过两个很容易让人误会的弹窗。

1. 是否在线检查固件更新

OpenWrt 会弹出一个提示,大意是:

  • 要不要去下载站点检查有没有新固件
  • 以后每次打开状态页时都可以检查

这不是报错,也不是刷机失败,只是一个设置确认。

我当时的选择是:

No, disable checking

原因很简单:

  • 刚刷完最重要的是先确认系统正常
  • 这个功能只是“检查是否有新版本”
  • 不是必须功能

2. Configuration / Changes 弹窗

如果你在上一个弹窗里点了关闭检查更新,OpenWrt 会再弹一次配置变更确认。

看到类似:

uci set attendedsysupgrade.client.login_check_for_upgrades='0'

意思其实就是:

关闭登录后自动检查固件更新

这时直接点:

Save & Apply

就行。

这同样不是错误,只是保存配置。


八、刷机过程中我遇到的实际问题

这一部分是我认为最有价值的,因为大部分时间不是花在“官方步骤”上,而是花在这些坑上。

1. SSH 登录报 no matching host key type found

报错:

Unable to negotiate with 192.168.31.1 port 22: no matching host key type found. Their offer: ssh-rsa

原因:

  • 路由器只提供旧的 ssh-rsa
  • Windows OpenSSH 默认不接受

解决:

ssh -o HostKeyAlgorithms=+ssh-rsa root@192.168.31.1

上传文件时也要这样写:

scp -O -o HostKeyAlgorithms=+ssh-rsa ...

2. SSH 登录后无法粘贴命令

这在 Windows 旧 PowerShell 控制台里很常见。

我试过:

  • Ctrl + V
  • 右键粘贴
  • Shift + Insert

都有不稳定的时候。

后来最有效的办法是:

不要先进 SSH 黑框里粘贴,而是在本地终端直接执行远程命令。

也就是这种形式:

ssh root@192.168.1.2 "uci show wireless"

这种写法后来几乎贯穿了我的整个配置过程。

3. 第二台路由器 SSH 提示 REMOTE HOST IDENTIFICATION HAS CHANGED

这是因为:

  • 第一台和第二台在刷机前都用默认地址 192.168.31.1
  • Windows 把第一台的 SSH 指纹记到了 known_hosts
  • 现在第二台也用了同一个 IP,但指纹不同

报错看起来很吓人,但对刷第二台来说通常是正常现象。

解决:

ssh-keygen -R 192.168.31.1

然后再重新连接。

4. 网线插上后提示 Media disconnected

这个问题我也遇到了。

它不是 IP 配置问题,而是:

Windows 根本没检测到有线链路。

最后我的原因很简单:

  • 某个 LAN 口不工作或者接触不好

解决方法是:

  • 换一个 LAN

换口之后立刻就好了。

5. 刷完 OpenWrt 后能进 192.168.1.1,但有线访问不通

我后面又遇到一个很绕的问题:

  • 无线能访问 192.168.1.1
  • 有线却不能访问 192.168.1.1

这通常说明:

  • 主路由本身是活的
  • 电脑有线网卡配置有问题

最常见原因是:

  • 刷机时给 Windows 有线网卡设过静态 IP
  • 后来忘了改回自动获取

如果有这种情况,重点检查:

  • 以太网 IPv4 是否设成 DHCP
  • 有没有残留 192.168.31.x
  • 有没有和 192.168.1.2 / 192.168.1.3 冲突

6. 在 OpenWrt 里执行命令时误把 findstr 丢进路由器

我还遇到过一个典型的“Windows 思维”问题。

比如我在 Windows 本地是想筛选输出,结果写成:

ssh root@192.168.1.3 "uci show wireless | findstr ..."

OpenWrt 里没有 findstr,所以会报:

ash: findstr: not found

这时候要改成 Linux 风格命令:

grep

也就是:

ssh root@192.168.1.3 "uci show wireless | grep -E '...'"

九、刷完 OpenWrt 后我问过的几个关键问题

下面这些问题,是我在真正开始配置网络后一点点搞明白的。

1. AP 是什么

APAccess Point,中文就是无线接入点

可以简单理解成:

  • 主路由负责:

    • 拨号
    • DHCP
    • NAT
    • 防火墙
  • AP 负责:

    • 发 Wi-Fi
    • 把无线设备桥接到现有网络

也就是说,AP 更像“负责覆盖”,不是“负责上网控制”。

2. NAT 是什么,双重 NAT 是什么

NAT 本质上是把家里多个私网设备,通过一个公网 IP 出去上网。

如果数据经过两层路由器、做了两次地址转换,那就是双重 NAT

例如:

光猫(做路由) -> OpenWrt(又做路由) -> 终端设备

这会带来:

  • 端口映射更复杂
  • 远程访问更麻烦
  • 某些游戏或服务更容易出问题

所以如果只是做家庭多点覆盖,通常更推荐:

  • 只保留一个主路由
  • 其他设备都做 AP

3. 光猫做主路由行不行

可以,而且对大多数家庭来说,不是什么问题

如果你的诉求只是:

  • 家里多人正常上网
  • 两台 OpenWrt 做 AP 覆盖
  • 减少双重 NAT

那完全可以:

  • 光猫继续拨号、DHCP、NAT
  • 两台 AC2100 都做 AP

真正不够用,通常是当你开始需要:

  • 更高级的 QoS/SQM
  • VPN
  • 广告过滤
  • 复杂端口转发
  • 更强的路由控制

这时才值得考虑让 OpenWrt 设备做主路由。

4. 现在的网络是不是有线回程 Mesh

严格说,不是传统意义上的 802.11s Mesh

更准确的说法是:

有线回程多 AP 漫游网络

也就是:

  • 路由器之间用网线互联
  • 终端在多个 AP 之间漫游

从效果上讲,这种方案往往比无线 Mesh 还更稳。

5. 企业 AP 是不是也是靠 K/V/R

是,但不只是靠这个。

企业 AP 的漫游通常是:

  • 802.11k
  • 802.11v
  • 802.11r
  • 控制器协同
  • 射频调优
  • 负载均衡
  • 厂商自己的算法

所以我们家庭里用 OpenWrt 做 K/V/R + usteer,是在尽量接近企业 AP 的思路,但不能简单理解成“一模一样”。

6. usteer 是不是必须

不是必须,但很值得加

如果只有两台 AP、而且你已经正确做到了:

  • 有线回程
  • AP 模式
  • 同 SSID
  • 同密码
  • 同加密
  • K/V/R 都开

那即使不装 usteer,也已经会比“只是同名 Wi-Fi”好很多。

但如果你想进一步改善:

  • 客户端黏在远处 AP
  • 2.4G / 5G 选择不合理
  • 多 AP 协作不够聪明

usteer 很有价值。

更准确地说:

  • K/V/R 是标准能力
  • usteer 是 OpenWrt 里的漫游辅助协调工具

所以我最后的结论是:

  • 不是非装不可
  • 但如果你都已经刷到 wpad-mbedtls 了,装上通常更完整

7. 只有 802.11r 够不够

通常不够。

这是我后来最重要的理解之一。

802.11r 只负责:

客户端已经决定切换之后,怎么让认证更快。

它不负责:

  • 什么时候切
  • 切到谁

而家庭漫游体验最常见的问题恰恰是:

  • 设备黏在弱信号 AP 上不肯走
  • 设备不知道附近还有更合适的 AP

所以在家用场景里,很多时候:

  • K/V 决定“要不要切”
  • R 决定“切的时候快不快”

这也是为什么我最后选择的是:

K/V/R + usteer

而不是只开 R

8. 家用路由器改 AP 和专用 AP 有什么区别

我后面还专门弄明白了这个问题。

很多人会以为:

  • AP 是更专业的设备
  • 所以一定更便宜

其实不一定。

家用路由器改 AP 的特点是:

  • 性价比高
  • 家庭里很够用
  • 手上已有设备时最省钱
  • OpenWrt 可玩性强

专用 AP 的特点是:

  • 设计目标更偏“只负责无线覆盖”
  • 常见于企业、商铺、吸顶部署、PoE 供电
  • 更重视并发、管理、统一部署

但专用 AP 并不一定比路由器便宜。

对普通家庭来说,如果手里已经有两台能刷 OpenWrt 的路由器,拿来做 AP 通常是很划算的方案。


十、这些概念到底是什么意思:无缝漫游、有线 Mesh、无线 Mesh、AP、K/V/R、NAT

如果你和我一样,前期最容易被这些词绕晕,那这一节就是专门用来“先把词讲明白”的。

1. 无缝漫游是什么

无缝漫游 不是某一个单独协议,它更像是一种体验目标。

它指的是:

  • 手机、平板、电脑在多个 AP 之间移动时
  • 能自动切换到更合适的 AP
  • 尽量不断网,或者只轻微顿一下

需要特别注意的是:

无缝漫游不是“绝对 0 卡顿”。

家庭场景里更现实的目标是:

  • 不长时间黏在远处 AP
  • 切换时不明显卡住
  • 刷视频、直播时只轻微抖一下

2. 有线 Mesh 是什么

很多厂商会把“多个节点用网线互联”的方案也叫 有线 Mesh

从用户体验角度,这种说法没问题。
但从 OpenWrt 和技术实现角度,更准确的说法通常是:

有线回程多 AP 漫游

也就是:

  • 路由器之间靠网线互联
  • 终端在多个 AP 之间漫游

它的优点:

  • 更稳
  • 回程带宽损失小
  • 延迟更低
  • 更适合家庭长期使用

它的缺点:

  • 需要布网线
  • 布线位置不合理时,优势发挥不出来

3. 无线 Mesh 是什么

严格说,大家常说的 无线 Mesh 更接近:

  • 厂商自家的节点组网协议
  • 或 OpenWrt 里的 802.11s

也就是:

  • 路由器和路由器之间通过无线互联
  • 不需要在节点之间拉网线

它的优点:

  • 施工简单
  • 对不能布线的家庭更友好

它的缺点:

  • 回程链路会受墙体、干扰、距离影响
  • 稳定性通常不如有线回程
  • 带宽和延迟一般也不如有线回程

4. 现在我这套到底算什么

我最后这套更准确的名字应该是:

有线回程多 AP 漫游网络

而不是严格意义上的:

  • 802.11s 无线 Mesh

从效果上说,这种方案通常比无线 Mesh 更适合家庭。

5. AP 是什么

APAccess Point,中文就是无线接入点

你可以把它理解成:

  • 主路由负责上网控制
  • AP 负责发 Wi-Fi 和扩大覆盖

主路由通常负责:

  • 拨号
  • DHCP
  • NAT
  • 防火墙

AP 通常负责:

  • 发无线网络
  • 桥接终端到主网络

6. NAT 是什么

NAT 可以简单理解成:

把家里多台私有 IP 设备,通过一个公网 IP 去上网。

比如:

  • 手机是 192.168.1.10
  • 电脑是 192.168.1.20
  • 平板是 192.168.1.30

它们通过主路由转换成公网地址访问互联网,这个过程就是 NAT。

7. 双重 NAT 是什么

双重 NAT 就是地址转换做了两次。

例如:

光猫(做路由) -> OpenWrt 路由器(又做路由) -> 手机/电脑

这时:

  • 光猫做一次 NAT
  • OpenWrt 又做一次 NAT

它的缺点主要是:

  • 端口映射更麻烦
  • 某些游戏和远程访问更容易出问题
  • 排错更复杂

所以家庭多 AP 覆盖时,通常更推荐:

  • 保留一个主路由
  • 其他设备都当 AP

8. 802.11s 是什么

802.11s 是 OpenWrt 里典型的无线 Mesh标准。

它的作用不是让手机直接连,而是让:

  • 路由器和路由器之间用无线互联

如果你真用 802.11s,通常每台路由器还得额外再开一个普通 AP,给手机和电脑上网。

所以:

  • 802.11s 是节点之间的无线回程
  • 不是普通的“家里手机连的 Wi-Fi 模式”

9. 802.11k / 802.11v / 802.11r 分别是什么

这三个协议最容易混在一起。

可以用一句话分别记:

  • 802.11k 给客户端一张“附近 AP 地图”
  • 802.11v 给客户端一个“切换建议”
  • 802.11r 让客户端在决定切换后,认证更快

它们分别负责的阶段不一样:

  • K 负责发现候选 AP
  • V 负责辅助决策
  • R 负责加快切换认证

10. 为什么很多人说 K/V 比 R 更重要

因为家庭里最常见的问题不是“认证太慢”,而是:

  • 设备黏在弱信号 AP 上
  • 设备不愿意切
  • 设备不知道该切到谁

这时候:

  • KV 更关键
  • R 更像锦上添花

所以如果你问:

只有 R 行不行?

通常答案是:

不太够。

11. usteer 是什么

usteer 是 OpenWrt 的多 AP 漫游辅助和频段引导工具。

你可以把它理解成:

  • K/V/R 是标准能力
  • usteer 是把这些能力更好组织起来的协调员

它会帮助多个 AP 之间互相知道:

  • 哪些客户端在连谁
  • 另一台 AP 的情况
  • 哪个 AP 更值得引导客户端过去

12. flow offloading 是什么

flow offloading 是 OpenWrt 里的转发加速能力。

简单理解:

  • 不开加速
  • 软件流量卸载 软件方式加速
  • 硬件流量卸载 硬件方式加速

家用里更稳的做法通常是:

  • 先试 软件流量卸载
  • 不要一上来就直接开 硬件流量卸载

13. Breed 是什么

Breed 不是 OpenWrt 固件本体,而是一个第三方 bootloader

它的优点是:

  • 后续刷机和恢复更方便

它的缺点是:

  • 刷它本身风险比刷普通固件更高

所以对第一次刷红米 AC2100 的人来说,我更建议:

  • 先按官方稳妥路线刷进 OpenWrt
  • 后面真有需要再研究 Breed

14. 这些方案怎么选

如果你只看家庭场景,可以这样快速选:

  • 想最稳 选:有线回程多 AP 漫游
  • 不能布线 选:无线 Mesh / 802.11s / 厂商 Mesh
  • 只想先把 OpenWrt 装上 选:先别折腾 Breed
  • 只想减少网络层复杂度 选:一个主路由 + 其他全做 AP

一句话总结:

  • 无线 Mesh 解决“没法拉线”
  • 有线回程多 AP 漫游 解决“既要稳定又要体验”
  • K/V/R + usteer 解决“多个 AP 怎么更聪明地协作”

十一、术语对照表:一眼看懂这些词

为了方便快速查阅,我把这篇文章里最容易混淆的词做成一个简表。

名词 简单解释 更接近解决什么问题
AP 负责发 Wi-Fi 的接入点 扩大无线覆盖
主路由 负责拨号、DHCP、NAT、防火墙 负责上网控制
NAT 私网设备通过公网 IP 上网的地址转换 多设备共享公网
双重 NAT 地址转换做了两次 结构复杂、远程访问麻烦
无缝漫游 终端在多个 AP 之间自动切换时体验更顺 走动时尽量不断网
有线回程多 AP 漫游 AP 之间靠网线互联,终端做漫游 家庭最稳的多点覆盖
无线 Mesh 路由器之间通过无线互联 不能布线时扩展覆盖
802.11s OpenWrt 里典型的无线 Mesh 标准 节点间无线回程
802.11k 给客户端“附近 AP 地图” 帮客户端发现候选 AP
802.11v 给客户端“切换建议” 帮客户端做漫游决策
802.11r 加快切换时的认证 减少切换瞬间卡顿
usteer OpenWrt 的多 AP 协调工具 让 K/V/R 更好发挥
flow offloading OpenWrt 转发加速 提升 NAT/转发性能
Breed 第三方 bootloader 后续刷机/恢复更方便

十二、方案优缺点对比:到底选哪种

这一节是把最容易混淆的几种家庭网络方案拉平来看。

方案 1:单路由 + 一个 Wi-Fi

最简单的家庭结构:

  • 一个主路由
  • 一个无线网络

优点:

  • 最简单
  • 最省心
  • 最少出错

缺点:

  • 覆盖有限
  • 大户型或隔墙环境下体验容易变差
  • 无法真正解决“屋里某些区域信号差”的问题

适合:

  • 小户型
  • 设备不多
  • 对漫游没有明显要求

方案 2:多个路由器只是同名 Wi-Fi

这是很多人最先想到的做法:

  • 两台路由器都发差不多的 Wi-Fi 名称
  • 但没有认真做 AP 规划和漫游优化

优点:

  • 上手门槛低
  • 看起来像是“实现了全屋覆盖”

缺点:

  • 终端容易黏在远处 AP
  • 体验常常并不自然
  • 很容易以为“同名 Wi-Fi = 无缝漫游”

适合:

  • 临时凑合用
  • 先试试覆盖效果

不适合:

  • 对走动时体验有明显要求
  • 经常刷视频、直播、视频通话

方案 3:有线回程多 AP 漫游

这就是我最后实际采用的方案:

  • 一个主路由
  • 其他节点全部做 AP
  • 节点之间用网线互联
  • 配置 K/V/R 和可选的 usteer

优点:

  • 稳定
  • 回程带宽损失小
  • 延迟低
  • 体验通常优于无线 Mesh
  • 最适合家庭长期使用

缺点:

  • 需要布线
  • 需要稍微懂一点网络结构
  • 不是“插上就自动最优”,仍然需要基础调试

适合:

  • 有条件拉网线的家庭
  • 希望覆盖和体验都更稳
  • 想尽量减少无线回程带来的不确定性

方案 4:无线 Mesh

包括厂商宣传的“Mesh”以及 OpenWrt 里的无线节点组网。

优点:

  • 不用拉线
  • 部署方便
  • 对老房或临时环境很友好

缺点:

  • 回程链路受环境影响大
  • 稳定性和吞吐通常不如有线回程
  • 墙多、距离远时效果波动更明显

适合:

  • 真的没法布线
  • 更看重施工方便

方案 5:双重 NAT 下的多路由

比如:

  • 光猫在做路由
  • 后面的 OpenWrt 也做路由
  • 两台设备不在同一网段

优点:

  • 表面上也能“都上网”

缺点:

  • 漫游体验很难做好
  • 网络结构复杂
  • 端口映射、远程访问、游戏更麻烦
  • 排错难度明显更高

适合:

  • 只在很特殊、明确知道自己为什么这么配时使用

大多数家庭:

  • 不推荐

十三、家庭场景选型建议表

如果你只想快速判断自己该用哪种方案,可以直接看这个。

场景 1:小户型,主路由已经够用

建议:

  • 先别折腾多 AP
  • 一个主路由先跑稳

场景 2:大户型或隔墙多,但能布网线

建议:

  • 直接选 有线回程多 AP 漫游
  • 这是家庭最推荐的方案

场景 3:大户型,但完全没法布线

建议:

  • 无线 Mesh
  • 接受它的稳定性和带宽会受环境影响

场景 4:已经有两台能刷 OpenWrt 的路由器

建议:

  • 优先拿来做 AP
  • 不一定要再额外买专用 AP

场景 5:主要目标是减小走动时卡顿

建议:

  • 不要只停留在“同名 Wi-Fi”
  • 至少做到:
    • AP 模式
    • 有线回程
    • 信道错开
    • K/V/R
    • 需要时加 usteer

场景 6:主要目标是插件、QoS、VPN、端口控制

建议:

  • 再考虑让 OpenWrt 设备做主路由
  • 如果光猫仍是路由模式,要注意双重 NAT

十四、如果只记住 5 句话,我希望是这 5 句

  1. 同名 Wi-Fi 不等于 无缝漫游
  2. 家庭里如果能布线,有线回程多 AP 通常优先于 无线 Mesh
  3. 802.11k / 802.11v 常常比 802.11r 更决定“会不会切”。
  4. 802.11r 不是没用,但它更多是在“已经决定切换后”让过程更快。
  5. 真正决定体验的,往往不是某一个神秘参数,而是整体结构对不对。

十五、802.11k / 802.11v / 802.11r 到底是什么

这是我后面最困惑,也最容易被各种教程讲乱的部分。

1. 802.11k

可以理解成给客户端一张“附近 AP 地图”。

它告诉手机:

  • 周围还有哪些 AP
  • 大概在哪些信道

这样客户端就不用自己全世界乱扫。

2. 802.11v

可以理解成给客户端一个“切换建议”。

最典型的就是:

  • BSS Transition

AP 会对客户端说:

  • 你可以考虑切到另外那台更合适的 AP 了

但这是建议,不是强制。

3. 802.11r

这是“快速切换认证”。

它不负责决定“要不要切”,
它负责的是:

既然要切了,那认证过程能不能更快。

4. 为什么很多教程说 K/V 比 R 更重要

因为家庭环境里,很多时候问题不是“切换太慢”,而是:

  • 客户端根本不愿意切
  • 客户端不知道切到谁

这时候:

  • K 帮它发现候选 AP
  • V 帮它做切换决策

只有在客户端已经决定切换之后,R 才开始发挥作用。

所以:

  • 只有 R,通常不够
  • K/V/R 一起上,体验才更完整

十六、为什么我还折腾了 wpad-mbedtlsusteer

1. 为什么一开始看不到 802.11k / 802.11v

因为 OpenWrt 默认装的往往是:

wpad-basic-mbedtls

这是精简版。

它通常不带完整的 802.11k / 802.11v 能力。

2. 怎么换成完整版

我最后执行的是:

apk update
apk del wpad-basic-mbedtls
apk add wpad-mbedtls usteer luci-app-usteer
reboot

3. usteer 是什么

可以把它理解成:

OpenWrt 多 AP 漫游辅助和频段引导工具

它会让多个 AP 之间互相知道:

  • 哪些客户端连着谁
  • 信号情况如何
  • 哪个 AP 更适合当前客户端

它不是替代 K/V/R,而是把 K/V 的效果更好地组织起来。

4. usteer 最值得关注的 3 个参数

我最后真正保留下来的核心参数其实不多,最值得关注的是这 3 个:

  • roam_scan_snr='-65'
  • signal_diff_threshold='8'
  • assoc_steering='1'

它们大概分别代表:

  • 当信号掉到 -65 附近时,更积极开始考虑漫游
  • 只有目标 AP 明显更好时,才更积极引导切换
  • 在关联阶段做引导,减少设备黏在不理想 AP 上

对于家庭环境来说,我最后的体会是:

  • 先别追求把参数调得很激进
  • 默认的保守值加上这几个关键项,通常就已经够用了

十七、两台 AC2100 最终怎么组成有线回程漫游网络

我最后采用的是下面这种结构。

1. 接线方式

光猫 LAN -> AC2100-1 的 LAN
光猫 LAN -> AC2100-2 的 LAN

注意:

  • 两台 AC2100 的 WAN 口都不用
  • 如果光猫口不够,可以中间加交换机

2. 地址规划

假设光猫地址是:

192.168.1.1

那两台 OpenWrt AP 我设成:

  • AC2100-1192.168.1.2
  • AC2100-2192.168.1.3

3. AP 模式的关键设置

每台都要:

  • 关闭 DHCP
  • 禁用 dnsmasq
  • 禁用 odhcpd
  • 禁用 firewall

4. 无线配置

我最后的思路是:

  • 2.4G SSID:yaoyao
  • 5G SSID:yaoyao_5G

两台保持:

  • 同一频段同名
  • 同密码
  • 同加密

信道错开:

  • 第 1 台 2.4G:1
  • 第 2 台 2.4G:11
  • 5G 也错开

5. K/V/R 配置

每个无线接口都要开:

  • 802.11k
  • 802.11v
  • 802.11r

其中 802.11r 还要注意:

  • Mobility Domain 一致,比如 1234
  • NAS ID 每个接口唯一
  • FT over DS 先关闭

6. usteer 配置

我最后用的核心设置是:

uci set usteer.@usteer[0].network='lan'
uci -q delete usteer.@usteer[0].ssid_list
uci add_list usteer.@usteer[0].ssid_list='yaoyao'
uci add_list usteer.@usteer[0].ssid_list='yaoyao_5G'
uci set usteer.@usteer[0].roam_scan_snr='-65'
uci set usteer.@usteer[0].signal_diff_threshold='8'
uci set usteer.@usteer[0].assoc_steering='1'
uci commit usteer
/etc/init.d/usteer enable
/etc/init.d/usteer restart

7. 怎么判断 usteer 工作了

执行:

ubus call usteer remote_info

如果每台都能看到另一台的:

  • 2.4G
  • 5G
  • SSID
  • BSSID

就说明多 AP 协作已经建立起来了。


十八、刷完后如果感觉无线变慢怎么办

这个问题我也遇到过。

刷成 OpenWrt 后,如果感觉:

  • Wi-Fi 没原厂快
  • 刷抖音直播更容易卡
  • 明明已经连上了 5G,但体感还是不顺

不要急着怀疑“是不是刷坏了”,很多时候只是默认配置更保守。

1. 先区分是“有线慢”还是“无线慢”

最先做的不是乱调参数,而是先分清楚:

  • 电脑用网线测速,快不快
  • 手机连 Wi-Fi 测速,快不快

如果:

  • 有线也慢

那更可能是路由/NAT 转发问题。

如果:

  • 有线正常
  • 只有无线慢

那更可能是 Wi-Fi 参数问题。

2. 手机怎么测速

最简单的办法是:

  • 用手机打开 Speedtest
  • 或访问测速网站

测速时建议分开测:

  • 只连 2.4G
  • 只连 5G

这样更容易看出到底是哪一层的问题。

3. 无线基础参数要合理

我后面总结下来,家用最稳的是:

  • 2.4G
    • 信道 1 / 6 / 11 选一个
    • 带宽 20MHz
  • 5G
    • 优先选非 DFS 信道
    • 带宽 80MHz

不要轻易把:

  • 2.4G 开成 40MHz
  • 发射功率直接拉满

这常常会适得其反。

4. flow offloading 是什么,在哪里开

如果你发现:

  • 有线测速都不理想
  • 一多人上网,直播延迟就明显高

那就值得看看 flow offloading

OpenWrt 页面里一般在:

  • 网络 -> 防火墙

它可能显示成:

  • 路由/NAT 卸载
  • 软件流量卸载
  • 硬件流量卸载

我最后的建议是:

  • 先开软件流量卸载
  • 不要一上来就直接开硬件流量卸载

因为:

  • 软件卸载更稳
  • 硬件卸载虽然可能更快,但兼容性和稳定性更看具体设备和功能组合

5. 这件事和抖音直播为什么关系特别大

因为抖音直播这类应用不只是吃带宽,更吃:

  • 延迟
  • 抖动
  • 切换时的稳定性

也就是说,有时候看起来“测速挺快”,实际刷直播还是卡,问题可能出在:

  • 漫游切换
  • Wi-Fi 频段选择
  • NAT/转发延迟

而不只是单纯的下载速度。


十九、最后我的配置状态是什么

当我把所有配置检查完之后,可以确认:

  • 802.11k 已开
  • 802.11v 已开
  • 802.11r 已开
  • Mobility Domain 一致
  • NAS ID 唯一
  • FT over DS 已关闭
  • usteer 双向发现正常

也就是说,从配置层面看:

K/V/R + usteer 这一套已经搭好了。


二十、这套方案的真实预期应该是什么

这里我最后也想说一句实话。

很多人一开始听到:

  • Mesh
  • 802.11k/v/r
  • 企业 AP

就会以为最后一定能做到“绝对无缝、零卡顿”。

但家庭环境里,真实情况通常是:

  • 客户端仍然自己决定是否切换
  • 手机品牌不同,漫游策略差异很大
  • 5G 覆盖、摆位、发射功率都会影响结果

所以更合理的目标是:

  • 不再长时间黏在远处 AP
  • 切换时最多轻微顿一下
  • 日常刷视频、走动时体验明显比“只是同名 Wi-Fi”好

如果达到这个程度,其实就已经很值了。


二十一、我这次最大的经验总结

1. 先把“刷机”和“组网”分开看

刷进去 OpenWrt,只是第一步。
真正决定体验的,是后面的网络结构。

2. 家庭里优先考虑“有线回程 AP 漫游”

如果能拉网线:

  • 不要优先追求无线 Mesh
  • 有线回程通常更稳

3. 只开同名 Wi-Fi,不等于就能有好漫游

真正决定漫游体验的,往往是:

  • AP 摆位
  • 信道规划
  • K/V/R
  • usteer
  • 客户端本身的策略

4. Windows 下远程一条命令执行,真的比 SSH 后手敲舒服

像这种形式:

ssh root@192.168.1.2 "uci show wireless"

对 Windows 用户来说,常常比先进入 SSH 再粘贴要省心很多。

5. 不要把所有问题都归结到“OpenWrt 配置错了”

很多看起来像配置问题的东西,最后其实是:

  • 网线问题
  • LAN 口问题
  • Windows 静态 IP 残留
  • 地址冲突
  • 把 Windows 命令误丢给 OpenWrt 执行

二十二、给准备刷红米 AC2100 的人的建议

如果你也准备刷这台机器,我会给你下面这些建议。

建议 1:第一次别先刷 Breed

先按稳妥路线刷进 OpenWrt,等以后真有需求再考虑 Breed。

建议 2:第一次从原厂刷,只用 kernel1.bin + rootfs0.bin

不要上来就拿 sysupgrade.bin 去刷原厂。

建议 3:一定用有线

这一步不要省。

建议 4:Windows 用户尽量用“本地远程命令”方式

不要太依赖在 SSH 黑框里粘贴长命令。

建议 5:后续如果做双路由漫游,优先做 AP 架构

如果你的主目标是:

  • 覆盖
  • 漫游
  • 简化网络结构

那就让:

  • 光猫当主路由
  • 两台 OpenWrt 都做 AP

这通常比双重 NAT 更适合家庭。


二十三、结语

这次折腾最大的感受是:

刷 OpenWrt 其实不难,真正难的是搞清楚自己想要的网络结构。

如果你的目标只是让家里 Wi-Fi 更稳、更顺、更好漫游,那最后决定体验的往往不是某个“神秘参数”,而是:

  • 接线对不对
  • 主路由/AP 分工对不对
  • 信道和摆位对不对
  • K/V/R 和 usteer 有没有配完整

红米 AC2100 不是什么高端设备,但用得对、配得对,依然能做出一套很实用、很有性价比的家庭网络。

如果你正准备刷,建议你先把这篇文章从头看到尾,再开始动手。
很多坑你完全可以不用自己再踩一遍。