使用cloudflare的api实现DDNS动态域名解析

作者: Brave 分类: 学习 发布时间: 2020-07-12 20:03

前提条件:1. 路由器有一个动态公网地址需要域名来解析。
2. 有一个域名,在cloudflare上进行解析。
3. 路由器可以定时执行linux脚本,或内网有24小时在线的linux机器。

一、获取 cloudflare 账号的 global key和区域id

  1. 登陆cf账号,选中域名后,网页右下脚复制区域id,备用。
  2. 点击账户id下方的获取api令牌,在打开的页面中点下方Global API Key的查看,输入账号密码后得到api密钥,这个很重要,相当于密码,不要泄漏。

二、在 Cloudflare 中新建一个 A 记录

在 Cloudflare 中新建一个 A 记录,如:ddns.yourdomain.com,指向 1.1.1.1,保存。

三、查询ddns.yourdomain.com对应的id

在linux系统中,使用curl查询cf的api,通过返回值得到id。命令如下:

curl -X GET "https://api.cloudflare.com/client/v4/zones/区域id/dns_records?type=A&name=ddns.yourdomain.com" \
     -H "X-Auth-Email: [email protected]" \
     -H "X-Auth-Key: CF_global_key" \
     -H "Content-Type: application/json"

命令有4个地方替换成你对应的值,1.区域id,2.ddns.yourdomin.com,[email protected],4.CF_global_key

命令回车得到json格式返回值,得到其中id对应的值,备用。(此id就是ddns.yourdomain.com对应的id)

四、查询本机ip,通过cf的api解析域名到此ip

API_URL=$(curl -s http://whatismyip.akamai.com)

上一行代码得到本机ip,并存储到API_URL变量。

curl -X PUT "https://api.cloudflare.com/client/v4/zones/区域id/dns_records/第三步得到的id" \
     -H "X-Auth-Email: [email protected]" \
     -H "X-Auth-Key: CF_global_key" \
     -H "Content-Type: application/json" --data '{"type":"A","name":"ddns.yourdomain.com","content":"'$API_URL'","ttl":120,"proxied":false}'

把上面两条命令,替换成自己的值,保存到ddns.sh文件里面,输入crontab -e添加一条定时任务,每天自动解析。

0 5 * * * /root/ddns/ddns.sh

每天5点自动解析一次。

完。

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注