Skip to content

树莓派4B自建网页服务器指南(6.1)· 番外篇:IPv6 直连的生产化防火墙补完(参考方案)

⚠️ 前置声明(必读)

1. 合规红线

国内三大运营商(电信/联通/移动)家庭宽带用户协议均明确约定:家庭宽带不得用于经营性活动,不得私自架设面向公众的服务器。IPv6 直连在技术上能够实现公网访问(第六篇已验证),但技术可行 ≠ 合规允许长期运行未备案的自有服务。本番外所讨论的方案,均建立在“自用、非经营、非面向公众”的前提之下。若你计划将服务开放给非家庭成员或用于商业目的,请务必转向第七篇的 ECS 反代方案并完成 ICP 备案。

2. 番外定位

本番外是参考方案非专栏主推。专栏的主推生产方案始终是第七篇的 ECS 反代(pi.jiejinx.cnA→ECS:443 → proxy_pass → 树莓派),它具备备案合规、入口收敛、带宽可控等优势。

IPv6 直连在专栏体系中的定位是:

  • 第6篇:验证链路连通性的手段
  • 第7篇:退化为 ECS 回源的私有通道 + 大流量(网盘/文件同步)的辅助入口

本番外主要面向那些明知合规风险、仍希望在自用场景下长期运行 IPv6 直连(如家庭网盘、大文件传输)​ 的读者,提供一套能将防火墙颗粒度补到家用天花板的参考方案

3. 不承诺安全性

网络安全是动态对抗的过程。本番外提供的方案仅能提升攻击门槛(从“菜市场”提升到“有锁的门”),无法做到企业级(物理防火墙 + WAF + 堡垒机 + 态势感知)的全面防护。
任何将设备暴露于公网的行为都存在固有风险,需自行把控斟酌

一、问题复现与诊断

1.1 第六篇验证期的结论回顾

第六篇的验证结果可以概括为三句话:

光猫 IPv6 SPI路由器 IPv6 防火墙公网访问结果
✅ 通(手机 4G/5G 可访问)
❌ 不通
❌ 不通(光猫先拦)

关键发现
光猫路由模式下,路由器在二级网关位置仍能充当 IPv6 过滤网。“高”= 全拦,“低”= 全放,没有中间档位。

1.2 家用防火墙的“二档困境”

中兴 E2633 这类运营商定制路由器的 IPv6 防火墙只有两个选项:

  • 高(推荐):WAN→LAN 的 IPv6 入站全拦 → 树莓派 pi-ddns不通,ECS 反代回源也断
  • :WAN→LAN 的 IPv6 入站全放 → 树莓派通了,但同路由器下的电脑/手机 IPv6 也全暴露

没有“仅放行特定设备(树莓派)的特定端口(9133/8080),其余 WAN IPv6 入站拒”的第三档。
这是运营商定制固件在产品定义上的取舍——目标用户是“能上网就行”,不是“要写 IPv6 ACL 的树莓派玩家”。

1.3 第六篇现网方案的暴露面

第六篇验证期(几天到几周)采用“光猫低 + 中兴低 + 树莓派 ufw”是够用的,因为:

  • 验证期短,攻击窗口窄
  • 公网唯一暴露的入口是 pi-ddns.jiejinx.cn:9133,ufw 守门
  • 电脑/手机依赖自身默认防火墙

但若长期(数月到数年)将 IPv6 直连作为网盘/大流量入口,暴露面问题就会凸显:

  • 路由器“低”档位下,电脑的 3389/Redis/MySQL/Docker 端口虽被 Windows 默认防火墙挡了大部分,但开发工具链(Vite/Docker 等)可能自动加 0.0.0.0映射规则,进而放行端口,成为短板
  • 光猫 superuser 通用款若未改,管理口 IPv6 若 Listen,公网可扫到并爆入光猫 → 家宽整段失守
  • 树莓派 ufw 只能守树莓派自己,管不到同路由下其他设备

所以,IPv6 直连要长期跑,核心就是解决“路由器这层只有高/低二档”的瓶颈。

二、方案 A:刷 OpenWrt 拿 nftables 粒度(推荐参考)

2.1 设备选择

设备芯片成本OpenWrt 支持度推荐场景
旧中兴 E2633(移动合约期满)MT79810 元(已买断)✅ ImmortalWrt 有对应 DTS,社区热度中等折腾优先,刷不成再换
红米 AX6000MT7986≈250 元✅ 主线成熟,ImmortalWrt 稳定分支,教程多省心优先,刷机风险低
其他 MT7981/MT7986 机型200-400 元视具体型号按预算选

💡 推荐策略:旧路由器 (如E2633) 在不继续日常使用的前提下先试刷(0 元成本),能刷则用,刷不成再买红米 AX6000。

2.2 刷机路径概要(方向指引,非完整教程)

