基于CloudFlare的DDNS解析


前提条件

要自建DDNS服务,首先必须要有自己的域名且域名已经接入 Cloudflare (即DNS为CF提供的地址),另外就是使用阿里云解析、DNSPOD云解析、Cloudflare云解析等服务,本次教程以 Cloudflare 为例。

1. 获取CFKEY

打开网页先点击右上角我的资料然后切换到我的令牌在页面下方找到【Global API Key】,点击右侧的查看Key,并保存下来

2. 设置用于 DDNS 解析的二级域名

在 Cloudflare 中新建一个A记录,如:ddns.yourdomain.com,指向 1.1.1.1
(可随意指定,如123.123.123.123等等,主要用于后续查看 DDNS 是否生效)

3. 下载 DDNS 脚本

wget  -N --no-check-certificate https://raw.githubusercontent.com/yulewang/cloudflare-api-v4-ddns/master/cf-v4-ddns.sh

4. 修改 DDNS 脚本并填写相关信息

您可在线使用 nano/vi/vim 等工具进行修改,也可以下载到本地进行修改再上传覆盖!
可以参考下面命令使用vi进行编辑

vi cf-v4-ddns.sh

然后按小写字母 i 进入编辑模式

# incorrect api-key results in E_UNAUTH error
CFKEY=这里写获取到的Key

# Username, eg: user@example.com
CFUSER=这里写登录的用户邮箱

# Zone name, eg: example.com
CFZONE_NAME=这里写根域名 //假如我们设置的二级域名为homeserver.example.com这里就要写example.com

# Hostname to update, eg: homeserver.example.com
CFRECORD_NAME=这里写二级域名的加根域名 //这里就要写homeserver.example.com

全部填写完毕后按左上角的Esc退出编辑模式,然后输入 :wq 它会自动保存并退出

5. 脚本授权并执行

chmod +x cf-v4-ddns.sh
./cf-v4-ddns.sh

如果脚本相关信息填写正确,输出内容会显示当前母鸡IP,登录 Cloudflare DNS选项 查看之前设置的 1.1.1.1 已变为外网IP

6. 设置定时任务

输入 crontab -e 然后会弹出 vi 编辑界面,按小写字母 i 进入编辑模式,在文件里面添加一行:
这里需要设置其他时间自动执行只需要参考crontab设定时间教程改一下就好了

*/2 * * * * /root/cf-v4-ddns.sh >/dev/null 2>&1

如果您需要日志文件,上述代码请替换成下面代码

*/2 * * * * /root/cf-v4-ddns.sh >> /var/log/cf-ddns.log 2>&1

原帖

第一种方法不行就用第二种方法

第二种方法

准备环境:Python2或Python3(建议使用Python3,兼容性更好)
Linux一般自带Python2,不想折腾可以直接用,Python3请自己谷歌如何安装
用ssh连接你的服务器/vps
在服务器上安装Curl

Debian/Ubuntu:apt-get install curl
 
CentOS:yum -y install curl

安装完成后,在服务器上执行以下命令

curl https://raw.githubusercontent.com/hjh70526/CloudFlare-DDNS-/master/cf-ddns.py > /usr/local/bin/cf-ddns.py && curl https://raw.githubusercontent.com/hjh70526/CloudFlare-DDNS-/master/cf-ddns.conf > /usr/local/bin/cf-ddns.conf && chmod +x /usr/local/bin/cf-ddns.py

这时,Curl就把DDNS脚本下载到 /usr/local/bin/ 并赋权了
在服务器上运行以下命令

cd /usr/local/bin/

修改脚本配置文件:

vi cf-ddns.conf

编辑好以后,返回到Shell之后,执行以下命令来试运行

python cf-ddns.py

若不出意外,运行结果是(如果你是IPv6,显示结果为更新IPv6地址)

root@local:/usr/local/bin# python cf-ddns.py
未发现Ipv6地址,将更新Ipv4地址咦?
"hjh666.xyz" 的zone id不见了耶~嘿嘿,正在向CloudFlare获取" 
hjh666.xyz" 的zone id是 xxxxxxxxxxxxxxxxxxxxxxxxxx 
咦? "ddns.hjh666.xyz" 的host id不见了耶~嘿嘿,正在向CloudFlare获取 "ddns.hjh666.xyz" 的host id是 xxxxxxxxxxxxxxxxxxxxxxxx 
更新成功 (type: A, fqdn: ddns.hjh666.xyz, ip: 168.70.xxx.30) 
更新成功啦~

如果显示这个,恭喜你,你成功运行了ddns脚本,你可以去CloudFlare后台看看,是不是解析地址已经变成你的服务器IP啦?

第四步 使用crontab定时运行脚本

既然是DDNS,那肯定不是手动更新啦~
在服务器上执行以下命令

crontab -e

添加一下代码

*/2 * * * * python /usr/local/bin/cf-ddns.py >> /ddnslog/pyddns.log

原帖

声明:小小博客|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - 基于CloudFlare的DDNS解析


Carpe Diem and Do what I like