一、前置条件
1、已经有独立域名并解析到DNSPOD。
2、已经给域名创建了秘钥(API Token),成功获取到了ID和Token ,类似以下格式。
(ID: 501234
Token:123c94dfbc27d07cb0cd123bd8b1ca9d)
二、步骤
2.1 下载脚本程序
下载dnspod-shell客户端程序并上传到ubuntu服务器下。https://github.com/rehiy/dnspod-shell
2.2 修改配置文件
需要修改dns.conf文件中arToken和arDdnsCheck这2个字段,按需修改成你自己的id、token和域名即可。
特别注意的是# Import ardnspod functions . ardnspod 这里是指向ardnspod 这个文件,要写绝对地址,我就是这里错了。

1.. ardnspod
2.arToken="123456,de11003453a1f0123ac26d8c9fc4b8bcdefg"
3.arDdnsCheck "baidu.com" "www"

修改后我发现一直报错,

{"Code":"AuthFailure.SignatureFailure","Message":"The provided credentials could not be validated. Please check your signature is correct."},"RequestId":"

错误提示也看不明白,最后是在Github里面Issues发现问题所在。
需要用https://ipv4.rehi.org/ip 来获取本机外网IP,http已经失效了,用https就行了。

注意到最近脚本一直返回invalid ip address 一开始以为是运营商的锅
手动访问了下发现协议由http换成了https
将默认查询接口换成https://ipv4.rehi.org/ip与https://ipv4.rehi.org/ip后问题解决

这也就是说一共应该有4个地方需要修改。。。

2.3 运行脚本进行测试

bash /opt/ddnspod.sh

成功运行后,结果如下所示:

=== Check test.rehi.org ===
Fetching Host Ip
> Host Ip: Auto
> Record Type: A
Fetching RecordId
> Record Id: 998534425
Updating Record value
> arDdnsUpdate - 1.2.3.4

2.4 设置cron定时任务
因为家用宽带的wan ip会不定时的变化,可能一天、两天、三天,因此我需要在ip变化后的第一时间能够将最新的ip地址更新到域名上,因此需要利用Linux的cron定时任务来实现实时更新,我设置的是每5分钟运行一次脚本。
使用crontab -e命令在最后一行添加:

*/5 * * * * cd /home/xiaozhang/ddns-shell/ArDNSPod-master && ./ddnspod.sh

我的简单点。

*/5 * * * * /opt/ddnspod.sh

使用crontab -l命令查看是否添加成功。
另外还可以查看/var/log/cron.log日志,查看脚本是否已经每隔5分钟就在运行了

参考 https://blog.csdn.net/u010857736/article/details/127178571

最后修改:2024 年 07 月 28 日
如果觉得我的文章对你有用,请随意赞赏