yzy613 / ddns-watchdog

简单快速的可常驻的 Dynamic DNS 软件,自动更新域名解析记录值。现已支持 DNSPod AliDNS(阿里云 DNS) Cloudflare HuaweiCloud(华为云),支持 IPv4 IPv6 双栈,支持使用网卡 IP 地址。可在绝大多数系统上运行。若需其他域名解析服务商,欢迎到 Issues 提出需求
Apache License 2.0
152 stars 27 forks source link
aliyun cloudflare daemon ddns ddns-watchdog dnspod huaweicloud ipv6-support network-card-support
     _______________   _______________   ______      ___   _______________
    /  _______    \ \ /  _______    \ \ /  _   |    /  /| /  ____________/|
   /  /|______\   / //  /|______\   / //  / |  |   /  / //  |____________|/
  /  / /      /  / //  / /      /  / //  / /|  |  /  / /|\__________  \ \
 /  /_/______/  / //  /_/______/  / //  / / |  |_/  / / _|_________/  / /
/______________/ //______________/ //__/ /  |______/ //______________/ /
|______________|/ |______________|/ |__|/   |______|/ |______________|/

ddns-watchdog

Language DeepSource .github/workflows/go.yml Releases Downloads ClickDownload

现已支持 DNSPod AliDNS(阿里云 DNS) Cloudflare HuaweiCloud(华为云),支持 IPv4 IPv6 双栈,支持使用网卡 IP 地址。支持自建中心节点代理客户端修改域名解析记录。

准备工作

  1. 拥有 (公网动态) IPv6 地址或 (公网动态) IPv4 地址
  2. 拥有一个能申请修改解析记录的 Token 的域名 (若没有,可以前往 DNSPod 阿里云或其他提供商购买域名)
  3. 域名的 DNS 服务器指向 支持的服务商

客户端

用法

Usage:
  -c, --conf string    指定配置文件目录 (目录有空格请放在双引号中间)
  -f, --force          强制检查 DNS 解析记录
  -i, --init string    有选择地初始化配置文件并退出,可以组合使用 (例 01)
                       0 -> client.json
                       1 -> dnspod.json
                       2 -> alidns.json
                       3 -> cloudflare.json
                       4 -> huaweicloud.json
  -I, --install        安装服务并退出
  -n, --network-card   输出网卡信息并退出
  -U, --uninstall      卸载服务并退出
  -V, --version        查看当前版本并检查更新后退出

初始客户端配置文件

{
  "api_url": {
    "ipv4": "https://yzyweb.cn/ddns-watchdog",
    "ipv6": "https://yzyweb.cn/ddns-watchdog6",
    "version": "https://yzyweb.cn/ddns-watchdog"
  },
  "center": {
    "enable": false,
    "api_url": "",
    "token": ""
  },
  "enable": {
    "ipv4": false,
    "ipv6": false
  },
  "network_card": {
    "enable": false,
    "ipv4": "",
    "ipv6": ""
  },
  "services": {
    "dnspod": false,
    "alidns": false,
    "cloudflare": false,
    "huawei_cloud": false
  },
  "check_cycle_minutes": 0
}

第一次使用?

  1. 前往 releases 下载符合自己系统的压缩包,解压得到二进制文件
  2. 注意:Windows 的记事本保存的文件编码为 UTF-8 with BOM,需要使用第三方编辑器手动重新编码为 UTF-8,否则将会出现乱码导致无法读取正确的配置
  3. 在 Linux 上不要忘记程序需要执行权限 chmod 700 ddns-watchdog-client
  4. 使用 ./ddns-watchdog-client -i 01234 初始化配置文件 (在 Windows 上使用 ddns-watchdog-client-startup-script.bat 一气呵成)
  5. 根据使用环境确定启用 (enable) IPv4 还是 IPv6 或是两者都启用
  6. 若未启用网卡,默认使用 API 获取对应 IP 地址
  7. 若需使用网卡的 IP 地址,请在 ./conf/client.json 修改 network_card->enabletrue 并运行一次程序自动获取网卡信息,从 ./conf/network_card.json 里面选择网卡填入 ./conf/client.jsonnetwork_card
  8. ./conf/client.jsonnetwork_card->ipv4ipv6 为空,对应 IP 地址将从 API 获取

    此示例展示 IPv4 从 API 获取,IPv6 从 example 网卡获取

    {
      "enable": {
        "ipv4": true,
        "ipv6": true
      },
      "network_card": {
        "enable": true,
        "ipv4": "",
        "ipv6": "example"
      }
    }
  9. 按照 支持的服务商 进行配置
  10. 若需配置不同域名的 ddns-watchdog,可以结合 -c 启动参数配置多种配置文件 (可搭配 -i 启动参数初始化配置文件)
  11. 如果解析记录值更新成功,那么程序工作正常,可以在 ./conf/client.json 启用 check_cycle_minutes 进行定期检查 (单位:分钟)(默认为 0,意为不启用定期检查)
  12. 注意:ddns-watchdog 设计了 IP 地址本地比对机制,以防止频繁访问 API 导致封禁。若手动修改了解析记录值,会导致无法及时更新 (可搭配 -f 启动参数强制检查解析记录值以跳过本地比对机制)

    Enjoy it!(觉得好用可以点一个 star 噢)

可选操作

支持的服务商

DNSPod

AliDNS (阿里云 DNS)

Cloudflare

HuaweiCloud

没有找到你的域名解析服务商?

服务端

返回 Json 格式的客户端 IP 地址 (支持 IPv4 IPv6 双栈),可选中心节点的功能。

服务端 用法

Usage:
  -A, --A string           指定需要修改的 A 记录
      --AAAA string        指定需要修改的 AAAA 记录 (默认同 A 记录,除非单独指定)
  -a, --add                添加或更新 token 信息到白名单
  -c, --conf string        指定配置文件目录 (目录有空格请放在双引号中间)
  -d, --delete             删除白名单中的 token
  -D, --domain string      指定需要操作的域名
  -g, --generate-token     生成 token 并输出
  -i, --init string        有选择地初始化配置文件并退出,可以组合使用 (例 01)
                           0 -> server.json
                           1 -> services.json
                           2 -> whitelist.json
  -I, --install            安装服务并退出
  -m, --message string     备注 token 信息
  -s, --service string     指定需要采用的域名解析服务提供商,以下是可指定的提供商
                           dnspod
                           alidns
                           cloudflare
                           huaweicloud
  -t, --token string       指定 token (长度在 [16,127] 之间,支持 UTF-8 字符)
  -l, --token-length int   指定生成 token 的长度 (default 48)
  -U, --uninstall          卸载服务并退出
  -V, --version            查看当前版本并检查更新后退出

初始服务端配置文件

{
  "server_addr": ":10032",
  "is_root_server": false,
  "root_server_url": "https://yzyweb.cn/ddns-watchdog",
  "center_service": false,
  "route": {
    "get_ip": "/",
    "center": "/center"
  },
  "tls": {
    "enable": false,
    "cert_file": "",
    "key_file": ""
  }
}

初始服务配置文件

{
  "dnspod": {
    "enable": false,
    "id": "",
    "token": ""
  },
  "alidns": {
    "enable": false,
    "access_key_id": "",
    "access_key_secret": ""
  },
  "cloudflare": {
    "enable": false,
    "zone_id": "",
    "api_token": ""
  },
  "huawei_cloud": {
    "enable": false,
    "access_key_id": "",
    "secret_access_key": ""
  }
}

安装

Arch Linux

基于 Arch Linux 的发行版, 可以通过 AUR 安装

yay -S ddns-watchdog          // yay
pikaur -S ddns-watchdog       // pikaur

文档资源

DNSPod API https://www.dnspod.cn/docs/index.html

Aliyun SDK GitHub or https://help.aliyun.com/product/29697.html

Cloudflare API https://api.cloudflare.com/#dns-records-for-a-zone-properties

HuaweiCloud SDK GitHub