背景:我有一个家庭宽带(电信),公网 IP 是动态分配的,经常变动(比如今天是
223.154.81.207,明天可能是223.154.81.208)。 我想在外网通过一个固定的域名(比如comfy.abc.com)访问我家里的 ComfyUI 服务(运行在http://comfy.abc.com:8181)。
家用宽带的公网IP为什么会经常变动?
- 光猫重启。
- 部分地区的电信/联通/移动运营商,为了防止光猫长时间运行死机或清理缓存,会在后台下发配置,让光猫在凌晨(比如 3:00)自动重启;
- 光猫如果放置在弱电箱内,散热环境极差。当 CPU 温度过高时,硬件会自动触发重启机制以保护电路;
- 家用宽带的光猫配的电源适配器质量往往一般。如果家里电压有波动,或者电源适配器老化,光猫也会因为瞬间断电而重启。
- 运营商端的 PPPoE 租约限制。电信机房通常会强制设定一个周期(比如 48 小时或 7 天),一旦时间到了,机房端会强制切断你的拨号连接并要求重新认证。
- 公网 IP 是动态分配的。大部分家庭宽带的公网 IP 都是动态分配的,而不是静态固定的。运营商会根据网络负载和资源分配情况,动态调整用户的公网 IP 地址。
解决方案:使用 DDNS(动态域名解析服务)
DDNS(Dynamic Domain Name System)是一种服务,可以让你的域名自动更新到你当前的公网 IP 地址。这样,无论你的公网 IP 如何变化,你都可以通过一个固定的域名访问你的家庭网络设备。
我家的网络结构是这样的:
[互联网]
|
[光猫(拨号)]
|
[H3C 路由器]
|
[Windows 电脑(ComfyUI)]
这里有一个巨大的坑需要避开:
- 如果直接在 H3C 路由器 上设置 DDNS,路由器获取到的 WAN 口 IP 是
192.168.1.2(内网IP),它可能会把这个内网 IP 发给域名服务商,导致解析失败。 - 最佳方案: 在你的 Windows 电脑 上运行一个小软件(DDNS 客户端)。它会直接访问互联网查询你真正的公网 IP(
223.x.x.x),然后更新给域名。这能完美绕过双重路由的 IP 识别问题。
下面我以最稳定、最主流的 阿里云 (Aliyun) 为例,配合开源神器 DDNS-Go,实现动态域名解析。
准备工作
- 约 10-30 元人民币(购买一个便宜的域名,首年通常很便宜)。
- 你的 Windows 电脑(运行本地服务
ComfyUI的那台)。
第一步:购买域名并获取“钥匙” (以阿里云为例)
你需要先有一个属于你的域名,并拿到控制它的“钥匙” (AccessKey)。
-
注册与购买:
- 访问 阿里云万网。
- 搜索一个你喜欢的域名,比如
zhangsan-ai.xyz或comfyui-test.top(.top,.xyz这种后缀通常很便宜,几块钱一年)。 - 购买并完成实名认证(国内规定必须实名)。 :
2.1 创建用户:
-
登录阿里云控制台。
-
将鼠标悬停在右上角的头像上,点击 AccessKey管理。
-
选择 “使用 RAM 用户 AccessKey”(为了安全,不要用主账号)。
-
点击右侧的用户,选择创建用户
-
填写登录名称:
ddns-user,其他信息不用填。 -
勾选 使用永久 AccessKey 访问。
-
勾选 我确认必须创建AccessKey。
-
点击确定。
2.2 安全验证
- 根据提示完成手机或扫脸验证。
2.3 复制秘钥
- 创建成功后,会显示
AccessKey ID和AccessKey Secret。立刻复制保存下来,因为关掉页面就看不到了!
2.4 授权:
- 刷新网页,在用户列表,找到刚才创建的
ddns-user,可以看到右侧有一个 “新增授权” 按钮,点击它。 - 点击右侧 “新增授权”。
- 搜索
DNS,选择AliyunDNSFullAccess(管理云解析DNS的权限),点击确认新增授权。
完成之后,看到执行状态是已完成就行了。
-
第二步:在电脑上配置“自动更新员” (DDNS-Go)
我们需要一个软件,每隔几分钟检查一下你的 IP 变没变,变了就自动告诉阿里云。推荐使用 DDNS-Go,免费、开源、界面友好。
-
下载软件:
- 去 GitHub 下载 DDNS-Go。
- 我的·
ComfyUI服务在Windows上,所以我下载ddns-go_x.x.x_windows_x86_64.tar.gz,大家根据自己的系统选择对应版本。 - 解压到一个文件夹。
-
安装服务:
- 右键以管理员身份运行
ddns-go.exe。
- 右键以管理员身份运行
-
或者在文件夹里右键“安装服务.bat” (如果有),让它开机自启。
-
运行后,可以看到它在监听9876端口,然后在浏览器打开
http://127.0.0.1:9876这个网页。 -
首次进入直接是管理员注册,设置一个用户名和密码,注册成功后登录。我这里已经是注册过,所以这里显示登录的字样。
-
配置 DDNS-Go:
- DNS服务商:选择 Aliyun。
- AccessKey ID:填入刚才在阿里云复制的 ID。
- AccessKey Secret:填入刚才在阿里云复制的 Secret。
- IPv4 设置:
- 是否启用:勾选。
- 获取 IP 方式:重点! 选择 “通过接口获取”。这是为了让它忽略本机的 192.168 IP,直接去问互联网“我是谁”。(默认的
myip.ipip.net就很好)。 - Domains (域名):填入你刚才买的域名。
- 如果你买的是
abc.com,你可以填comfy.abc.com。这样comfy就是你的二级子域名。 - IPv6:如果不通可以不勾选。
- 点击 【保存】。 其他的一些选项可以不选择或默认。
-
查看日志:
- 在网页右侧看日志,如果出现
更新域名解析成功或新增域名解析成功,说明配置通了!
- 在网页右侧看日志,如果出现
第三步:验证与使用
-
等待生效:首次解析可能需要几分钟。
-
测试:
- 打开 Windows 终端 (cmd),输入:
ping comfy.abc.com(换成你的域名)。 - 看返回的 IP 地址是不是你现在的公网 IP(
223.154.81.207)。如果一致,说明域名已经指向你家了。
- 打开 Windows 终端 (cmd),输入:
-
最终访问:
- 以后在外面,只需要输入:
http://comfy.abc.com:8181(这里8181是 ComfyUI 运行的端口)就能访问你家里的 ComfyUI 了! - 不管电信怎么改你的 IP,DDNS-Go 都会自动把这个域名指向最新的 IP。
- 以后在外面,只需要输入:
总结 (避坑指南)
- 为什么不用路由器的 DDNS?
因为你的 H3C 路由器 WAN 口是
192.168.1.2,很多老旧路由器的 DDNS 很傻,会把这个内网 IP 传上去,导致外网访问不了。用电脑上的 DDNS-Go 走“接口获取”模式是最稳的。 - 电脑必须开机吗? 是的。如果电脑关机了,IP 变了就没人汇报了。但既然你是远程连 ComfyUI,电脑本来就得开着,所以没影响。
- 域名要备案吗? 如果你只是用来做 API 或者自己访问,不绑定国内服务器的 80/443 端口做网站,通常只需要实名认证,不需要进行繁琐的 ICP 备案(只要你不用国内服务器做 Web 托管)。直接解析到家庭宽带 IP 是可以用的。
附录:
DDNS-Go 是如何解析到家庭宽带的公网 IP 的?
简短说明:DDNS 客户端(如 ddns-go)把你的“公网 IP”写入 DNS 是两个步骤:先探测外网 IP,再把该 IP 通过域名提供商的 API 更新为 A/AAAA 记录。
原理要点(逐步):
- 探测公网 IP:客户端常用的方法有
- 访问外部 HTTP 服务(例:api.ipify.org、https://ifconfig.c…返回你从那台服务看到的源地址;
- 使用 STUN 协议向 STUN 服务器询问(适用于 NAT 环境,可以得到 NAT 后的公网地址/端口);
- 读取本机网卡地址(仅在没有 NAT 时有用,但通常这是内网地址,不是公网 IP)。
- 判断是否需要更新:把探测到的 IP 与当前 DNS 记录里的 IP 比较(客户端会查询 DNS 或缓存的上一次值)。
- 更新 DNS:如果不一致,客户端用配置的 DNS 提供商凭证(Cloudflare、阿里云、Namecheap 等)调用其 API 或使用动态 DNS 协议把 A/AAAA 记录改为最新公网 IP。
- 生效与传播:DNS 记录更新后,DNS 缓存(TTL)会影响全网看到变化的时间。