ddns-go 部署文档(阿里云动态域名解析 DDNS)
本文档记录在本服务器上部署 ddns-go、对接阿里云 DNS、实现动态公网 IP 自动更新解析的完整过程。
文档路径:/root/ddns-go-部署文档.md
一、需求与目标
- 场景:宽带为动态公网 IP,IP 会变化。
- 目标:让域名
yw.xycs.work的 A 记录自动跟随公网 IP 变化,无需人工修改。 - 方案:使用开源工具 ddns-go(GitHub: jeessy2/ddns-go),对接阿里云云解析 DNS。
二、环境信息
| 项目 | 值 |
|---|---|
| 操作系统 | Ubuntu 26.04 LTS (x86_64) |
| 服务器内网 IP | 192.168.32.155 |
| 服务器公网 IP | 39.174.170.144(动态) |
| 面板 | 宝塔面板 11.8.1 |
| 域名 | yw.xycs.work(主域名 xycs.work 已托管阿里云云解析) |
| ddns-go 版本 | v6.17.7 |
三、前置条件
- 阿里云 AccessKey
- 建议在阿里云 RAM 控制台创建子用户,仅授予
AliyunDNSFullAccess权限,生成 AccessKey。 - 不要使用主账号 AccessKey。
- 建议在阿里云 RAM 控制台创建子用户,仅授予
- 域名已托管在阿里云云解析 DNS
- 主域名
xycs.work已添加到阿里云「云解析 DNS」。
- 主域名
- 服务器可访问 GitHub(下载安装包)与阿里云 API。
四、安装步骤
4.1 下载最新版
cd /tmp
VER=$(curl -s https://api.github.com/repos/jeessy2/ddns-go/releases/latest | grep -oP '"tag_name":\s*"\K[^"]+')
curl -sL -o ddns-go.tar.gz "https://github.com/jeessy2/ddns-go/releases/download/${VER}/ddns-go_${VER#v}_linux_x86_64.tar.gz"
tar -xzf ddns-go.tar.gz
4.2 安装到系统目录
install -m 755 /tmp/ddns-go /usr/local/bin/ddns-go
/usr/local/bin/ddns-go -v # 验证版本
五、配置文件
路径:/etc/ddns-go/ddns-go.yaml(权限 600,仅 root 可读)
dnsconf:
- name: alidns
ipv4:
enable: true
gettype: url
url: https://ip.sb, https://ifconfig.me/ip, https://myip.ipip.net
netinterface: ""
cmd: ""
domains:
- yw.xycs.work
ipv6:
enable: false
gettype: netInterface
url: ""
netinterface: ""
cmd: ""
ipv6reg: ""
domains:
- ""
dns:
name: alidns
id: <你的AccessKey ID>
secret: <你的AccessKey Secret>
extparam: ""
ttl: ""
httpinterface: ""
user:
username: admin
password: <bcrypt加密后的密码>
webhook:
webhookurl: ""
webhookrequestbody: ""
webhookheaders: ""
notallowwanaccess: true
lang: zh
关键字段说明:
| 字段 | 说明 |
|---|---|
dnsconf[].dns.name | DNS 服务商,阿里云固定为 alidns |
dnsconf[].dns.id / secret | 阿里云 AccessKey ID / Secret |
ipv4.gettype | 获取 IP 方式:url(接口获取)/netInterface(网卡)/cmd(命令) |
ipv4.url | 获取公网 IP 的接口,多个用英文逗号分隔,逐个尝试 |
ipv4.domains | 要自动更新的域名,如 yw.xycs.work |
ipv6.enable | 是否启用 IPv6(本方案为 false) |
user.username / password | Web 管理界面登录账号,密码为 bcrypt 加密 |
notallowwanaccess | true = 禁止公网访问 Web 界面,仅内网可访问 |
设置配置文件权限:
chmod 600 /etc/ddns-go/ddns-go.yaml
六、systemd 服务
路径:/etc/systemd/system/ddns-go.service
[Unit]
Description=ddns-go - A simple dynamic DNS client (Aliyun DNS)
Documentation=https://github.com/jeessy2/ddns-go
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
ExecStart=/usr/local/bin/ddns-go -l 0.0.0.0:9876 -f 300 -c /etc/ddns-go/ddns-go.yaml
Restart=on-failure
RestartSec=5
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
启动参数说明:
| 参数 | 说明 |
|---|---|
-l 0.0.0.0:9876 | Web 管理监听地址(0.0.0.0 表示所有网卡;仅本机访问可写 127.0.0.1) |
-f 300 | 检测间隔,单位秒(300 秒 = 5 分钟) |
-c /etc/ddns-go/ddns-go.yaml | 指定配置文件路径 |
七、启动与验证
systemctl daemon-reload
systemctl enable ddns-go
systemctl start ddns-go
systemctl status ddns-go --no-pager
验证解析是否生效:
# 查询阿里云权威 DNS 的解析结果
dig +short @223.5.5.5 yw.xycs.work
# 查看本机当前公网 IP
curl -s https://ip.sb
# 两者应一致
启动日志正常示例:
监听 0.0.0.0:9876
更新域名解析 yw.xycs.work 成功! IP: 39.174.170.144
八、Web 管理界面
- 局域网访问地址:
http://192.168.32.155:9876 - 登录账号:
admin - 登录密码:
BtDdns@2026Go(⚠️ 建议尽快修改) - 因开启了「禁止公网访问」(
notallowwanaccess: true),公网来源访问会返回 403,仅内网可访问。
修改密码:
systemctl stop ddns-go
/usr/local/bin/ddns-go -c /etc/ddns-go/ddns-go.yaml -resetPassword '你的新密码'
systemctl start ddns-go
九、常用运维命令
systemctl status ddns-go # 查看状态
systemctl restart ddns-go # 重启
systemctl stop ddns-go # 停止
systemctl is-enabled ddns-go # 是否开机自启
journalctl -u ddns-go -f # 实时查看日志
journalctl -u ddns-go -n 50 # 查看最近 50 行日志
十、安全建议
- 轮换阿里云 AccessKey:若密钥曾明文出现在聊天/文档中,请到阿里云控制台删除并重新生成,再更新配置文件后重启服务。
- 修改 Web 登录密码(默认密码请尽快更换)。
- 切勿在路由器/光猫上使用 DMZ:DMZ 会把设备所有端口暴露到公网(本机有 22/888/3306/9876 等)。只做端口转发。
- 配置文件保持
600权限,避免密钥泄露。
十一、外网访问(双重 NAT 端口映射)
本服务器处于双重 NAT结构(光猫为路由模式,前面还有一台蒲公英路由器):
[互联网] 公网IP 39.174.170.144
│
[光猫] 路由模式(拨号) 内网网段 192.168.1.x
│
[蒲公英路由器] WAN=192.168.1.x LAN=192.168.32.1
│
[服务器] 192.168.32.155
要让外网访问,需配两层映射:
第 1 层:光猫 → 蒲公英路由器
- 登录光猫(一般
192.168.1.1)。 - 查看蒲公英路由器 WAN 口 IP。
- 光猫上设置「DMZ 主机」或「端口映射」,目标 = 蒲公英路由器 WAN IP。
- 建议给蒲公英 WAN 口做 DHCP 静态绑定,防止 IP 变化。
第 2 层:蒲公英路由器 → 服务器
- 登录蒲公英路由器:
http://192.168.32.1。 - 进入「端口映射 / 虚拟服务器」。
- 添加规则:
80 → 192.168.32.155:80、443 → 192.168.32.155:443。
前提条件
- 宽带必须是真公网 IP(非 100.64.x.x 大内网 / CGNAT)。
- 运营商未封 80/443 入站端口(家宽常见封禁,若被封改用 8080/8443 等)。
验证
用**手机流量(关闭 WiFi)**访问 http://yw.xycs.work,能打开即成功。
十二、常见问题
| 问题 | 排查方向 |
|---|---|
| 解析没更新 | 检查 AccessKey 权限、域名是否在阿里云、日志 journalctl -u ddns-go |
| Web 登录不了 | 确认密码;密码不对可用 -resetPassword 重置 |
| 公网访问返回 403 | 正常现象,notallowwanaccess: true 仅允许内网访问 |
| 外网打不开域名 | 检查是否真公网 IP、两层映射是否配好、80/443 是否被封 |
| 有线掉线后外网访问断 | 端口映射指向的是有线 IP,切 WiFi 后 IP 变化会导致映射失效,建议保证有线稳定 |
评论区