家用宽带动态公网 IP 下 Node + PostgreSQL 服务的 DDNS 全流程部署实践

文章目录


好的,我马上给你完全脱敏、干净可直接发 CSDN 的版本,所有真实域名、IP、账号信息全部替换成通用示例,你复制就能用。

家用宽带动态公网 IP 下 Node + PostgreSQL 服务的 DDNS 全流程部署实践

一、背景与需求

在个人开发者或小型团队的本地服务部署场景中,经常需要将内网运行的 Node.js 项目 + PostgreSQL 数据库 暴露到公网,方便外地/远程访问。

但家用宽带普遍存在一个问题:公网 IP 是动态分配的,重启光猫、网络重拨后 IP 就会变化,导致之前的访问地址失效。

本文基于 阿里云域名 + ddns-go 实现一套安全、稳定、零成本的动态域名解析(DDNS)方案,解决动态公网 IP 问题,同时包含内网静态 IP、端口映射、RAM 子账号权限最小化等完整实践,适合新手直接照着部署。


二、核心原理

  1. 动态公网 IP

    家用电信/联通/移动宽带不会分配固定公网 IP,每次重拨都会变化,无法长期用 IP 访问。

  2. DDNS 作用

    通过后台程序自动检测当前公网 IP,一旦发生变化,就自动更新域名解析记录,让一个固定域名始终指向最新公网 IP。

  3. 整体流程

    外网访问域名 → DNS 解析到当前公网 IP → 路由器端口转发 → 内网服务器(Node + PostgreSQL)


三、前置条件

  • 家庭宽带已获取 公网 IPv4(非运营商大内网)
  • 内网服务器已设置 静态内网 IP (如 192.168.1.xxx
  • 路由器/光猫已配置 端口转发(外网端口 → 内网服务端口)
  • 已在阿里云注册并完成备案的域名
  • 内网服务器为 Windows 环境(本文以 Windows 为例)

四、步骤一:阿里云域名添加解析记录

ddns-go 只能更新已存在的解析记录,不能自动创建,因此需要先手动添加一条 A 记录。

  1. 进入阿里云「云解析 DNS」→ 选择你的域名
  2. 添加解析记录:
    • 记录类型:A
    • 主机记录:自定义,如 homeserver
    • 记录值:填写当前公网 IP(后续会被自动覆盖)
    • TTL:600
  3. 保存,完成初始解析。

五、步骤二:创建阿里云 RAM 子账号(安全必做)

严禁使用主账号 AccessKey ,一旦泄露风险极高。

正确做法是创建一个仅拥有 DNS 解析权限的最小权限子账号。

  1. 进入阿里云 RAM 访问控制
  2. 新建用户:
    • 用户名:如 ddns_user
    • 访问方式:仅 API 访问,关闭控制台登录
  3. 为用户添加权限:
    • 搜索策略:AliyunDNSFullAccess
  4. 创建并保存 AccessKey ID + Secret(只显示一次,务必保存)

六、步骤三:Windows 安装并配置 ddns-go

ddns-go 是一款轻量开源 DDNS 工具,支持阿里云、腾讯云、Cloudflare 等,支持开机自启。

6.1 安装为系统服务

  1. 下载 ddns-go 并解压到固定目录

  2. 以管理员身份打开 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 变化自动同步

七、步骤四:验证是否生效

  1. 本地验证

    ping home.example.com

查看解析出的 IP 是否与当前公网 IP 一致。

  1. 外网验证
    使用手机流量或外地网络访问:

    http://home.example.com:端口号

能正常打开你的 Node 服务即表示成功。


八、常见问题总结

  1. 返回 403 无权限

    RAM 子账号未添加 AliyunDNSFullAccess 权限。

  2. 域名不更新

    • 域名填写错误,与云解析不一致
    • 未先手动创建 A 记录
  3. 公网能 ping 通但无法访问服务

    • 端口转发未配置正确
    • 服务器防火墙拦截了端口
    • 内网 IP 不是静态,导致转发失效
  4. IP 变化后无法访问

    ddns-go 服务未启动或电脑关机、休眠。


九、安全与运维建议

  • 永远使用 RAM 子账号,不要用主账号密钥
  • 内网服务器设置永不休眠,保证 DDNS 持续运行
  • 重要服务不要直接裸奔公网,可搭配简单鉴权、白名单
  • 定期检查 AccessKey,无用密钥及时删除
  • 内网 IP 务必固定,否则端口映射会失效

十、总结

本文通过 阿里云 DNS + ddns-go 实现了家用宽带动态公网 IP 的自动解析,让内网 Node + PostgreSQL 服务可以通过固定域名稳定对外提供访问。

整套方案免费、轻量、稳定、安全,非常适合个人开发者、家庭服务器、小型后台项目使用。


相关推荐
不会敲代码18 小时前
TCP/IP 与前端性能:从数据包到首次渲染的底层逻辑
前端·tcp/ip
S1998_1997111609•X8 小时前
论mysql国盾shell-sfa犯罪行为集团下的分项工程及反向注入原理尐深度纳米算法下的鐌檵鄐鉎行为
网络·数据库·网络协议·百度·开闭原则
BU摆烂会噶10 小时前
【LangGraph】持久化实现的三大能力——时间旅行
数据库·人工智能·python·postgresql·langchain
以太浮标15 小时前
华为eNSP模拟器综合实验之- MGRE多点GRE隧道详解
运维·网络·网络协议·网络安全·华为·信息与通信
遇见火星15 小时前
Nginx 负载均衡配置模板:轮询、权重、IP哈希、最少连接
tcp/ip·nginx·负载均衡
时空自由民.15 小时前
WebSocket 协议介绍
网络·websocket·网络协议
mounter62517 小时前
深入理解 Linux 网络新特性:netkit 中的 RX/TX Queue Leasing 与 TCP Devmem
linux·服务器·网络·tcp/ip·kernel
时空自由民.18 小时前
CAN ,CANFD,EtherCAT介绍
网络协议·计算机网络
炘爚18 小时前
TCP三次握手和四次挥手
服务器·网络·tcp/ip