⚠️ 不同批次/固件版本的 E2633 锁的程度不同,以下路径适用于“能开 telnet”的批次。开不了 telnet 的批次只能当 AP 用,请跳转 第三节方案 B 或 承受低防护暴露风险。

  1. 开 telnet:搜索“ZXHN E2633 telnet 开启”或“中兴路由器 telnet 漏洞”,利用特定 URL 或固件版本漏洞开启 telnet 服务
  2. 备份原固件:telnet 进后,用 mtd命令 dump 全部分区(尤其 bootloader+ firmware+ art/factory),保存到本地。变砖时 TTL 救砖必备
  3. 解锁 bootloader:中兴定制款 u-boot 通常有签名校验,需用 zcu.py等工具解锁,才能刷入第三方固件
  4. 刷入 ImmortalWrt:从 uboot 下用 tftpboot 刷入 openwrt-mediatek-mt7981-zxhn_e2633-initramfs-kernel.bin,启动后 sysupgrade刷 squashfs 正式固件
  5. 验证 nftables:nft list tables应能看到 inet filter表,确认 FORWARD 链可自定义

💡 红米 AX6000 刷机更简单:解锁 SSH → 刷入 Uboot(mt7986_redmi_ax6000-stock)→ 刷 ImmortalWrt,教程在 OpenWrt 论坛和恩山无线论坛有大量参考。

2.3 nftables 规则集(核心)

刷完 OpenWrt 后,在 /etc/nftables.d/下新建规则文件(或直接编辑 /etc/config/firewall),实现“非树莓派 IPv6 的 WAN 入站流量直接拒绝”。

# /etc/nftables.d/99-ipv6-forward-filter.conf

table inet filter {
  # 树莓派 IPv6 地址(请替换为你的实际地址)
  # 注意:树莓派 IPv6 会变,需配合 2.4 节的自动化同步
  set raspberry_pi_v6 {
    type ipv6_addr
    elements = { 2409:8a7c:xxxx:xxxx:xxxx:xxxx:xxxx:1332 }
  }

  chain forward_wan_to_lan {
    # 默认策略:drop(WAN→LAN 的 IPv6 转发默认拒绝)
    type filter hook forward priority 0; policy drop;

    # 1. 目的地址不是树莓派 → 直接拒(电脑/手机的 WAN 入站边都摸不到)
    ip6 daddr != @raspberry_pi_v6 reject with icmpv6 port-unreachable

    # 2. 目的地址是树莓派 → 按端口放行
    ip6 daddr @raspberry_pi_v6 tcp dport 9133 accept    # ECS 反代回源
    ip6 daddr @raspberry_pi_v6 tcp dport 8080 accept    # 网盘(陌生 IP 宿命)

    # 3. 其他到树莓派的流量(保险,冗余规则)
    ip6 daddr @raspberry_pi_v6 reject
  }
}

效果:

  • 公网 IPv6 包目的 = 树莓派 → 进 FORWARD 链,按端口放 9133/8080
  • 公网 IPv6 包目的 = 电脑/手机 → FORWARD 链第一行即 reject,连设备自身的防火墙都到不了
  • 同 WiFi / 局域网(LAN→LAN)不受影响
  • 设备出网(LAN→WAN)不受影响

2.4 树莓派 IPv6 变化时的自动同步

光猫重拨或运营商重分 PD 会导致树莓派 IPv6 变化,nftables 中的 elements需要同步更新。推荐以下方案:

方案 A(推荐):路由器侧 ddns-go + nft sets 动态更新

在 OpenWrt 上安装 ddns-go,配置其监控 pi-ddns.jiejinx.cn的 AAAA 记录。当 AAAA 记录的 IPv6 地址发生变化时,通过 ddns-go 的 Webhook 或自定义脚本触发 nftables 更新:

bash
#!/bin/sh
# /usr/local/bin/update_nft_raspberry.sh
# 由 ddns-go Webhook 调用,传入新 IPv6 地址作为参数

NEW_IPV6=$1
if [ -z "$NEW_IPV6" ]; then
  logger -t update_nft "Error: no IPv6 provided"
  exit 1
fi

# 更新 nftables set
nft flush set inet filter raspberry_pi_v6
nft add element inet filter raspberry_pi_v6 { $NEW_IPV6 }

logger -t update_nft "Updated raspberry_pi_v6 to $NEW_IPV6"

方案 B:树莓派侧 ddns-go Webhook 触发路由器 SSH

树莓派上的 ddns-go 在更新 AAAA 记录成功后,执行一条 SSH 命令到路由器更新 nftables。需配置树莓派到路由器的 SSH 免密登录。

bash
# 树莓派侧 ddns-go 的 Webhook 命令(在 ddns-go 配置页设置)
ssh openwrt-router 'nft flush set inet filter raspberry_pi_v6 && nft add element inet filter raspberry_pi_v6 { '"$NEW_IPV6"' }'

方案 C(懒人):cron 每分钟检测

