🛡️ “能 ping 通 = 裸奔”?IPv6 可达与安全放行实践(附 WireGuard 远程访问)
1) “能 ping 通 = 裸奔”?先别慌
- OpenWrt 默认有两大区域:lan(内网) 与 wan(公网)。
- lan → wan 允许转发(家里设备能上网)。
- wan → * 禁止转发(公网默认进不来)。
为何公网还能 ping 到你家设备的 IPv6?因为在「通信规则(Traffic Rules)」里有一条 ICMPv6 例外放行,用于保证 IPv6 的基本连通性(比如邻居发现)。
要点:它只放特定类型的 ICMPv6,并不代表开放了你的服务端口。
被 ping 到 ≠ 可任意访问。别动烂默认防火墙,就谈不上“裸奔”。🙂
2) 用什么测?先自检两招
- Ping IPv6(ICMP):https://www.itdog.cn/ping
- TCPing IPv6(端口探测):https://www.itdog.cn/tcping_ipv6
看到 ping 绿灯 ≠ 服务开放;能 tcping 到某个端口才说明端口对公网可达。
3) 公网远程管理路由器:安全打开“只这一条门”
步骤 A:用 DDNS 解决“IPv6 前缀会变”
免费方案可用 dynv6。思路:路由器定时上报最新 IPv6(或前缀),你只记一个域名就行。
提示:DDNS 提升可达性同时降低隐私(域名更易被扫描),务必仅开放必要端口 + 强口令。
步骤 B:别用 80/443,换自定义端口
- 很多地区 80/443 可能被管控;可在端口转发里把外部 20000 → 内部 80(路由器 Web 管理)。
- 之后访问:
http://[你的IPv6或DDNS域名]:20000
- HTTPS:快捷用自签证书(浏览器会提示不安全但传输已加密);更佳用 ACME+DNS-API 申请正规 CA 证书,再让 uHTTPd/nginx 指向
fullchain
与key
。 - 记得在 防火墙 → 流量规则 放行该对外端口(仅限 IPv6/TCP)。
4) 让公网只打到“那台设备的那个端口”:接口 ID + 反掩码
IPv6 前缀会变,但接口后 64 位(Interface ID)通常固定。我们按接口 ID 写规则,只放“谁的哪个端口”。
# 示例:拼出设备完整 IPv6(在路由器上执行)
INTERF=br-lan
SUFFIX="6dcb:1863:2bd1:b28f" # 把这里替换为目标设备固定的后64位
ip -6 addr show dev $INTERF | awk '/inet6/ && !/fe80::|deprecated/ {print $2}' | cut -d':' -f1-4 | sed "s/$/:$SUFFIX/"
# 说明:
# - INTERF=br-lan:从哪个接口拿前缀
# - SUFFIX="...": 设备固定的后64位
# - 输出即为目标设备的完整可达 IPv6
在「通信规则」新增:
- 源:wan;目标:lan
- 目标地址:用反掩码匹配该设备的后 64 位
- 目标端口:如 NAS 的
9000/TCP
- 动作:接受
🔒 效果:只允许公网访问“这台设备的这个端口”,其他一概不放行。
5) 连通性验证:先测再上生产
- 用 TCPing IPv6 验证端口(如 9000)是否可达:测试链接
- 用手机 5G 访问:
http://[设备的IPv6或DDNS域名]:9000
若服务端日志里来访地址是公网 IPv6,说明已实现 端到端(无 NAT) 访问。🚀
6) 给内网设备做单独 DDNS(更好记)
- 在 DDNS 工具里再加一个任务,给 NAS/PC 绑定 专属子域名;
- IPv6 地址来源用“命令获取”,把上面脚本拼出的完整地址更新到该域名;
- 之后直接用
域名+端口
访问,直观且不怕前缀变。
7) 代理节点/管理面要暴露公网?三思而行
做法 A:路由器自建节点(如 vmess+ws)
- 选未被封的端口(如 8899;部分“免流”场景必须 80,但并非处处可用)。
- 服务启动时让系统自动追加防火墙放行规则。
- 强密码/UUID,只暴露必要端口。
做法 B:暴露 HTTP/SOCKS 入站(如 OpenClash 7893)
- 必须开启用户名/密码;
- 不要放行 UDP(历史上有绕过认证风险,即便修复也建议保守配置)。
- 需要远程切换节点/分流?可暴露 Clash WebUI,但务必强密码;更推荐:不暴露,VPN 回家后在内网改。
8) “不暴露还要远程管”?上 VPN 吧
真 VPN(WireGuard / IPsec / OpenVPN)把你拉进内网,不必在公网开一堆口子。
参考安装文档:
- WireGuard 安装:https://www.wireguard.com/install/
- 免费 DDNS(dynv6):https://dynv6.com/
实操要点(OpenWrt/软路由):
- 服务器端新建 WG 接口:
192.168.5.1/24
、端口23456/UDP
- 每个客户端分配
AllowedIPs
(如192.168.5.2/32
) - 防火墙放行
UDP/23456
(IPv6) - iOS/Android 扫二维码导入;Windows/macOS 粘
.conf
一键连 - 速度慢/丢包多?把 MTU 调到
1400/1380
,直到不再分片
为什么 VPN 能拿到真实 ping?因为它封装的是完整 IP 包(网络层)。
9) 快速排错 Checklist(实用主义 👍)
- ping 通但 tcping 不通:端口未放行或目标服务未监听。
- DDNS 正常但访问失败:解析到了旧前缀/错地址 → 查更新日志。
- 内外网表现不一致:只在 wan 放行了吗?lan 侧是否也需要一条本地自测规则?
- 速度忽快忽慢:看 MTU 是否分片;或 80/443 被运营商管控。
- 安全第一:对外端口最小化、强口令、尽量 VPN 进内网再管理。
🔚 一句话带走
能被 ping ≠ 裸奔。默认防火墙挡得住;需要远程,就精准放行 + DDNS;想更安全省心,上 VPN 回家再管。其余端口,能不开就不开,能收口就收口,安心睡大觉 😴。
No responses yet