欢迎光临
我们一直在努力

Cloudflare 动态域名解析设置全过程,及二级域名ID的获取

Cloudflare 动态域名解析设置全过程,及二级域名ID的获取。首先,Dnspod的动态域名设置很简单,反过来说,也是因为功能有限,所以才简单。

#获取domain_id
curl -X POST https://dnsapi.cn/Domain.Info  -d 'login_token=13834,fe01aa05aded8ada9c3e984fb6144cd7&format=json&domain=uselys.cn'

#获取record_id
curl -X POST https://dnsapi.cn/Record.List -d 'login_token=13834,fe01aa05aded8ada9c3e984fb6144cd7&format=json&domain=uselys.cn'

#提交域名更新。每小时限5次。
curl -s -X POST https://dnsapi.cn/Record.Ddns -d 'login_token=13834,fe01aa05aded8ada9c3e984fb6144cd7&format=json&domain=uselys.cn&record_id=184261226&record_line=默认&sub_domain=home'

就这么三步,燃鹅国产dns的问题,大家也都心知肚明。还有那些花生壳之类的,真要用在生产环境下要多纠结有多纠结,跑起来晃悠悠的,死起来直挺挺的。

所以Cloudflare动态域名解析才是我们真正需要的。用的人不多的主要原因,可能是在获取二级域名的id的麻烦上,确实很难受。

 https://api.cloudflare.com/

Cloudflare API手册,是必备工具,里面详细写明了几乎所有功能的用法。不过要理解的话,必须照着手册去试错。

设置教程

1. 主机里必须安装 curl, 这是跟API通讯的基本工具。

2. 获取域名的Zone ID、账号Email、API Keys(我直接使用Global API Key)。

3. 获取二级域名的ID号,这是最眼花缭乱的一步,很多朋友大概就止步于此。 首先要先设置一个二级域名,比如home.uselys.cn ,IP地址随便填,记住这个 home。

然后获取home的ID号:

https://api.cloudflare.com/#dns-records-for-a-zone-list-dns-records

上面是说明书的具体章节。然后是命令样本:

curl -X GET "https://api.cloudflare.com/client/v4/zones/023e105f4ecef8ad9ca31a8372d0c353/dns_records?type=A&name=example.com&content=127.0.0.1&page=1&per_page=20&order=type&direction=desc&match=all"
  1.      -H “X-Auth-Email: user@example.com”
  2.      -H “X-Auth-Key: c2547eb745079dac9320b638f5e225cf483cc5cfdda41”
  3.      -H “Content-Type: application/json”

我一开始总是把 Zone Details 和 List DNS Records 搞错,实际上是 List DNS Records。

/zones/023e105f4ecef8ad9ca31a8372d0c353

这一段 /zones/ 后面的字符串改成 域名的ID号

/dns_records?type=A&name=example.com&content=127.0.0.1&page=1&per_page=20&order=type&direction=desc&match=all"

这一段只需要保留问号前面的内容,问号后面都是参数,实际上我们用不着。

结果就是这样:

curl -X GET
  1. “https://api.cloudflare.com/client/v4/zones/023e105f4ecef8ad9ca31a8372d0c353/dns_records”

X-Auth-Email 和 X-Auth-Key 改成自己的实际参数就好了。 最终,命令是这样的:

curl -X GET "https://api.cloudflare.com/client/v4/zones/cc837e5e8b25acc36fab40fdf98dcaf9/dns_records"     -H "X-Auth-Email: service@uselys.cn"  -H "X-Auth-Key: a79efe70d7bcdc3rd4763676f3437e412f002" -H "Content-Type: application/json"

记得把发斜杠去掉,做成一个一行命令,然后在命令行执行,结果如下:

{"result":[{"id":"a3365e7fa46ec326cf8ca153e6d7fe5c","type":"A","name":"home.uselys.cn","content":"111.111.111.111","proxiable":true,"proxied":false,"ttl":1,"locked":false
  1. ……

home.uselys.cn 前面的id值 a3365e7fa46ec326cf8ca153e6d7fe5c 就是二级域名 home 的id。 到此,参数配齐了!

4. 获取本机IP

curl -s http://whatismyip.akamai.com

获取本机IP的方式有很多种,这种比较直观把。

5. 更新 home 的IP,说明书具体章节:

https://api.cloudflare.com/#dns-records-for-a-zone-update-dns-record

章节名称是:Update DNS Record

命令样本:

curl -X PUT "https://api.cloudflare.com/client/v4/zones/023e105f4ecef8ad9ca31a8372d0c353/dns_records/372e67954025e0ba6aaa6d586b9e0b59" 
     -H "X-Auth-Email: user@example.com" 

     -H "X-Auth-Key: c2547eb745079dac9320b638f5e225cf483cc5cfdda41" 

     -H "Content-Type: application/json" 
     --data '{"type":"A","name":"example.com","content":"127.0.0.1","ttl":120,"proxied":false}'

这时候,所有的参数我们都已经知道,把对应的参数都修改成自己的实际参数即可。然后把 content 的值换成 222.222.222.222 试试看。如果成功了,这一步就算完成了。

6. 把获取IP、更改IP连个步骤组合成一个sh脚本:

API_URL=$(/usr/local/bin/curl -s http://whatismyip.akamai.com)
/usr/local/bin/curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/cc837e5e8b25acc36fab40fdf98dcaf9/dns_records/a3365e7fa46ec326cf8ca153e6d7fe5c" 
     -H "X-Auth-Email: service@uselys.cn" 
     -H "X-Auth-Key: a79efe70d7bcdc3rd4763676f3437e412f002" 
     -H "Content-Type: application/json" 
     --data "{"type":"A","name":"source","content":"$API_URL","ttl":300,"proxied":false}" 
     > /dev/null

注意,content 的参数换成了 变量 $API_URL。 保存为 cf.sh,并给它赋予执行权限。 如此一来,每执行一次,home.uselys.cn 的IP就更新一次。

7. 最后一步,把 cf.sh 放到 crontab 里面,按照你设想的时间频率运行即可。

本文转自 @ 南汇网络

赞(0) 打赏
未经允许不得转载:老赵部落 » Cloudflare 动态域名解析设置全过程,及二级域名ID的获取
data-ad-format="auto" data-full-width-responsive="true">

评论 抢沙发