树莓派侧写一个 cron 脚本,每分钟检测自身 IPv6 地址,若变化则通过 SSH 通知路由器更新。简单但效率较低。

三、方案 B:光猫 DMZ / 端口映射变通(妥协解,不推荐)

3.1 原理

部分光猫在路由模式下提供“IPv6 DMZ”(将 WAN 侧 IPv6 入站全部转发到指定的 LAN 侧 IPv6 地址)或“IPv6 端口映射”(将 WAN 侧的特定端口转发到 LAN 侧特定设备的特定端口)。

3.2 局限性

项目说明
DMZ树莓派全端口暴露给 WAN IPv6,比路由器“低”档位更裸(光猫层不拦了,树莓派 ufw 是唯一防线)
端口映射理论上只放 9133/8080,但运营商定制光猫的 IPv6 端口映射入口多数没有(中兴/华为光猫 Web 里藏得深或直接阉割)
superuser 依赖配置 IPv6 端口映射通常需要 superuser 权限(通用款可进),但光猫 superuser 密码未改的话,这本身又是风险点
配置持久化光猫固件可能被运营商 ACS Push 重置,映射规则会丢

3.3 结论

方案 B 仅适用于“旧中兴刷不了 OpenWrt + 光猫恰好有 IPv6 端口映射入口 + 愿意接受光猫 superuser 通用款风险”的读者。不推荐作为首选。

若方案 A 和方案 B 都走不通,请退回第6篇方案(光猫低 + 中兴低 + 树莓派 ufw + 电脑自查),接受暴露面。

四、方案对比与选择建议

场景推荐路径成本防火墙粒度折腾度
旧 E2633 能刷 OpenWrt方案 A(旧中兴刷机)0 元✅ 高(nftables FORWARD)中高
旧 E2633 刷不成 + 愿花 250方案 A(红米 AX6000 刷机)≈250 元✅ 高(nftables FORWARD)
旧 E2633 刷不成 + 不愿花钱退守第六篇现网0 元⚠️ 低(路由器低+ufw)
完全不想折腾防火墙第七篇 ECS 反代(主推)99 元/年低(ECS 侧配置)

五、运维自动化要点

无论采用方案 A 还是退守第六篇现网,以下自动化措施建议落实:

项目工具/方法说明
IPv6 变化 → DNS 更新ddns-go(树莓派侧)第五篇已配置,持续运行
IPv6 变化 → 路由器防火墙同步见 2.4 节方案 A/B仅方案 A 需要
证书自动续期acme.sh cron第六篇已配置,持续运行
树莓派 ufw 日志监控logwatch / 手动可选,建议每月扫一眼 /var/log/ufw.log
光猫 superuser 密码 / 管理口 IPv6 检查手动(每半年)确认未被 ACS Push 重置

六、底线重申

⚠️ 合规底线(再次强调) 家宽 80/443 端口被封是运营商硬件层的限制,非标端口(9133/8080)在技术上能通,不等于合规允许长期运行未备案的自有服务 本番外的所有方案均以“自用、非经营、非面向公众”为前提。若你的服务需要对外开放(如分享给非家庭成员、用于商业演示),请务必转向第7篇的 ECS 反代方案并完成 ICP 备案 本番外不承诺合规性,读者需自行把控斟酌

**技术底线(即使防火墙粒度补上,也不能省的基础防护) **

即使你成功刷了 OpenWrt、写好了 nftables 规则,以下基础防护仍不可或缺:

层面措施对应章节
树莓派ufw(deny + 22+9133+8080)第六篇 6.4
树莓派fail2ban(防 SSH 爆破)第六篇 6.4 扩展
树莓派SSH key-only(禁密码登录)第六篇 6.4 扩展
树莓派acme.sh 泛域名 HTTPS(受信证书)第六篇 3.3
电脑侧wf.msc 自查 3389/Redis/MySQL/Docker/Vite第六篇 6.1 电脑段
光猫侧superuser 密码改 16 位+第六篇 6.1
光猫侧管理口 IPv6 关第六篇 6.1
光猫侧TR-069 可选关(配置稳优先)或留(售后兜底优先)第六篇 6.1

七、本番外与第7篇的关系

篇章定位公网入口合规状态适用场景
第6篇IPv6 直连验证pi-ddns:9133测试态,短期可接受验证链路连通性
6.1 番外IPv6 直连防火墙补完(参考)pi-ddns:9133/8080⚠️ 参考方案,需自行把控自用网盘/大流量长期跑
第7篇(主推)ECS 反代生产方案pi.jiejinx.cn:443(A→ECS)✅ 备案合规专栏主页/小流量/对外服务

IPv6 直连的“香”(家宽上传 30-50Mbps vs ECS 3M)是真实的,但它的“苦”(防火墙二档困境 + 合规摩擦)也是真实的。
本番外帮你提出把防火墙这层补到家用天花板的思路,但合规那层需要你自己权衡。专栏主推的、能安心的方案,永远是第7篇的 ECS 反代。