侧边栏壁纸
  • 累计撰写 38 篇文章
  • 累计创建 10 个标签
  • 累计收到 18 条评论

目 录CONTENT

文章目录

ddns-go 部署文档(阿里云动态域名解析 DDNS)

小杨学JAVA
2026-10-09 / 0 评论 / 0 点赞 / 1 阅读 / 0 字 / 正在检测是否收录...
温馨提示:
"请尊重网络安全,避免恶意攻击,让我们共同维护良好的网络环境。"

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)
服务器内网 IP192.168.32.155
服务器公网 IP39.174.170.144(动态)
面板宝塔面板 11.8.1
域名yw.xycs.work(主域名 xycs.work 已托管阿里云云解析)
ddns-go 版本v6.17.7

三、前置条件

  1. 阿里云 AccessKey
    • 建议在阿里云 RAM 控制台创建子用户,仅授予 AliyunDNSFullAccess 权限,生成 AccessKey。
    • 不要使用主账号 AccessKey。
  2. 域名已托管在阿里云云解析 DNS
    • 主域名 xycs.work 已添加到阿里云「云解析 DNS」。
  3. 服务器可访问 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.nameDNS 服务商,阿里云固定为 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 / passwordWeb 管理界面登录账号,密码为 bcrypt 加密
notallowwanaccesstrue = 禁止公网访问 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:9876Web 管理监听地址(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 行日志

十、安全建议

  1. 轮换阿里云 AccessKey:若密钥曾明文出现在聊天/文档中,请到阿里云控制台删除并重新生成,再更新配置文件后重启服务。
  2. 修改 Web 登录密码(默认密码请尽快更换)。
  3. 切勿在路由器/光猫上使用 DMZ:DMZ 会把设备所有端口暴露到公网(本机有 22/888/3306/9876 等)。只做端口转发。
  4. 配置文件保持 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 层:光猫 → 蒲公英路由器

  1. 登录光猫(一般 192.168.1.1)。
  2. 查看蒲公英路由器 WAN 口 IP。
  3. 光猫上设置「DMZ 主机」或「端口映射」,目标 = 蒲公英路由器 WAN IP。
  4. 建议给蒲公英 WAN 口做 DHCP 静态绑定,防止 IP 变化。

第 2 层:蒲公英路由器 → 服务器

  1. 登录蒲公英路由器:http://192.168.32.1。
  2. 进入「端口映射 / 虚拟服务器」。
  3. 添加规则: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 变化会导致映射失效,建议保证有线稳定

0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区