使用Cloudflare的API服务更新动态IP地址 By iok | 2019-09-16 0 Comment Cloudflare是一家CDN服务商,而且提供给一般用户的服务全部都是免费的,非常推荐使用! 近日使用的DDNS服务停止服务了,国内的DDNS服务商都要实名了,所以找了一下相关资料,可以利用CF的API进行模拟原来的DDNS,免费而且安全,更新速度更快。准备以下:1)申请一个域名。(收费或免费)2)注册CF帐号,并把域名的DNS托管到CF。(这里不介绍了,自行百度吧) 一、登录CF建立一条A记录,并定义动态域名的名称 注: IPV4 address 可以随意填写,因为API会自行更新你实时的IP地址,所以这里填8.8.8.8 二、下面几张图都是CF的界面,把几个API相关的key找到并记录下来 Zone ID 、 Global API Key 、 Record ID (需要使用前两者来获取)登录到CF,在托管的域名首页(Overview)右下角找到 Zone ID 记录下来 Get your API key 点击进入以下界面 通过验证身份后就会看到以下API KEY了,复制记录下来 要通过代码取得 Record ID找一台Linux的机子命令行状态上执行以下指令,注意{}中的参数按你自己的实际情况填写,然后把{}去除。curl -X GET "https://api.cloudflare.com/client/v4/zones/{ZONE_ID}/dns_records" \ -H "x-auth-email:{[email protected]}" \ -H "x-auth-key:{YOUR_GLOBAL_API_KEY}" \ -H "content-type: application/json" 注:每条DNS记录对应的Record ID不同,所以更换域名后需要重新获取该ID。 三、编写脚本重新CF的DNS记录 以下是脚本内容,存放路径随意,这里脚本命名为cf_flashdns.sh,可以使用cron定时执行该脚本。【按实际情况修改红字的参数即可】#!/bin/sh # 將{ }替換為自己的資料 # GET Recore ID #curl -x get "https://api.cloudflare.com/client/v4/zones/{YOUR_ZONE_ID}/dns_records" \ #-h "x-auth-email:{[email protected]}" \ #-h "x-auth-key:{YOUR_GLOBAL_API_KEY}" \ #-h "content-type: application/json" NEW_IP=`curl -s http://ipv4.icanhazip.com` CURRENT_IP=`cat /tmp/current_ip.txt` if [ "$NEW_IP" = "$CURRENT_IP" ] then echo "No Change in IP Adddress" else curl -X PUT "https://api.cloudflare.com/client/v4/zones/{YOUR_ZONE_ID}/dns_records/{YOUR_RECORD_ID}" \ -H "X-Auth-Email: {[email protected]}" \ -H "X-Auth-Key: {YOUR_GLOBAL_API_KEY}" \ -H "Content-Type: application/json" \ --data '{"type":"A","name":"{YOUR-DDNS.exampel.com}","content":"'$NEW_IP'","ttl":120,"proxied":false}' > /dev/null echo $NEW_IP > /tmp/current_ip.txt fi 最后 chmod +x cf_flashdns.sh 加入到cron定时任务 [每5分钟]crontab -e0 */5 * * * /path/./cf_flashdns.sh登录到CF后台看看吧,现时刚才建立的A记录ddns的IP地址已经更新为你实时的公网IP地址了。