飞牛OS (FnOS) + OpenWrt 公网访问避坑:换了路由器 IPv6 就不通?原来是防火墙 Zone 设置在捣鬼

飞牛OS (FnOS) + OpenWrt 公网访问避坑:换了路由器 IPv6 就不通?原来是防火墙 Zone 设置在捣鬼

· json · rss
Subscribe:

About

🛑 问题背景

作为一名运维折腾党,最近家里网络架构做了一次升级。我把原本的“傻瓜式”小米路由器,换成了性能更强、可玩性更高的 GL.iNet (OpenWrt 系统) 路由器。

我的 NAS 运行的是最近很火的 飞牛 OS (FnOS),上面跑了一些 Docker 服务(比如 Lucky、Nginx 等)。原本在小米路由器下,IPv6 公网访问非常顺畅,结果换了 OpenWrt 后,外网访问全断了

故障现象非常诡异:

1. 内网正常:在局域网内通过 IPv6 地址访问 FnOS 上的服务完全没问题。

2. IP 正常:在 FnOS 终端输入 ip addr,可以看到网卡已经获取到了 2409 开头的公网 IPv6 地址。

3. 外网全挂:一旦手机断开 WiFi 使用 4G/5G 流量,或者在公司网络访问,死活连不上。

4. 端口转发无效:尝试在 OpenWrt 里设置了通信规则,依然不通。

🕵️‍♂️ 排查思路 (运维视角)

为了找出病灶,我按照 OSI 模型从下往上排查,整个排查流程如下图所示:

(图:本次故障的完整排查与解决流程)

1. 链路与 IP 检查

首先确认 FnOS 确实拿到了公网 IPv6,且 Docker 容器的网络模式不管是 Bridge 还是 Host,现象都一致。排除 NAS 本身配置问题。

2. 对照实验

为了验证环境,我把网线插回小米路由器,服务瞬间就通了。这直接证明:问题不在宽带运营商,也不在 FnOS,问题 100% 出在 OpenWrt 路由器的设置上。

3. 暴力测试定位

我尝试在 OpenWrt 防火墙设置里,将所有区域的“入站”和“转发”临时全部改成 Accept (接受)

神奇的事情发生了:外网瞬间可以访问了!

这说明:物理链路是通的,只是被 OpenWrt 的防火墙规则给拦截了。

🛠️ 根本原因:OpenWrt 的 Zone 区域隔离

OpenWrt 的防火墙机制是基于 Zones (区域) 的。这也是它比普通路由器强大的地方,但也更容易“踩坑”。

在 OpenWrt 中,IPv4 的外网接口通常叫 wan,而 IPv6 的外网接口往往是独立的,被标记为 wan6。

核心原因:

虽然我设置了端口放行规则,但 OpenWrt 默认的区域策略里,wan6 所在的区域到 lan 区域的“转发 (Forwarding)”路径是关闭的(Reject)

这就好比你给客人发了请帖(端口规则),但是小区的保安(Zone 策略)根本不允许那个大门(wan6)的人进入小区(lan),所以数据包在最外层就被丢弃了。

✅ 最终解决方案

既然找到了原因,解决起来就非常简单。我们不需要复杂的命令行,只需要在 LuCI 界面 修改一下区域转发设置。

操作步骤如下:

1. 登录 OpenWrt (GL.iNet) 后台,进入 LuCI 高级设置界面。

2. 点击顶部菜单 Network (网络) -> Firewall (防火墙)

3. 向下滚动找到 Zones (区域) 列表。

4. 找到包含 IPv6 接口的区域(通常叫 wan 或单独的 wan6)。

- 注意:GL.iNet 或部分 OpenWrt 固件有时会将 IPv6 协议划分在独立的接口名下。

关键修改

1.点击该区域的 Edit (编辑),或者直接在列表中修改 Forward (转发) 这一栏。

将从 wan/wan6lan 的转发策略,从 Reject (拒绝) 修改为 Accept (接受)

2. 点击右下角的 Save & Apply (保存并应用)

效果立竿见影

保存生效后,手机断开 WiFi,直接通过 IPv6 域名访问家里的飞牛 OS,秒开!

📝 总结

从硬路由迁移到 OpenWrt 玩 NAS,防火墙是最容易“翻车”的地方。

对于 飞牛 OS (FnOS) 这种底层基于 Linux 的系统,IPv6 支持通常都很好。如果你的 IP 都在,但就是外网不通,请一定优先检查路由器的 Zones 转发策略,特别是确认 wan6 接口的数据是否被允许转发到内网 lan。

希望这条经验能帮到同样在折腾 FnOS 和 OpenWrt 的朋友!🚀


#飞牛OS #FnOS #OpenWrt #GLiNet #IPv6 #公网访问 #NAS #运维日记