大部分的 DNS 厂商对于 故障转移 之类的服务都收取费用,优点是简单,效率高,无需第三方参与,但收费。而此脚本可简单实现 DNS 的故障转移,有个闲置的机器即可实现。
- 原作者脚本支持 cloudflare 和 华为云 dns,支持 telegram 通知。本人稍微修改了下,也增加了 dnspod(国际) 的支持。
- 本文是在部署过程中的一些心得及一些小修改,感谢原作者的脚本
准备工作
- 用 root 登录 ssh,并新建一个目录,如 dns
- 切换到 dns 目录,下载源码
mkdir -p /root/dns && cd /root/dns
git clone https://github.com/BlueSkyXN/DNS-AUTO-Switch .
chmod +x /root/dns
后台运行 go 程序
- 运行 go 文件,用于后端的 ping api
- 自行安装supervisord或者用宝塔的supervisord进程管理,或screen或nohup。
- 可以进行 nginx 反代,实现 ping api 跟脚本分离,本文以本地运行为例
- 本文以宝塔的supervisord进程管理为例
- 添加进程

- 运行后的日志,出现此日志代表成功运行,如未出现请检查配置

修改配置文件
运行文件测试
- 先在 root 目录建立 .ip_域名文件.txt 例如:.ip_www.lyls.xyz.txt
- 在 dns 目录运行脚本
- 修改配置文件主 ip 为不可用 ip,运行脚本进行测试。测试完成后更改主 ip 为可用 ip
# cloudflare 运行 cf.sh 。dnspod 运行 dnspod.sh,这里以 cloudflare 为示例
./cf.sh
2023-05-09 20:34:19 开始读取配置
2023-05-09 20:34:19 API读取成功
未发现服务故障。无需更新 DNS 记录.
用定时任务调度脚本
# 运行定时任务
crontab -e
# 填写定时设置,本文示例是每分钟运行一次并记录日志到文件。如是dnspod 修改 cf.sh 为 dnspod.sh
*/1 * * * * sh /root/dns/cf.sh >> /root/dns/log.txt 2>&1
F.A.Q
# 22换成你想要的端口
CHECK=$(curl -s "$PING_API/$ORG_IP/22")
基于https://github.com/BlueSkyXN/DNS-AUTO-Switch修改调整测试
作者原文:https://www.blueskyxn.com/202102/4210.html
感谢原作者的付出!
评论 (0)