本文最后更新于:2022年12月16日 晚上
CloudFlare进行自定义内外网混合动态域名DDNS脚本
实现同一个二级域名,多个内外网的同时解析
1、获取CloudFlare的API令牌 直接进入地址:API 令牌 | [账户名]’s Account | Cloudflare
2、获取根域名ID curl -X GET "https://api.cloudflare.com/client/v4/zones" \ -H "X-Auth-Email: [CloudFlare账户]" \ -H "X-Auth-Key: [API令牌]" \ -H "Content-Type: application/json"
例如下图的就是,后面是"name":kbai.cc
域名,前面的"id":
后面的就是根域名ID
3、获取各个二级域名ID 注意:与官网命令不同,官方文档自我感觉有BUG,可能不能获取所有二级域名ID,下面的命令自己研究出来的真实可用,而且多个相同名字的二级域名对应的ID是不同的!!
1 2 3 4 curl -X GET "https://api.cloudflare.com/client/v4/zones/[根域名ID]/dns_records" \ -H "Content-Type:application/json" \ -H "X-Auth-Key: [API令牌]" \ -H "X-Auth-Email: [CloudFlare账户]"
例如下图的就是,后面是"name":"b101.kbai.cc"
域名,前面的"id":
后面的就是二级域名ID,前面的"zone_ID":
后面的就是根域名ID
4、实现动态域名自写脚本 Linux系统 1 curl -X PUT "https://api.cloudflare.com/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参数的双引号是需要转义的。
实现命令如下:
1 curl -X PUT "https://api.cloudflare.com/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
等等,是走这里来的。里面的desk2.kbai.cc
是我自己用的外网线路地址(家庭公网宽带,每天都会变),用不到可以删掉,这个的同域名的多网卡解析,一个域名对应多个IP地址,二级域名是一样的,只有二级域名ID不同来实现区分实现。
下面的是我写好的.bat
脚本,然后使用Windows Server的计划任务程序来运行。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 @echo off & setlocal enabledelayedexpansionfor /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=desk2.kbai.cc 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 "https://api.cloudflare.com/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\\":\\"cmcloud.kbai.cc\\",\\"content\\":\\"%NET1IP%\\",\\"ttl\\":1,\\"proxied\\":false }" curl -X PUT " https://api.cloudflare.com/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\\":\\"cmcloud.kbai.cc\\",\\"content\\":\\"%NET2IP%\\",\\"ttl\\":1,\\"proxied\\":false }" curl -X PUT " https://api.cloudflare.com/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\\":\\"cmcloud.kbai.cc\\",\\"content\\":\\"%NET3IP%\\",\\"ttl\\":1,\\"proxied\\":false }" curl -X PUT " https://api.cloudflare.com/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\\":\\"cmcloud.kbai.cc\\",\\"content\\":\\"%ip%\\",\\"ttl\\":1,\\"proxied\\":false }"
实现的效果:
Windows系统简单的解析 参考集成软件:FlareDDNS v2.1.0.1 - Cloudflare动态解析Windows客户端 支持IPv6 消息推送 | 萌え Moè~ (moe.sx)
📣特别声明 此文章全部都是依靠自己的学习理解来写的原创文章,难免可能会出现有错误的地方,
如果大家以后阅读的时候发现有问题,那就麻烦到下方评论区来进行错误指出,使错误尽快做出改正,
在此,感谢大家的阅读与支持!🤝💦🎉
🍻支持一下 觉得我写的好的话可以支持一下我哦~持续关注我,会更新其他好玩且实用的项目。
👋如果我能帮助到你,那就请我喝杯🧋呗~👇👇👇