碎碎念
对于每一个在家里托管服务的 HomeLab 玩家来说,公网 IPv4 是最宝贵但也最脆弱的资源。
这一年多来,我利用家庭宽带搭建了自己的博客和开发环境。架构很标准:Linux 服务器 + Nginx + DDNS(动态域名解析) + 路由器端口转发。这套方案一直运行得很稳定,直到昨天,我突然发现无法从外网访问我的域名了。
人在异地,服务器失联,控制台显示一切正常。这场排查过程堪称一次心情的“过山车”,从怀疑公网 IP 被收回,到最终发现“真凶”,特此记录全过程,希望能给遇到类似问题的同学提个醒。
0x01 故障现象:DDNS 正常,但门关了
起初我以为只是普通的网络波动。但我尝试访问博客,浏览器转圈直至超时。 我立刻检查了我的域名控制台,发现 DDNS 脚本依然在正常工作,并且在最近几个小时内域名已经解析到了一个新的 IP 地址。这说明服务器此时正常联网了
既然域名指向了正确的 IP,为什么连不上?通常这意味着两个可能:
服务器宕机了。
网络通路断了(防火墙或端口转发失效)。
由于我人在外地,无法物理接触服务器,焦虑感瞬间拉满。
0x02 第一次误判:公网 IP 被回收了?
最近运营商正在大规模回收家庭宽带的公网 IPv4 地址,将其转换为 CGNAT(运营商级 NAT)。这是我最担心的情况。
为了验证,我让家人帮忙重启了光猫。我当时的逻辑是:“如果重启后 IP 变了,说明是动态 IP,那就是公网 IP 吧?”
重启后,IP 确实变了。但我很快意识到这是一个巨大的技术误区:
误区纠正: 即使是运营商的大内网 IP(10.x.x.x 或 100.64.x.x),也是通过 DHCP 动态分配的。重启光猫会导致 IP 变化,同时可能会导致网络出口发生变化了,这并不能证明你拥有公网 IP。
此时,无论怎么重启,端口转发依然不通。我开始绝望地认为,我的公网 IP 已经变成了大内网 IP,之前的端口转发规则因为处于 NAT 之后而彻底失效了。
0x03 关键转折:远程桌面的“曲线救国”
因为无法物理接触我的服务器无法连接,导致我此时急得抓耳挠腮,时间已经过去了24小时了
为了确认服务器到底还活没活着,我死马当活马医,想起了家里还有一台 比较老旧的Windows 电脑。于是指导家人打开了那台电脑,并运行了 ToDesk。
我通过 ToDesk 远程连接到家里的 Windows PC,做了一次关键的测试: 在浏览器输入服务器的局域网 IP。
结果:页面秒开。
这一步排查排除了服务器本身的问题。既然内网能访问,外网不能访问,问题被精确锁定在 “光猫/路由器网关” 这一层。
0x04 真相大白:消失的 NAT 表
我通过远程桌面,在浏览器里输入了光猫的后台地址,输入管理员密码登录。
点开 “高级配置” -> “NAT 设置” -> “虚拟主机配置” 的那一刻,我被气笑了。
空的。
原本设置好的 80、443、SSH 等端口转发规则,全部消失得无影无踪。
如果你也遇到过光猫配置莫名丢失的情况,这通常是 TR-069 协议 的“锅”。这是运营商用于远程管理光猫的协议。当运营商后台下发某些配置更新、固件升级,或者进行全网配置同步时,在此过程中,用户在本地光猫后台手动添加的“非标配置”(如端口转发、DMZ)很有可能会被直接覆盖或清空。
结论: 联通在我不知情的情况下,重置了光猫的配置,虽然没有收回我的公网 IP(谢天谢地),但把我的门锁全换了。

0x05 妥协与进化:无法改桥接下的终极方案
现实的约束
原本最彻底的方案是将光猫改为桥接模式 (Bridge Mode),由我自己的路由器拨号。但考虑到家中光猫还承担着家人的 Wi-Fi 连接和其他业务,改为桥接会改变网络拓扑,可能影响家人的上网体验。
既然不能改变“网络环境”,那就改变“连接方式”。我制定了名为 "Operation Backdoor" 的两套新方案,确保即使光猫再次被重置端口转发,我也能从外部从容连回家中。
Plan A:IPv6 单独解析 —— 另一扇门
虽然 IPv4 的端口转发依赖光猫配置,但 IPv6 是全球单播地址,不经过 NAT(前提是解决好防火墙问题)。
策略: 启用 IPv6 DDNS,解析一个独立的域名(如
v6.yanchang.xyz)。用途: 当 IPv4 端口转发失效时,我可以通过支持 IPv6 的网络(现在的手机 5G 网络通常都支持)直接访问服务器进行维护,重新配置路由器。
Plan B:SSH 反向隧道 (Reverse Tunnel) —— 永不断的网线
这是本次整改的核心大招。既然光猫喜欢清空“入站”规则,那我就利用**“出站”**连接。
原理: 让家里的服务器主动向我拥有的一台公网 IPv4 VPS 发起 SSH 连接,并建立反向隧道。只要家里服务器能上网(出站通常不被限制),隧道就能建立。
效果: 无论光猫怎么重置 NAT,甚至哪怕我变成了大内网 IP,只要服务器还活着,我就可以通过公网 VPS “跳”回家里。
0x06 硬核实操:手搓自动保活的 SSH 隧道服务(参考服务器开荒那个文章)
结语
这场与运营商配置的“猫鼠游戏”最终以我建立了一条加密的“地下通道”而告终。
对于家庭实验室玩家来说,冗余(Redundancy) 是稳定性的基石。不要完全依赖单一的连接方式(比如光猫端口转发)。当公网 IP 并不是真正属于你的时候,只有掌握在自己手里的隧道,才是最可信赖的后门。woza