一、前置条件
1、已经在腾讯云上申请了dnspod的域名。
2、已经给域名创建了秘钥(API Token),成功获取到了ID和Token。
二、具体步骤
2.1 下载脚本程序
下载dnspod-shell客户端程序并上传到ubuntu服务器下。https://github.com/rehiy/dnspod-shell
2.2 修改配置文件
需要修改dns.conf
文件中arToken
和arDdnsCheck
这2个字段,按需修改成你自己的id、token和域名即可。
# 1. Combine your token ID and token together as follows
arToken="123456,de11003453a1f0123ac26d8c9fc4b8bcdefg"
# 2. Place each domain you want to check as follows
# you can have multiple arDdnsCheck blocks
arDdnsCheck "baidu.com" "www"
ddnspod.sh
中IPtype
字段默认的1就是大家通用的环境,获取你所在局域网出口wan ip,因此我这里不修改。
第4个Local-WAN模式(一般用不到):Local-WAN是指路由器作为一个大局域网的子网,某些场景下需要获取当前路由器的WAN IP,这些WAN IP一般仍然是一个子网IP。
IPtype=1 #1.WAN 2.LAN 3.IPv6 4.Local-WAN
2.3 运行脚本进行测试
xiaozhang@ubuntu:~/ddns-shell/ArDNSPod-master$ ./ddnspod.sh
Type: A
OS: Linux
Address: 111.1.53.68
Updating Domain: www.baidu.com
hostIP: 111.1.53.68
lastIP: 111.1.53.68
Last IP is the same as current, no action.
如此可以发现,我当前的出口wan IP和域名中最后记录的ip是同一个,所以无需更新,证明脚本是好用的。
2.4 设置cron定时任务
因为家用宽带的wan ip会不定时的变化,可能一天、两天、三天,因此我需要在ip变化后的第一时间能够将最新的ip地址更新到域名上,因此需要利用Linux的cron定时任务来实现实时更新,我设置的是每5分钟运行一次脚本。
使用crontab -e
命令在最后一行添加:
*/5 * * * * cd /home/xiaozhang/ddns-shell/ArDNSPod-master && ./ddnspod.sh
使用crontab -l
命令查看是否添加成功。
另外还可以查看/var/log/cron.log日志,查看脚本是否已经每隔5分钟就在运行了,我们发现的确如此。
xiaozhang@ubuntu:~/ddns-shell/ArDNSPod-master$ tail -f /var/log/cron.log
Oct 5 23:50:04 ubuntu CRON[32607]: (CRON) info (No MTA installed, discarding output)
Oct 5 23:55:01 ubuntu CRON[32716]: (xiaozhang) CMD (cd /home/xiaozhang/ddns-shell/ArDNSPod-master && ./ddnspod.sh)
Oct 5 23:55:03 ubuntu CRON[32714]: (CRON) info (No MTA installed, discarding output)
Oct 6 00:00:02 ubuntu CRON[32933]: (xiaozhang) CMD (cd /home/xiaozhang/ddns-shell/ArDNSPod-master && ./ddnspod.sh)
Oct 6 00:00:05 ubuntu CRON[32932]: (CRON) info (No MTA installed, discarding output)
Oct 6 00:05:01 ubuntu CRON[33021]: (xiaozhang) CMD (cd /home/xiaozhang/ddns-shell/ArDNSPod-master && ./ddnspod.sh)
Oct 6 00:05:04 ubuntu CRON[33020]: (CRON) info (No MTA installed, discarding output)
Oct 6 00:09:45 ubuntu crontab[33097]: (xiaozhang) LIST (xiaozhang)
Oct 6 00:10:01 ubuntu CRON[33099]: (xiaozhang) CMD (cd /home/xiaozhang/ddns-shell/ArDNSPod-master && ./ddnspod.sh)
Oct 6 00:10:03 ubuntu CRON[33098]: (CRON) info (No MTA installed, discarding output)