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

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


相关推荐
程序人生5182 小时前
ubuntu桌面版安装后配置允许root通过图形界面登录和ssh登录 亲测有效
ubuntu·postgresql·ssh
灰子学技术2 小时前
Envoy 中 UDP 网络通信实现分析
网络·单片机·嵌入式硬件·网络协议·udp
wanhengidc2 小时前
双线服务器的优势有哪些?
运维·服务器·网络·网络协议·智能手机
lbb 小魔仙2 小时前
无公网 IP 环境下的 PostgreSQL 远程访问方案:基于内网穿透技术的全流程解析
网络协议·tcp/ip·postgresql
biter down3 小时前
UDP 服务端 + 客户端 全场景字节序 & 类型转换
网络协议·udp·php
TechWayfarer3 小时前
电竞玩家的IP分布:中韩对抗赛的观众地域画像分析
网络·网络协议·tcp/ip
Hello_Embed3 小时前
嵌入式上位机开发入门(二十):写文件功能的 RTU/TCP 双协议适配
网络·笔记·单片机·网络协议·tcp/ip·嵌入式
IpdataCloud3 小时前
风控策略误杀正常用户?如何用IP离线库多维特征优化规则阈值
网络·tcp/ip·安全·ip
TechWayfarer3 小时前
移动网络IP定位难题:4G/5G用户的IP为什么老飘?
网络·tcp/ip·5g