家里宽带的公网 IP 通常不固定。路由器重启、断线重拨或者运营商调整分配策略,地址都可能变化。昨天还能从外面访问的 NAS 或博客,今天突然打不开,这是个人站长和远程办公用户常遇到的情况。解决思路一般有两个:让域名自动指向新 IP,或者把流量先引到一台固定公网 IP 的云主机上。

先弄清楚动态 IP 为什么会变
动态 IP 是运营商临时分配给你的公网地址,对方并不承诺长期不变。家庭宽带默认就是这种方式,成本低,但拿来长期对外提供服务,地址一变,访问就断。阿里云 ECS 的公网 IP 在实例运行期间一般保持稳定,所以不少人会想办法把家里的服务和云上的固定地址接起来。
三种常见做法
云解析 DNS 加定时脚本
这是个人用户最常选的方案。家里的树莓派、NAS 或旧笔记本定时获取当前公网 IP,和上一次记录比对,发生变化时调用阿里云云解析的 API,把 A 记录更新成新地址。访问的人只记域名,不用关心 IP 变没变。
举个场景:家里的 NAS 上跑着一个个人博客,域名的解析托管在阿里云。脚本每隔几分钟检查一次,只有 IP 变了才去改记录。把 TTL 调低之后,切换等待时间会明显缩短。具体能缩短到多少,取决于检查频率、TTL 和本地网络状况,建议自己实测一次。
内网穿透或隧道服务
如果不想让家庭网络直接暴露在公网上,可以用内网穿透工具,由服务商的中转节点把本地服务转发出去。这种方式不依赖公网 IP 是否变化,但多了一个第三方节点,延迟和稳定性取决于服务商,安全边界也要重新评估。
云服务器中转
在阿里云购买一台轻量应用服务器或 ECS,拿到固定公网 IP,再用 frp、WireGuard 之类的工具,让家里的设备主动连回云主机。外部访问先到云端,再转发回家。稳定性和可控性最好,代价是多一台云主机的费用,也多一套需要维护的组件。
云解析方案的配置步骤
如果你选择第一种方案,可以按下面的顺序操作:
- 在云解析 DNS 控制台确认域名已接入,为需要的主机记录添加 A 记录。初始值可以先填一个占位 IP,脚本第一次运行时会覆盖它。
- 在 RAM 中新建子账号,只授予解析相关的权限,再生成 AccessKey。不要用主账号的密钥做这件事,一旦泄露,影响范围会大很多。
- 在家里的设备上编写更新脚本:获取当前公网 IP,与本地缓存的上一次值对比,不一致时调用 API 修改记录,并更新缓存。
- 用 cron 或 systemd timer 定时执行脚本,日志写入文件。第一次跑通后,可以主动断网重连一次,观察记录是否按预期更新。
AccessKey 不要写进公开仓库。更稳妥的做法是放在环境变量或单独的密钥文件里,并把文件权限收紧到只有运行脚本的用户可读。
如果服务跑在 ECS 上,安全组要改哪里
安全组是 ECS 的网络访问控制,入方向规则决定外部能不能连进实例。假设你用的是云服务器中转方案,外部请求打到的是 ECS 的公网端口,家里设备通过隧道连回云主机。这时要在 ECS 控制台的安全组里,为对外服务端口和隧道端口添加入方向规则。源地址尽量填写具体的 IP 段,别直接开放 0.0.0.0/0。同时,域名的 A 记录应指向 ECS 的公网 IP,而不是家里的地址。
如果是直接在家里路由器做端口映射,阿里云安全组不参与这段流量,需要调整的是路由器的端口转发和本机防火墙。两处配置要分清。改错地方,外部照样连不上,排查时容易走很多弯路。
需要注意的几个问题
安全风险
家庭网络一旦暴露在公网上,端口扫描、暴力破解和漏洞利用都可能找上门。只开放必要端口,管理后台设置强密码并开启二次验证,系统和服务软件及时更新。如果服务只给自己或少数人使用,优先考虑 VPN,比直接开放端口省心得多。
解析生效延迟
DNS 缓存会让记录更新后无法立刻全网生效。TTL 设得太长,切换会慢;设得太短,查询量和请求压力都会上升。通常可以在 300 到 600 秒之间取舍,具体还要结合访问量和你能接受的中断时长。
运营商条款
部分运营商对家庭宽带架设公共服务有限制,比如禁止某些端口,或者限制对外提供服务。上线前看一眼宽带服务协议,别等账号受限了才发现。
动态 IP 的问题并不难处理。选对方案,把解析记录和安全组各自的位置找准,再把安全设置做扎实,家里的服务就能稳定跑起来。