家用宽带动态公网 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 服务可以通过固定域名稳定对外提供访问。

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


相关推荐
Ivan CloudBay3 小时前
CDN 能完全隐藏源服务器 IP 吗?
运维·服务器·tcp/ip
夜郎king4 小时前
SpringBoot+PostgreSQL + 硅基流动大模型从零搭建 Text-to-SQL 智能问答系统
spring boot·postgresql·text-to-sql·llm大模型
funnycoffee1235 小时前
Cisco ip access-list序号重排方法
linux·网络·tcp/ip
2501_942389555 小时前
Nifty IT指数的K线犹如断线的风筝
人工智能·postgresql·时序数据库·storm·tdengine
乌萨奇也要立志学C++5 小时前
【Linux】传输层协议UDP与TCP详解
linux·tcp/ip·udp
AI人工智能+电脑小能手6 小时前
【大白话说Java面试题 第210题】【10_网络协议篇】第1题:说说 TCP/IP 网络五层模型
java·网络协议·tcp/ip·计算机网络·网络五层模型
不在逃避q6 小时前
使用.NET实现自带思考的Tool 并且提供mcp streamable http服务
网络协议·http·.net
K成长日志7 小时前
BLE链路层空口包--数据物理信道PDU
网络·物联网·网络协议·嵌入式·蓝牙·iot·ble
夜月yeyue16 小时前
AUTOSAR CP 从上电到 Runnable
c语言·网络·tcp/ip·车载系统
treesforest16 小时前
IP定位技术在网络犯罪侦查中的应用与价值
网络·网络协议·tcp/ip·网络安全·ip归属地查询·反欺诈