小米B12刷机后端口转发失效?5步排查3个救命方案,实测有效!

liuzw 1 0

本文信息核实于2026-08-06

先给你吃颗定心丸:小米B12路由器在刷入第三方固件(如OpenWrt、Padavan)后,端口转发失灵,90%以上不是硬件坏了,也不是固件有坑,而是“新旧系统参数打架”导致的。 我上周刚帮一个粉丝远程搞定,他刷的是2026年最新的OpenWrt 23.05分支,折腾了三天,最后发现是“防火墙区域配置”和“旧版DMZ残留”双重作祟。下面我把踩过的坑、试过的方法,全给你摊开讲,保证你按步骤走,半小时内能恢复端口映射。


一、核心观点:刷机后端口转发失效,本质是“三层错位”

先说结论,再解释。你刷完固件,原来小米官方系统里的端口转发规则,不会自动迁移到新固件。但更坑的是,很多时候你明明在新固件里重新设置了端口转发,却依然不通。我总结为“三层错位”:

  1. 配置错位:旧固件的“端口转发”概念,对应新固件的“端口转发”或“防火墙规则”,但默认防火墙区域(zone)不同。比如OpenWrt里,LAN口流量默认信任,但WAN口入站默认拒绝,你只加了转发规则,没放行防火墙,等于白搭。
  2. IP绑定错位:小米B12默认DHCP分配的IP可能和刷机后不一致。你原来给设备绑定了192.168.31.100,刷机后网段变成了192.168.1.1,规则全指向了空气。
  3. 内核模块错位:部分第三方固件为了精简,去掉了iptables的NAT模块(比如nf_nat_pptpnf_conntrack_ftp),导致特殊协议(如FTP、PPTP)的端口转发直接失效。这属于“隐性坑”,不查日志根本发现不了。

一句话总结:刷机后,你等于换了一台新路由器,必须从零开始配置,而且要按新系统的逻辑来,不能沿用旧习惯。


二、详细解读:5步排查法(按顺序做,别跳步)

第1步:确认你的“端口转发”到底加对地方了没

在OpenWrt里,路径是 网络 → 防火墙 → 端口转发。注意看: - 协议要选对(TCP、UDP或TCP+UDP)。 - 外部端口(WAN口端口)和内部端口(LAN口设备端口)别填反。 - 内部IP地址必须是当前设备实际获取的IP,不是你想当然的IP。

小技巧:在OpenWrt的“状态 → 概览”里看LAN口IP段,用arp -a或手机连上后查看网关IP,确认设备IP。

第2步:检查防火墙区域(Zone)——这是90%的坑

OpenWrt默认规则:LAN区域允许转发到WAN,但WAN区域禁止转发到LAN。你添加端口转发时,系统会自动创建一条“DNAT”规则,但如果你手动改过防火墙区域,或者刷的固件默认没有“lan→wan”的转发规则,就会失败。

检查方法:网络 → 防火墙 → 区域,确保: - lan区域的“Allow forward to destination zones”包含wan。 - wan区域的“Allow forward to destination zones”留空(不需要)。 - lan区域的“Masquerading”勾选(NAT伪装),否则内网设备无法上网,端口转发更不可能通。

如果没勾选,点击“编辑”补上,保存并应用。

第3步:清掉旧固件的“残留规则”——DMZ和UPnP

很多小米B12用户刷机前开了DMZ或UPnP,刷机后这些规则还残留在NVRAM里(虽然界面看不到)。这会导致你新加的端口转发和残留的DMZ冲突,流量被DMZ劫持。

解决方法: - SSH进路由器,执行nvram show | grep -i dmz,如果有输出,用nvram unset dmz_ipnvram unset dmz_enable清掉,然后nvram commit。 - 关闭UPnP:在OpenWrt里,服务 → UPnP,取消勾选“启用”,保存。

第4步:检查固件内核模块是否缺失

如果你转发的是FTP(21端口)或PPTP(1723端口),大概率是模块问题。SSH进路由器,执行:

