文章目录
- [家用宽带动态公网 IP 下 Node + PostgreSQL 服务的 DDNS 全流程部署实践](#家用宽带动态公网 IP 下 Node + PostgreSQL 服务的 DDNS 全流程部署实践)
-
- 一、背景与需求
- 二、核心原理
- 三、前置条件
- 四、步骤一:阿里云域名添加解析记录
- [五、步骤二:创建阿里云 RAM 子账号(安全必做)](#五、步骤二:创建阿里云 RAM 子账号(安全必做))
- [六、步骤三:Windows 安装并配置 ddns-go](#六、步骤三:Windows 安装并配置 ddns-go)
-
- [6.1 安装为系统服务](#6.1 安装为系统服务)
- [6.2 网页配置(浏览器访问 localhost:9876)](#6.2 网页配置(浏览器访问 localhost:9876))
- 七、步骤四:验证是否生效
- 八、常见问题总结
- 九、安全与运维建议
- 十、总结
好的,我马上给你完全脱敏、干净可直接发 CSDN 的版本,所有真实域名、IP、账号信息全部替换成通用示例,你复制就能用。
家用宽带动态公网 IP 下 Node + PostgreSQL 服务的 DDNS 全流程部署实践
一、背景与需求
在个人开发者或小型团队的本地服务部署场景中,经常需要将内网运行的 Node.js 项目 + PostgreSQL 数据库 暴露到公网,方便外地/远程访问。
但家用宽带普遍存在一个问题:公网 IP 是动态分配的,重启光猫、网络重拨后 IP 就会变化,导致之前的访问地址失效。
本文基于 阿里云域名 + ddns-go 实现一套安全、稳定、零成本的动态域名解析(DDNS)方案,解决动态公网 IP 问题,同时包含内网静态 IP、端口映射、RAM 子账号权限最小化等完整实践,适合新手直接照着部署。
二、核心原理
-
动态公网 IP
家用电信/联通/移动宽带不会分配固定公网 IP,每次重拨都会变化,无法长期用 IP 访问。
-
DDNS 作用
通过后台程序自动检测当前公网 IP,一旦发生变化,就自动更新域名解析记录,让一个固定域名始终指向最新公网 IP。
-
整体流程
外网访问域名 → DNS 解析到当前公网 IP → 路由器端口转发 → 内网服务器(Node + PostgreSQL)
三、前置条件
- 家庭宽带已获取 公网 IPv4(非运营商大内网)
- 内网服务器已设置 静态内网 IP (如
192.168.1.xxx) - 路由器/光猫已配置 端口转发(外网端口 → 内网服务端口)
- 已在阿里云注册并完成备案的域名
- 内网服务器为 Windows 环境(本文以 Windows 为例)
四、步骤一:阿里云域名添加解析记录
ddns-go 只能更新已存在的解析记录,不能自动创建,因此需要先手动添加一条 A 记录。
- 进入阿里云「云解析 DNS」→ 选择你的域名
- 添加解析记录:
- 记录类型:A
- 主机记录:自定义,如
home、server - 记录值:填写当前公网 IP(后续会被自动覆盖)
- TTL:600
- 保存,完成初始解析。
五、步骤二:创建阿里云 RAM 子账号(安全必做)
严禁使用主账号 AccessKey ,一旦泄露风险极高。
正确做法是创建一个仅拥有 DNS 解析权限的最小权限子账号。
- 进入阿里云 RAM 访问控制
- 新建用户:
- 用户名:如
ddns_user - 访问方式:仅 API 访问,关闭控制台登录
- 用户名:如
- 为用户添加权限:
- 搜索策略:
AliyunDNSFullAccess
- 搜索策略:
- 创建并保存 AccessKey ID + Secret(只显示一次,务必保存)
六、步骤三:Windows 安装并配置 ddns-go
ddns-go 是一款轻量开源 DDNS 工具,支持阿里云、腾讯云、Cloudflare 等,支持开机自启。
6.1 安装为系统服务
-
下载 ddns-go 并解压到固定目录
-
以管理员身份打开 CMD,进入目录执行:
ddns-go.exe -s install
ddns-go.exe -s start
6.2 网页配置(浏览器访问 localhost:9876)
关键配置项:
- DNS 服务商:阿里云
- AccessKey ID / Secret:填写 RAM 子账号密钥
- Domains:填写你要动态解析的域名(如
home.example.com) - IP 获取方式:公网 IP → 通过网址获取
- 关闭 IPv6(家用场景一般不需要)
- 开启自动更新、开机自启
保存后,ddns-go 会:
- 自动获取当前公网 IP
- 自动更新阿里云域名解析
- 后续每几分钟检测一次,IP 变化自动同步
七、步骤四:验证是否生效
-
本地验证
ping home.example.com
查看解析出的 IP 是否与当前公网 IP 一致。
-
外网验证
使用手机流量或外地网络访问:
能正常打开你的 Node 服务即表示成功。
八、常见问题总结
-
返回 403 无权限
RAM 子账号未添加
AliyunDNSFullAccess权限。 -
域名不更新
- 域名填写错误,与云解析不一致
- 未先手动创建 A 记录
-
公网能 ping 通但无法访问服务
- 端口转发未配置正确
- 服务器防火墙拦截了端口
- 内网 IP 不是静态,导致转发失效
-
IP 变化后无法访问
ddns-go 服务未启动或电脑关机、休眠。
九、安全与运维建议
- 永远使用 RAM 子账号,不要用主账号密钥
- 内网服务器设置永不休眠,保证 DDNS 持续运行
- 重要服务不要直接裸奔公网,可搭配简单鉴权、白名单
- 定期检查 AccessKey,无用密钥及时删除
- 内网 IP 务必固定,否则端口映射会失效
十、总结
本文通过 阿里云 DNS + ddns-go 实现了家用宽带动态公网 IP 的自动解析,让内网 Node + PostgreSQL 服务可以通过固定域名稳定对外提供访问。
整套方案免费、轻量、稳定、安全,非常适合个人开发者、家庭服务器、小型后台项目使用。