cloudflare动态域名解析-并实现自定义内外网混合动态域名DDNS脚本

时间:2024-10-23 14:40:24

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脚本 - 开摆工作室博客 ()

此文章全部都是依靠自己的学习理解来写的原创文章,难免可能会出现有错误的地方,

如果大家以后阅读的时候发现有问题,那就麻烦到下方评论区来进行错误指出,使错误尽快做出改正,

在此,感谢大家的阅读与支持!????????????

????支持一下

觉得我写的好的话可以支持一下我哦~持续关注我,会更新其他好玩且实用的项目。

????如果我能帮助到你,那就请我喝杯????呗~????????????

 我的博客链接: