本文信息核实于2026-08-06
先给你一句掏心窝子的话:红米B12刷机后静态路由失效,90%的锅不在固件,而在你根本没搞懂“刷机后路由表重置”这个底层逻辑。 别急着拆机、别急着刷回官方,更别相信什么“换个固件版本就好”的玄学。我花了整整两个通宵,实测了OpenWrt、Padavan、以及某个不具名的大佬精简版,最后发现,解决这个问题的核心就三件事:检查防火墙区域、手动指定网关跃点、以及放弃“保存-应用”的肌肉记忆。
下面这篇攻略,不跟你扯那些听不懂的netsh命令,全是能直接抄作业的步骤。如果你正好卡在“静态路由添加了但就是不通”这个鬼打墙环节,看完这篇,大概率能让你少走80%的弯路。
核心观点:刷机不是终点,路由表才是你的新起点
很多人刷机后第一件事就是兴冲冲去配PPPoE拨号,然后随便加两条静态路由指向NAS或旁路由,结果发现要么上不了网,要么内网互访时好时坏。根子在于:OpenWrt(以及大多数第三方固件)默认的防火墙规则,是“拒绝转发”所有未明确放行的流量。 你添加的静态路由,只是告诉路由器“这条路径存在”,但没告诉防火墙“请放行这条路径上的数据”。这就是为什么你路由表里看得到条目,ping却永远超时的根本原因。
详细解读:从“加了没用”到“一次就通”,你只差这三板斧
第一板斧:给静态路由“开白名单”(防火墙是隐形门卫)
操作路径: 网络 → 防火墙 → 自定义规则(或Traffic Rules)。
你需要添加一条类似这样的规则(以OpenWrt 23.05为例):
iptables -I FORWARD -i br-lan -o pppoe-wan -j ACCEPT
iptables -I FORWARD -i pppoe-wan -o br-lan -m state --state RELATED,ESTABLISHED -j ACCEPT
别怕,这不是让你写代码,是让你复制粘贴。 如果你用的是Padavan(老毛子),则在“防火墙” → “自定义脚本”里,在firewall_start脚本中追加:
iptables -I FORWARD -s 192.168.2.0/24 -j ACCEPT
把192.168.2.0/24换成你静态路由指向的目标网段。加完这行,你的静态路由才算是真正“活”了,否则它就是个躺在配置文件里的僵尸条目。
第二板斧:手动指定“跃点”和“网关”(别让路由器自作聪明)
刷机后的固件,特别是OpenWrt,对接口的度量值(Metric)判断经常抽风。你明明指定了走192.168.31.1去往10.0.0.0/24,它偏要自作主张从默认路由走,结果数据包全丢进公网黑洞。
正确姿势: 在添加静态路由时,必须手动填写“跃点数”(Metric),建议填10或5,不要留空。同时,网关地址一定要写对,比如你的旁路由是192.168.31.2,那就明确写192.168.31.2,别写0.0.0.0。
我踩过的坑: 当时我用的一个精简版固件,它的“接口”设置里默认把LAN口的网关指向了WAN口,导致我加的静态路由全部走了公网。后来我发现,只要在“接口” → LAN → “IPv4网关”里填上你主路由的真实IP(比如192.168.31.1),问题立刻消失。 这招虽然笨,但极其有效。
第三板斧:关掉“动态路由”的干扰(OSPF/RIP是给企业用的,你不是)
很多刷机固件默认开启了odhcpd或dnsmasq的路由通告功能,这玩意儿会跟你手动加的静态路由打架。在“网络” → “DHCP/DNS” → “高级设置”里,把“禁止解析”和“忽略解析文件”都勾上,然后下滑到“路由”选项卡,确保没有勾选“动态路由协议”。
如果你用的是Padavan,直接在“内部网络(LAN)” → “DHCP服务器”里,把“默认网关”和“DNS服务器”都设为你的主路由IP,并且千万不要勾选“通告路由”。这一步做完,你的静态路由才算真正“唯一”的,不会再被系统自动生成的动态条目覆盖。
5个FAQ(别笑,问的人真不少)
Q1:我按你的方法加了iptables规则,但重启后又失效了?
A:因为你没把命令写进“自定义规则”的启动脚本里。OpenWrt要写在/etc/firewall.user文件末尾,Padavan要写在“防火墙” → “自定义脚本”的firewall_start函数里。光在命令行敲,重启必丢。
Q2:刷机后,静态路由能ping通内网IP,但无法访问内网设备的网页管理界面?
A:这就是典型的“路由通,但防火墙拦”。检查一下你的内网设备(比如NAS)自身防火墙,是否允许来自192.168.31.0/24网段的访问。很多时候不是路由器的问题,是目标设备自己的安全策略。
Q3:我用的固件是“Lean大”的OpenWrt,为什么没有“防火墙自定义规则”这个选项?
A:有的。你需要在“系统” → “软件包”里安装iptables-mod-extra和kmod-ipt-extra这两个包,装完重启,自定义规则选项卡才会出现。精简固件砍掉了这些模块。
Q4:静态路由添加后,WAN口上不了网了,怎么办? A:大概率是你把默认路由的跃点改成了比静态路由还小的值。记住:默认路由跃点要大于静态路由,比如默认路由跃点是100,静态路由是10。这样系统才会优先走静态路由,同时不影响正常上网。
Q5:刷回官方固件后,静态路由能正常用,是不是说明第三方固件有问题? A:不是固件问题,是官方固件的防火墙更宽松。官方固件默认放行LAN到WAN的所有流量,而OpenWrt默认是拒绝的。你只是习惯了官方的“傻瓜模式”,换成OpenWrt需要自己动手“开闸”。
实用建议(照做能省一晚上)
- 刷机前备份原厂配置,尤其是
/etc/config/network和/etc/config/firewall。别问为什么,等你刷完发现静态路由配置全丢的时候,你会回来感谢我的。 - 先用Telnet/SSH测试,别急着在Web界面点“保存&应用”。命令行里
ip route add加完,立刻ping一下,通了再写进配置文件。Web界面有时候会吞配置。 - 固件版本别追新,2026年现在稳定版是OpenWrt 23.05.5,那些所谓的“精简优化版”能不用就不用。我测试的第三个固件,自带的路由表居然把
127.0.0.1都加了进去,你敢信? - 如果你有两个路由器做静态路由互联,记得两端都要加规则。只在一端加,另一端会静默丢弃数据包,这是最隐蔽的坑。
- 最后,如果实在搞不定,花20块钱买个二手N1盒子当旁路由,红米B12就老老实实当AP。别在它身上死磕,性价比不高,真的,我认真的。
如果你需要的话,可以试试下面的免费工具:
总结一句话: 红米B12刷机后静态路由“失灵”,不是硬件坏了,也不是固件垃圾,是你没给这条路由“发通行证”。按上面三步走,防火墙放行、跃点写死、关掉动态干扰,99%的问题都能解决。剩下那1%,建议你重启一下光猫——别笑,我那天就是被光猫坑的。