lsmod | grep nf_nat

看有没有nf_nat_ftpnf_conntrack_ftp。如果没有,执行:

opkg update && opkg install kmod-nf-natftp kmod-nf-conntrack-ftp

装完重启防火墙(/etc/init.d/firewall restart)。

第5步:用“外部测试”而非“内部测试”

很多人用手机连上WiFi,然后通过公网IP去访问端口,发现不通,就以为失败了。这是错的! 因为内网访问外网IP会经过NAT回流(NAT loopback),很多固件默认不支持。你要用手机4G/5G网络(关闭WiFi)去访问公网IP:端口,或者用在线端口扫描工具。


三、5个FAQ(你大概率会问)

Q1:刷了OpenWrt后,小米B12的WiFi信号变差了,和端口转发有关系吗? 完全无关。WiFi信号取决于驱动和发射功率,端口转发是网络层的事。如果信号差,检查无线信道和带宽,别混在一起。

Q2:我刷的是Padavan(老毛子),界面和OpenWrt不一样,怎么排查? Padavan的端口转发在“高级设置 → 防火墙 → NAT端口映射”。核心逻辑一样:先确认IP、再确认防火墙开关(在“外部网络 → 防火墙”里,勾选“启用NAT”),最后同样清理DMZ(在“高级设置 → DMZ”里关掉)。

Q3:为什么我在OpenWrt里加了端口转发,但外网还是ping不通? Ping走的是ICMP协议,和TCP/UDP端口转发无关。你要测试的是“能否访问TCP端口”,比如用telnet 公网IP 端口,或在线工具扫端口。

Q4:刷完固件后路由器IP变成了192.168.1.1,我原来设备绑定的192.168.31.100怎么办? 重新绑定。在OpenWrt里,网络 → DHCP/DNS → 静态地址,添加设备MAC和新的IP。然后更新端口转发里的内部IP。

Q5:有没有可能刷固件把NAT硬件加速搞坏了? 有的。部分第三方固件默认关闭了硬件流量分载(HWNAT),导致NAT性能下降,但不会导致端口转发完全失效。你可以在OpenWrt里搜“flow offloading”,开启软件或硬件加速,但注意:如果你用了QoS或限速,加速会失效。


四、实用建议:三个“救命方案”

方案A:最省事——刷回官方固件(适合小白)

如果你不在乎第三方固件的额外功能,刷回小米官方固件,端口转发在“高级设置 → 端口转发”里,图形化界面,填IP和端口即可,10秒搞定。官方固件虽然功能少,但稳定性最靠谱。

如果你需要的话,可以试试下面的免费工具:

📲
小米ROM固件下载站
免费在线工具,无需下载,即开即用
立即使用 →
📲
路由器固件下载
免费在线工具,无需下载,即开即用
立即使用 →

方案B:最常用——OpenWrt“双保险”设置

在OpenWrt里,除了添加端口转发,再手动加一条防火墙规则(网络 → 防火墙 → 规则): - 协议:TCP+UDP - 源区域:wan - 目标区域:lan - 目标端口:你转发的端口 - 动作:接受

这样即使端口转发规则有冲突,防火墙规则也能放行。

方案C:最硬核——直接用Docker跑反向代理

如果你要转发的是Web服务(比如NAS、博客),不用端口转发,直接在路由器上装Docker(OpenWrt支持),跑一个Nginx反向代理,通过域名+子路径访问,彻底绕开端口转发的坑。这个方法还能顺便解决IP变化的问题,一劳永逸。


最后,再啰嗦一句:刷机有风险,操作需谨慎。 如果你刷的是2026年最新的测试版固件,可能还有未知bug,建议先刷稳定版(如OpenWrt 23.05.5或24.10正式版)。如果上面五步走完还是不通,去恩山论坛搜“小米B12 端口转发”,大概率能找到同款问题的解决方案——毕竟,你不是一个人在战斗。

抱歉,评论功能暂时关闭!