• 欢迎访问赵煮机网,有问题可留言或电报

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

折腾笔记 赵煮机 1年前 (2018-05-13) 4924次浏览 2个评论
文章目录[隐藏]

提示:此脚本已失效,请查看新教程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 定时运行)。

如果有问题,欢迎留言。


版权声明: 如未注明转载 , 均为本站原创文章
本网站采用BY-NC-SA协议进行授权
转载前请联系,并注明原文链接:利用 CloudFlare 设置 Dynamic DNS(DDNS)(已失效,请看本站最新教程)
喜欢 (2)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(2)个小伙伴在吐槽
  1. 老哥,最新的脚本是什么啊
    匿名2018-07-01 13:57 回复
  2. 运行bash /usr/local/bin/cf-ddns.sh 没有CFDI显示
    1234562018-10-03 17:34 回复