使用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