cloudflare 动态修改 dns
2026-09-13 20:12:59 # 教程

首先申请 api-token

  1. 登陆进 www.cloudflare.com
  2. 点击进入自己的域名
  3. 中文 概述 ,下滑找到 区域id (zone_id)复制保存, 点击下面的获取api令牌
  4. 进去创建令牌 ,选择dns模板
  5. 可以保持默认 直接创建,也可以在区域选择上指定 可操作 域名
  6. 得到令牌,后有一个测试curl命令 去测试一下

已获得参数:

API_KEY =令牌token
ZONE_ID = 区域id
email = 自己的邮箱
-x 是 代理

获取 指定 dns记录 id

注意替换下面的 参数 为自己的,<>也要去掉

1
2
3
4
curl -X GET "https://api.cloudflare.com/client/v4/zones/<ZONE_ID>/dns_records" \
-H "X-Auth-Email:<email>" \
-H "Authorization:Bearer <API_KEY>" \
-H "Content-Type:application/json"

从上面返回的结果中找到你需要的域名的id 可通过 域名搜索

获取到id:
dx = xxxx_id

更新执行dns记录

1
2
3
4
5
curl -X PUT "https://api.cloudflare.com/client/v4/zones/<ZONE_ID>/dns_records/<xxxx_id>" \
-H "X-Auth-Email:<email>" \
-H "Authorization:Bearer <API_KEY>" \
-H "Content-Type:application/json"
--data '{"type":"A","name":"dx.example.com","content":"1.2.3.4","ttl":120,"proxied":false}'

脚本处理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# modify_dns.sh

#!/bin/bash
ip='1.1.1.1'
dns_id='xxx_id'
data='{"type":"A","name":"dx.example.com","content":"%s","ttl":120,"proxied":false}'
str_data=$(printf "$data" "$ip")
echo $str_data
url=$(printf 'https://api.cloudflare.com/client/v4/zones/<zone_id>/dns_records/'$dns_id )
echo $url
curl -X PUT $url \
-H "X-Auth-Email:<email>" \
-H "Authorization:Bearer <API_KEY>" \
-H "Content-Type:application/json"
--data $str_data

其他脚本 调用此脚本

1
2
3
4
5
# test.sh

#!/bin/bash
ip="1.2.3.4"
source ./modify_dns.sh $ip