利用CloudFlare自建DDNS

利用CloudFlare自建DDNS

获取 API

如果域名没有使用 CloudFlare 的 DNS 解析服务,首先要在 CloudFlare 按提示添加域名 zhaozhuji.net,把域名的 DNS 服务器改为 CloudFlare,增加对应域名的 A 记录 ddns.zhaozhuji.net。TTL 可设为 2 分钟或自动。注意,DDNS 使用的域名不要开启 CloudFlare 的 CDN,只用 CF 的 DNS 解析功能,也就是 status 一列对应域名的图标要是灰色的。

添加好域名解析后,前往https://www.cloudflare.com/a/profile获取 Global API,把 API 一长串字符复制保存下来。注意,这串 API 不要泄露给其他人。

Shell 脚本

获取脚本

得到 API 后,执行以下命令:

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

一般系统都会带有 curl,但如果出错,就需要先安装 curl:

1
2
Debian/ubuntu#  apt-get install curl -y
Centos# yum install curl -y

配置

打开脚本进行配置:

1
vim /usr/local/bin/cf-ddns.sh

如果没有vim则需要安装:

1
apt-get install vim -y

找到以下内容并修改:

1
2
3
4
auth_email="user@example.com"
auth_key="c2547eb745079dac9320b638f5e225cf483cc5cfdda41" # found in cloudflare 3 account settings
zone_name="example.com"
record_name="www.example.com"

其中,在 auth_email 中填入 CloudFlare 账号的邮箱,在 auth_key 输入前面获取的 API,zone_name 填入域名 zhaozhuji.net,record_name 填入 DDNS 的域名 ddns.zhaozhuji.net。

修改完后,保存退出。

输入bash /usr/local/bin/cf-ddns.sh运行脚本,如果提示IP changed to: X.X.X.X,表明配置成功。

1
bash /usr/local/bin/cf-ddns.sh

Crontab 定时运行

脚本配置成功后,需要让它定时运行。这里设置每 10 分钟运行一次 cf-ddns.sh 脚本。

1
(crontab -l ; echo "*/10 * * * * /usr/local/bin/cf-ddns.sh >/dev/null 2>&1") | crontab -

日志文件

脚本获取 IP 更改 CloudFlare 的 DNS 记录后,会在目录中生成 ip.txt、cloudflare.ids 和 cloudflare.log 三个文件。ip.txt 记录的是本机的 IP。脚本自动获取到 IP 后,会先与 ip.txt 中的 IP 进行比较,当不一致时(检测到 IP 发生变化),才会更新 CloudFlare 的 DNS 记录,并且把新 IP 写入 ip.txt 文件中。

备注1:被教程转载自https://www.zhaozhuji.net/149.html 赵煮机网,脚本也来源于博主,在此说声感谢
备注2:使用此教程的前提是您拥有自己的域名(免费、收费均可只要能够修改该域名的DNS解析服务即可)
备注3:本文在原文章的基础下进行了部分增添保证搭建的便捷性。

# DDNS, Linux

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×