1、获取CloudFlare的API令牌
直接进入地址:API 令牌 | [账户名]'s Account | Cloudflare
2、获取根域名ID
curl -X GET "/client/v4/zones" \ -H "X-Auth-Email: [CloudFlare账户]" \ -H "X-Auth-Key: [API令牌]" \ -H "Content-Type: application/json"
例如下图的就是,后面是"name":
域名,前面的"id":
后面的就是根域名ID
3、获取各个二级域名ID
注意:与官网命令不同,官方文档自我感觉有BUG,可能不能获取所有二级域名ID,下面的命令自己研究出来的真实可用,而且多个相同名字的二级域名对应的ID是不同的!!
curl -X GET "/client/v4/zones/[根域名ID]/dns_records" \ -H "Content-Type:application/json" \ -H "X-Auth-Key: [API令牌]" \ -H "X-Auth-Email: [CloudFlare账户]"
例如下图的就是,后面是"name":""
域名,前面的"id":
后面的就是二级域名ID,前面的"zone_ID":
后面的就是根域名ID
4、实现动态域名自写脚本
Linux系统
curl -X PUT "/client/v4/zones/[根域名ID]/dns_records/[二级域名ID]/" -H "X-Auth-Key:[API令牌]" -H "X-Auth-Email:[CloudFlare账户]" -H "Content-Type: application/json" --data '{"type":"A","name":"[二级域名]","content":"[IP地址]","ttl":1,"proxied":false}'
Windows系统
安装CURL下载地址:下载CURL
默认下载:64位即可,解压后自行去系统环境变量中,加入解压的CURL的bin
目录即可。
注意:跟Linux命令不同的是,json模块下"
双引号要改成/"
!还有大括号外的'
单引号要改成"
双引号!!!传递的json参数的双引号是需要转义的。
实现命令如下:
curl -X PUT "/client/v4/zones/[根域名ID]/dns_records/[二级域名ID]/" -H "X-Auth-Key:[API令牌]" -H "X-Auth-Email:[CloudFlare账户]" -H "Content-Type: application/json" --data "{\"type\":\"A\",\"name\":\"[二级域名]\",\"content\":\"[IP地址]\",\"ttl\":1,\"proxied\":false}"
我在Windows系统下的实战案例,实现同域名多个网卡的内网IP地址解析以及外网解析
说明:里面区分网卡的NET1、NET2
等等,是走这里来的。里面的是我自己用的外网线路地址(家庭公网宽带,每天都会变),用不到可以删掉,这个的同域名的多网卡解析,一个域名对应多个IP地址,二级域名是一样的,只有二级域名ID不同来实现区分实现。
下面的是我写好的.bat
脚本,然后使用Windows Server的计划任务程序来运行。
@echo off & setlocal enabledelayedexpansion
for /f “tokens=1 delims=[]” %%i in (‘nbtstat -S^|find /n “NET1”‘) do (
nbtstat -S | more +%%i >$
set /p Str=<$
del $
for /f “tokens=2 delims=[]” %%i in (‘echo “!Str!”‘) do set NET1IP=%%i
)
for /f “tokens=1 delims=[]” %%i in (‘nbtstat -S^|find /n “NET2”‘) do (
nbtstat -S | more +%%i >$
set /p Str=<$
del $
for /f “tokens=2 delims=[]” %%i in (‘echo “!Str!”‘) do set NET2IP=%%i
)
for /f “tokens=1 delims=[]” %%i in (‘nbtstat -S^|find /n “NET3”‘) do (
nbtstat -S | more +%%i >$
set /p Str=<$
del $
for /f “tokens=2 delims=[]” %%i in (‘echo “!Str!”‘) do set NET3IP=%%i
)Set host=
Set ip=
For /f “skip=1 tokens=2 delims=[“ %%a in (‘ping %host%’) do (
For /f “tokens=1 delims=]” %%b in (“%%a”) do (
Set ip=%%b
)
)curl -X PUT “/client/v4/zones/[根域名ID]/dns_records/[二级域名ID]/" -H “X-Auth-Key:[API令牌]” -H “X-Auth-Email:[CloudFlare账户]” -H “Content-Type: application/json” –data “{\“type\“:\“A\“,\“name\“:\“\“,\“content\“:\“%NET1IP%\“,\“ttl\“:1,\“proxied\“:false}”
curl -X PUT “/client/v4/zones/[根域名ID]/dns_records/[二级域名ID]/" -H “X-Auth-Key:[API令牌]” -H “X-Auth-Email:[CloudFlare账户]” -H “Content-Type: application/json” –data “{\“type\“:\“A\“,\“name\“:\“\“,\“content\“:\“%NET2IP%\“,\“ttl\“:1,\“proxied\“:false}”
curl -X PUT “/client/v4/zones/[根域名ID]/dns_records/[二级域名ID]/" -H “X-Auth-Key:[API令牌]” -H “X-Auth-Email:[CloudFlare账户]” -H “Content-Type: application/json” –data “{\“type\“:\“A\“,\“name\“:\“\“,\“content\“:\“%NET3IP%\“,\“ttl\“:1,\“proxied\“:false}”
curl -X PUT “/client/v4/zones/[根域名ID]/dns_records/[二级域名ID]/" -H “X-Auth-Key:[API令牌]” -H “X-Auth-Email:[CloudFlare账户]” -H “Content-Type: application/json” –data “{\“type\“:\“A\“,\“name\“:\“\“,\“content\“:\“%ip%\“,\“ttl\“:1,\“proxied\“:false}”
实现的效果:
Windows系统简单的解析
参考集成软件:FlareDDNS v2.1.0.1 - Cloudflare动态解析Windows客户端 支持IPv6 消息推送 | 萌え Moè~ ()
????特别声明
原文地址:CloudFlare进行自定义内外网混合动态域名DDNS脚本 - 开摆工作室博客 ()
此文章全部都是依靠自己的学习理解来写的原创文章,难免可能会出现有错误的地方,
如果大家以后阅读的时候发现有问题,那就麻烦到下方评论区来进行错误指出,使错误尽快做出改正,
在此,感谢大家的阅读与支持!????????????
????支持一下
觉得我写的好的话可以支持一下我哦~持续关注我,会更新其他好玩且实用的项目。
????如果我能帮助到你,那就请我喝杯????呗~????????????
我的博客链接: