_______________ _______________ ______ ___ _______________
/ _______ \ \ / _______ \ \ / _ | / /| / ____________/|
/ /|______\ / // /|______\ / // / | | / / // |____________|/
/ / / / / // / / / / // / /| | / / /|\__________ \ \
/ /_/______/ / // /_/______/ / // / / | |_/ / / _|_________/ / /
/______________/ //______________/ //__/ / |______/ //______________/ /
|______________|/ |______________|/ |__|/ |______|/ |______________|/
ddns-watchdog
现已支持 DNSPod AliDNS(阿里云 DNS) Cloudflare HuaweiCloud(华为云),支持 IPv4 IPv6 双栈,支持使用网卡 IP 地址。支持自建中心节点代理客户端修改域名解析记录。
准备工作
- 拥有 (公网动态) IPv6 地址或 (公网动态) IPv4 地址
- 拥有一个能申请修改解析记录的 Token 的域名 (若没有,可以前往 DNSPod 阿里云或其他提供商购买域名)
- 域名的 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
-k, --insecure 使用 https 链接时不检查 TLS 证书合法性
-I, --install 安装服务并退出
-n, --network-card 输出网卡信息并退出
-U, --uninstall 卸载服务并退出
-v, --version 查看当前版本并检查更新后退出
-
./ddns-watchdog-client -i 01234
初始化所有配置文件并退出此示例展示仅初始化客户端和 DNSPod 的配置文件
./ddns-watchdog-client -i 01
代码参考表
0 -> client.json 1 -> dnspod.json 2 -> alidns.json 3 -> cloudflare.json 4 -> huaweicloud.json
-
./ddns-watchdog-client
使用默认配置文件目录conf
运行 -
./ddns-watchdog-client -n
输出网卡信息并退出 -
./ddns-watchdog-client -c conf
指定配置文件目录为 conf (目录有空格请放在双引号中间) -
./ddns-watchdog-client -I
安装服务并退出 (仅限有 systemd 的 Linux 使用) -
systemctl start ddns-watchdog-client
启动服务 -
systemctl enable ddns-watchdog-client
开机自启服务 -
./ddns-watchdog-client -U
卸载服务并退出 (仅限有 systemd 的 Linux 使用) -
./ddns-watchdog-client -f
强制检查解析记录值 -
./ddns-watchdog-client -v
查看当前版本并检查更新后退出
初始客户端配置文件
{
"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
}
第一次使用?
-
前往 releases 下载符合自己系统的压缩包,解压得到二进制文件
-
注意:Windows 的记事本保存的文件编码为 UTF-8 with BOM,需要使用第三方编辑器手动重新编码为 UTF-8,否则将会出现乱码导致无法读取正确的配置
-
在 Linux 上不要忘记程序需要执行权限
chmod 700 ddns-watchdog-client
-
使用
./ddns-watchdog-client -i 01234
初始化配置文件 (在 Windows 上使用 ddns-watchdog-client-startup-script.bat 一气呵成) -
根据使用环境确定启用 (
enable
) IPv4 还是 IPv6 或是两者都启用 -
若未启用网卡,默认使用 API 获取对应 IP 地址
-
若需使用网卡的 IP 地址,请在
./conf/client.json
修改network_card
->enable
为true
并运行一次程序自动获取网卡信息,从./conf/network_card.json
里面选择网卡填入./conf/client.json
的network_card
-
若
./conf/client.json
的network_card
->ipv4
或ipv6
为空,对应 IP 地址将从 API 获取此示例展示 IPv4 从 API 获取,IPv6 从 example 网卡获取
{ "enable": { "ipv4": true, "ipv6": true }, "network_card": { "enable": true, "ipv4": "", "ipv6": "example" } }
-
按照 支持的服务商 进行配置
-
若需配置不同域名的 ddns-watchdog,可以结合
-c
启动参数配置多种配置文件 (可搭配-i
启动参数初始化配置文件) -
如果解析记录值更新成功,那么程序工作正常,可以在
./conf/client.json
启用check_cycle_minutes
进行定期检查 (单位:分钟)(默认为 0,意为不启用定期检查) -
注意:ddns-watchdog 设计了 IP 地址本地比对机制,以防止频繁访问 API 导致封禁。若手动修改了解析记录值,会导致无法及时更新 (可搭配
-f
启动参数强制检查解析记录值以跳过本地比对机制)Enjoy it!(觉得好用可以点一个 star 噢)
可选操作
-
在有 systemd (systemctl) 的 Linux 上
- 使用
./ddns-watchdog-client -I
安装服务,就可以使用systemctl
管理 ddns-watchdog-client 服务了
- 使用
-
在 Windows 上
- ddns-watchdog-client-startup-script.bat 一键运行程序并回显程序返回的信息 (需与 ddns-watchdog-client.exe 同一文件夹)
- ddns-watchdog-client-nohup.vbs 不弹出运行窗口,在后台静默运行 (需与 ddns-watchdog-client.exe 同一文件夹)
Win
+R
后键入shell:startup
会打开开机启动文件夹,将快捷方式粘贴在此处,即可进行开机启动 (或把 ddns-watchdog-client-nohup.vbs 的快捷方式粘贴在此处,进行开机启动后台静默运行)
支持的服务商
DNSPod
-
请在
./conf/client.json
修改dnspod
为true
-
打开配置文件
./conf/dnspod.json
填入你的id, token, domain, sub_domain
并重新启动 -
支持同一个域名的 A 和 AAAA 记录的子域名同时更新记录值
初始 DNSPod 配置文件
{ "id": "在 https://console.dnspod.cn/account/token/token 获取", "token": "在 https://console.dnspod.cn/account/token/token 获取", "domain": "example.com", "sub_domain": { "a": "A记录子域名", "aaaa": "AAAA记录子域名" } }
AliDNS (阿里云 DNS)
-
请在
./conf/client.json
修改alidns
为true
-
打开配置文件
./conf/alidns.json
填入你的access_key_id, access_key_secret, domain, sub_domain
并重新启动 -
支持同一个域名的 A 和 AAAA 记录的子域名同时更新记录值
初始 AliDNS 配置文件
{ "access_key_id": "在 https://ram.console.aliyun.com/users 获取", "access_key_secret": "在 https://ram.console.aliyun.com/users 获取", "domain": "example.com", "sub_domain": { "a": "A记录子域名", "aaaa": "AAAA记录子域名" } }
Cloudflare
-
请在
./conf/client.json
修改cloudflare
为true
-
打开配置文件
./conf/cloudflare.json
填入你的zone_id, api_token, domain
并重新启动 -
支持同一个域名的 A 和 AAAA 记录的子域名同时更新内容
初始 Cloudflare 配置文件
{ "zone_id": "在你域名页面的右下角有个区域 ID", "api_token": "在 https://dash.cloudflare.com/profile/api-tokens 获取", "domain": { "a": "A记录子域名.example.com", "aaaa": "AAAA记录子域名.example.com" } }
HuaweiCloud
-
请在
./conf/client.json
修改huawei_cloud
为true
-
打开配置文件
./conf/huaweicloud.json
填入你的access_key_id, secret_access_key, zone_name, domain
并重新启动 -
支持同一个域名的 A 和 AAAA 记录的子域名同时更新内容
初始 HuaweiCloud 配置文件
{ "access_key_id": "在 https://console.huaweicloud.com/iam/ 获取", "secret_access_key": "在 https://console.huaweicloud.com/iam/ 获取", "zone_name": "example.com.", "domain": { "a": "A记录子域名.example.com.", "aaaa": "AAAA记录子域名.example.com." } }
没有找到你的域名解析服务商?
- 请在 Issues 提出 Issue 或者在 Pull requests Pull request (感激不尽)
服务端
返回 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
-k, --insecure 使用 https 链接时不检查 TLS 证书合法性
-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 查看当前版本并检查更新后退出
./ddns-watchdog-server -a -g -s service -D example.com -A v4 --AAAA v6 -m description
添加完整的信息并生成 token 再加入白名单./ddns-watchdog-server -I
安装服务并退出./ddns-watchdog-server -c conf
指定配置文件目录为 conf (目录有空格请放在双引号中间)./ddns-watchdog-server -i 012
初始化所有配置文件并退出systemctl start ddns-watchdog-server
启动服务systemctl enable ddns-watchdog-server
开机自启服务./ddns-watchdog-server -U
卸载服务并退出./ddns-watchdog-server -v
查看当前版本并检查更新后退出
初始服务端配置文件
{
"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