使用cloudflare api可以很方便的修改域名ip。

cloudflare api 文档:https://api.cloudflare.com/#dns-records-for-a-zone-update-dns-record

需要注意的是cloudflare api好像被墙了。。。

需要用代理连接,这里我直接搭了个反代凑合用用:cfapi.cosmiccat.net

建议自己额外搞一个反代。

首先openwrt上需要安装ddns-scripts

网上教程一大把,这里默认已经安装成功并安上luci

首先我们需要得到以下信息:

我们的cloudflare账号的注册邮箱,

我们的cloudflare api 令牌,

我们要做ddns的根域名的zone id,

我们要做ddns的域名的id。

其中,zone id就在域名后台首页上就有。api令牌在zone id 下边 get your api key 里看。

域名id需要用api看

使用以下命令:

curl --insecure -X GET "https://api.cloudflare.com/client/v4/zones/你的zone id/dns_records?type=A&name=你要做DDNS的域名&page=1&per_page=20&order=type&direction=desc&match=all" \
-H "X-Auth-Email: 你cloudflare登陆email" \
-H "X-Auth-Key: 你的API Key" \
-H "Content-Type: application/json" \

执行后显示

{"result":[{"id":"你的要做ddns的域名id 请复制下来","type":"A","name":"example.com","content":后略

然后在你喜欢的地方创建一个脚本,我直接扔/root里

内容为

#!/bin/sh
curl  -X PUT "http://api.cloudflare.com/client/v4/zones/你的zone id/dns_records/你的域名id" \
     -H "X-Auth-Email: 你的登录邮箱" \
     -H "X-Auth-Key: 你的api key" \
     -H "Content-Type: application/json" \
        --data '{"type":"A","name":"你要做ddns的域名","content":"'$1'","ttl":120, "proxied":false}'

进到路由器luci里的ddns-scripts的设置

DDNS 服务提供商 改成other

自定义更新 URL留空

自定义更新脚本 填刚刚创建的脚本的绝对位置。

保存然后启动服务

done