利用CloudFlare设置Dynamic DNS(DDNS)(已失效,请看本站最新教程)

提示:此脚本已失效,请查看新教程https://www.zhaozhuji.net/149.html

如果买了动态VPS,IP会经常改变。这时,就可以设置DDNS来获取动态IP。比如,设置后,我可以用ddns.zhaozhu.net获取自己VPS的最新IP。

获取API

以zhaozhuji.net域名为例,在CloudFlare按提示添加域名zhaozhuji.net和对应的A记录ddns.zhaozhuji.net,TTL可设为2分钟。注意,DDNS使用的域名不要开启CloudFlare的CDN。

前往https://www.cloudflare.com/a/profile获取API,把API一长串字符复制保存。

获取脚本

下载脚本https://gist.github.com/larrybolt/6295160/raw/c634c48c001a411240fc78147949a6a32e1de370/cf-ddns.sh 到/usr/local/bin目录:

curl https://gist.githubusercontent.com/larrybolt/6295160/raw > /usr/local/bin/cf-ddns.sh && chmod +x /usr/local/bin/cf-ddns.sh

配置

打开脚本进行配置:
vi /usr/local/bin/cf-ddns.sh

需要修改以下内容:

# 输入前面获取的API
CFKEY=nvake8vn8ak8en8fjka88bnfe

# 输入Zone name,如zhaozhuji.net
CFZONE=zhaozhuji.net

# 输入域名的id,如果不知道可先不填,运行一次脚本获取对应的id后再填入
CFID=

# 输入CloudFlare的账号邮箱,如user@example.com
CFUSER=user@example.com

# 设置需要更新的Hostname,如ddns.zhaozhuji.net
CFHOST=ddns.zhaozhuji.net

# 设置Cloudflare TTL,单位是秒,可填120到86400间的数值
CFTTL=120

输入bash /usr/local/bin/cf-ddns.sh运行脚本,会显示:

bash cf-ddns.sh 
No file, need IP
Missing DNS record ID
fetching from Cloudflare...
 => Incorrect zone, or zone doesn't contain the A-record ddns.zhaozhuji.net!
listing all records for zone acg.al:
ID          RECORD        TYPE
133333332  zhaozhuji.net        "A"
133333333  ddns.zhaozhuji.net  "A"
133333334  www.zhaozhuji.net    "A"

这时,把DDNS使用的域名对应的ID填入刚才提到的CFID中,例如这里是CFID=133333333。保存退出后,再运行一遍cf-ddns.sh,如果显示如下内容,则代表配置成功:

bash cf-ddns.sh
No file, need IP
Updating DNS to 9.9.9.9
Updated succesfuly!

crontab定时运行

脚本配置成功后,需要让它定时运行,这里设置每10分钟运行一次cf-ddns.sh脚本。输入crontab -e,然后会有个vi编辑界面,在里面添加一行:

*/10 * * * *  /usr/local/bin/cf-ddns.sh >/dev/null 2>&1

crontab的用法建议参考http://man.linuxde.net/crontab,涵盖了crontab服务状态的启动、重启、查看、简单配置等。另外也可以看看http://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/crontab.htmlhttp://www.runoob.com/linux/linux-comm-crontab.html

参考

cloudflare-update-record.sh同样可设置DDNS,配置也比较简单。

本文参考了PumpCloud的教程

备注

有人提及换了域名再操作提示WAN IP Unchanged, to update anyway use flag -f true,这是因为脚本是检测到IP发生变化后,才会更新CloudFlare的DNS。可以先手动在CloudFlare改dns,下一次换IP时,脚本就会自动修改更新CF的DNS(前提是设了crontab定时运行)。

如果有问题,欢迎留言。

© 版权声明
THE END
喜欢就支持以下吧
点赞0
分享
评论 共2条
    • 赵煮机
    • 老哥,最新的脚本是什么啊

      7月1日 13:57回复
    • 赵煮机
    • 1234560

      运行bash /usr/local/bin/cf-ddns.sh 没有CFDI显示

      10月3日 17:34回复