ddns-watchdog
ddns-watchdog copied to clipboard
简单快速的可常驻的 Dynamic DNS 软件,自动更新域名解析记录值。现已支持 DNSPod AliDNS(阿里云 DNS) Cloudflare HuaweiCloud(华为云),支持 IPv4 IPv6 双栈,支持使用网卡 IP 地址。可在绝大多数系统上运行。若需...
_______________ _______________ ______ ___ _______________
/ _______ \ \ / _______ \ \ / _ | / /| / ____________/|
/ /|______\ / // /|______\ / // / | | / / // |____________|/
/ / / / / // / / / / // / /| | / / /|\__________ \ \
/ /_/______/ / // /_/______/ / // / / | |_/ / / _|_________/ / /
/______________/ //______________/ //__/ / |______/ //______________/ /
|______________|/ |______________|/ |__|/ |______|/ |______________|/
ddns-watchdog
现已支持 DNSPod AliDNS(阿里云 DNS) Cloudflare,支持 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
-k, --insecure 使用 https 链接时不检查 TLS 证书合法性
-I, --install 安装服务并退出
-n, --network-card 输出网卡信息并退出
-U, --uninstall 卸载服务并退出
-v, --version 查看当前版本并检查更新后退出
pflag: help requested
-
./ddns-watchdog-client -i 0123初始化所有配置文件并退出此示例展示仅初始化客户端和 DNSPod 的配置文件
./ddns-watchdog-client -i 01代码参考表
0 -> client.json 1 -> dnspod.json 2 -> alidns.json 3 -> cloudflare.json -
./ddns-watchdog-client使用默认配置文件目录conf运行 -
./ddns-watchdog-client -n输出网卡信息并退出 -
./ddns-watchdog-client -c conf指定配置文件目录为 conf (目录有空格请放在双引号中间) -
./ddns-watchdog-client -I安装服务并退出 (仅限有 systemd 的 Linux 使用) -
./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
},
"check_cycle_minutes": 0
}
第一次使用?
-
前往 releases 下载符合自己系统的压缩包,解压得到二进制文件
-
注意:Windows 的记事本保存的文件编码为 UTF-8 with BOM,需要使用第三方编辑器手动重新编码为 UTF-8,否则将会出现乱码导致无法读取正确的配置
-
在 Linux 上不要忘记程序需要执行权限
chmod 755 ddns-watchdog-client -
使用
./ddns-watchdog-client -i 0123初始化配置文件 (在 Windows 上使用 ddns-watchdog-client-startup-script.bat 一气呵成) -
根据使用环境确定启用 (
enable) IPv4 还是 IPv6 或是两者都启用 -
若未启用网卡,默认使用 API 获取对应 IP 地址
-
若需使用网卡的 IP 地址,请在
./conf/client.json修改enable->network_card为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填入你的accesskey_id, accesskey_secret, domain, sub_domain并重新启动 -
支持同一个域名的 A 和 AAAA 记录的子域名同时更新记录值
初始 AliDNS 配置文件
{ "accesskey_id": "在 https://ram.console.aliyun.com/users 获取", "accesskey_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" } }
没有找到你的域名解析服务商?
- 请在 Issues 提出 Issue 或者在 Pull requests Pull request (感激不尽)
服务端
返回 Json 格式的客户端 IP 地址 (支持 IPv4 IPv6 双栈)
服务端 用法
Usage:
-a, --add-token 添加 token 到白名单
-c, --conf string 指定配置文件目录 (目录有空格请放在双引号中间)
-g, --generate-token 生成 token 并输出
-i, --init string 有选择地初始化配置文件并退出,可以组合使用 (例 01)
0 -> server.json
1 -> whitelist.json
2 -> services.json
-k, --insecure 使用 https 链接时不检查 TLS 证书合法性
-I, --install 安装服务并退出
-m, --message string 备注 token 信息 (default "undefined")
-t, --token string 指定 token (长度在 [16,127] 之间,支持 UTF-8 字符)
-l, --token-length int 指定生成 token 的长度 (default 48)
-U, --uninstall 卸载服务并退出
-v, --version 查看当前版本并检查更新后退出
pflag: help requested
./ddns-watchdog-server -a -g -m string生成 token 并备注信息再加入白名单./ddns-watchdog-server -a -t string -m string指定 token 并备注信息再加入白名单./ddns-watchdog-server -I安装服务并退出./ddns-watchdog-server -c conf指定配置文件目录为 conf (目录有空格请放在双引号中间)./ddns-watchdog-server -i 012初始化所有配置文件并退出systemctl start 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,
"accesskey_id": "",
"accesskey_secret": ""
},
"cloudflare": {
"enable": false,
"zone_id": "",
"api_token": ""
}
}
安装
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