Cloudflare 动态域名解析设置...
 
Notifications
Clear all

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

1 Posts
1 Users
0 Likes
1,634 Views
(@taichi)
Member
Joined: 4 years ago
Posts: 408
Topic starter  

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

  https://api.cloudflare.com/

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

设置教程

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

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

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

","width":1035}" data-trix-content-type="image/jpg" data-trix-attributes="{"presentation":"gallery"}">

然后获取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.  
  2.      -H "X-Auth-Email: [email protected]"
  3.  
  4.      -H "X-Auth-Key: c2547eb745079dac9320b638f5e225cf483cc5cfdda41" 
  5.      -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: [email protected]"  -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: [email protected]" 

     -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: [email protected]" 
     -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 里面,按照你设想的时间频率运行即可。


   
Quote
Share: