EC2 没有绑定 EIP,重启后 IP 会变?DDNS-GO 自动更新你的域名
在 IPV4 即将枯竭的年代,云服务商的 EIP 也开始收费了。对于没有弹性公网 IP(EIP)的云服务器,我们可以通过 DDNS-GO 实现动态域名解析。本文介绍了如何使用 Docker 快速部署 DDNS-GO,并借助 DDNS 实现动态域名绑定,从而让服务器即使公网 IP 变化,也能够实时更新域名解析记录,这样只需要使用域名访问,不再需要在控制台查看。
安装 Docker
使用官方安装脚本快速安装 Docker:
1 | curl -fsSL https://get.docker.com -o get-docker.sh |
设置 Docker 开机自启并立即启动:
1 | sudo systemctl enable --now docker |
添加当前用户到 docker 用户组(避免每次用 sudo)
1 | sudo usermod -aG docker $USER |
生效方式:
- 推荐:重新登录终端会话
- 或使用临时方式立即生效:
1 | newgrp docker |
验证是否配置成功:
1 | docker info |
若无权限报错,则配置已生效。
Docker 中部署 DDNS-GO
我们将使用 Docker 的 host 网络模式挂载主机目录,确保 DDNS 能正常检测本地 IP:
1 | docker run -d --name ddns-go --restart=always --net=host -v /opt/ddns-go:/root jeessy/ddns-go |
/opt/ddns-go是主机目录,你可以替换为任意路径,用于持久化配置。启动后,DDNS-GO 的配置文件为
.ddns-go.yaml,位于挂载目录中。
初始化配置
部署完成后,打开浏览器访问:
1 | http://<Docker主机IP>:9876 |
你会看到 DDNS-GO 的初始化页面,如图所示:

DDNS-GO 是一个开源的动态域名更新工具,支持多个域名服务商,我的域名托管在 cloudflare 上,所以需要在 cloudflare 上申请一个 API-KEY 来做这个更新。
- TTL 建议设置为“自动”
- IP 获取方式推荐使用外网 API(如 ipip.net)

前往 Cloudflare 的 API Token 页面,为 DDNS-GO 创建一个具备修改 DNS 权限的 Token。
建议选择 “Edit zone DNS” 模板,只赋予必要权限,并可以限制在特定域名范围内使用。

此外,DDNS-GO 支持 webhook 通知,可选用如 Slack、Server 酱等方式实时通知 IP 变动情况。

验证 DDNS 的效果
我们尝试停止云主机后再重新开启,公网 IP 会发生变化:

重启后 DDNS-GO 会自动检测 IP 变动并更新域名解析:

通过域名访问服务仍然保持不变,无需手动更新 IP。
同时 Server 也会把这个消息推送到手机上:

总结
即使云服务器没有绑定弹性公网 IP,借助 DDNS-GO 和 Docker,我们依然可以实现动态域名解析:
- 低成本:无需购买 EIP,节省开销;
- 自动化:IP 改变后自动更新域名解析;
- 易部署:Docker 一键运行,配置简单直观。
EC2 没有绑定 EIP,重启后 IP 会变?DDNS-GO 自动更新你的域名


