月度归档:2018年10月

CF的api使用

建立 DNS Record

example:

[email protected]:~ 
#執行
 curl -X POST "https://api.cloudflare.com/client/v4/zones/8ee1be75cxxxx(我的zone_id)/dns_records" \
 -H "X-Auth-Email: xxxx(我的帳號的郵箱)" \
 -H "X-Auth-Key: 8405868bdxxxx(我的api_key)" \
 -H "Content-Type: application/json" \
 --data '{"type":"A","name":"test.nanqinlang.com(指定要建立記錄的域名)","content":"127.0.0.1(指定A記錄指向的ip)","ttl":120(指定ttl),"proxied":false}'
#返回結果
{"result":{"id":"3abbbaba2xxxx(這條建立的dns記錄的id)","type":"A","name":"test.nanqinlang.com(建立記錄的域名)","content":"127.0.0.1(A記錄指向的ip)","proxiable":false,"proxied":false,"ttl":120,"locked":false,"zone_id":"8ee1be75cxxxx(我的zone_id)","zone_name":"nanqinlang.com","modified_on":"2017-09-27T16:38:18.430924Z","created_on":"2017-09-27T16:38:18.430924Z","meta":{"auto_added":false}},"success":true(命令執行成功),"errors":[],"messages":[]}

執行成功後,建立的記錄如圖

使用CloudFlare實現DDNS(動態域名解析)
使用CloudFlare實現DDNS(動態域名解析)

檢視 DNS Record 列表

執行下面這個命令後,shell 視窗中會列出你的帳號上的所有 dns 記錄(不僅僅是A記錄)

在 cloudflare ,每一條解析記錄都有對應的一個固定的 id

為了能夠通過 API 修改解析記錄,我們需要通過此步驟來獲取這個 id

example:

[email protected]:~ 
#執行
 curl -X GET "https://api.cloudflare.com/client/v4/zones/8ee1be75cxxxx(我的zone_id)/dns_records" \
 -H "X-Auth-Email: xxxx(我的帳號的郵箱)" \
 -H "X-Auth-Key: 8405868bdxxxx(我的api_key)" \
 -H "Content-Type: application/json"
#返回結果
{"result":[{"id":"3625aca17xxxx(這條被檢視的dns記錄的id)","type":"A","name":"nanqinlang.com(域名)","content":"xx.xx.xx.xx(A記錄指向的ip)","proxiable":true,"proxied":true(啟用cloudflare反代與否的狀態值),"ttl":1(1 表示 auto ttl),"locked":false,"zone_id":"8ee1be75cxxxx(我的zone_id)","zone_name":"nanqinlang.com(根域名)","modified_on":"2017-09-26T15:24:00.567936Z","created_on":"2017-09-26T15:24:00.567936Z","meta":{"auto_added":false}}}

其中的 "id":"3625aca17xxxx" 就是你需要的 dns 記錄的 id

更新 DNS Record

當建立好解析記錄,並獲取了這條記錄的 id 之後,

為了實現動態解析,每當你的公網 ip 發生變化,就需要更新 dns 記錄,將A記錄指向你的新 ip

example:

[email protected]:~ 
#執行
 curl -X PUT "https://api.cloudflare.com/client/v4/zones/8ee1be75cxxxx(我的zone_id)/dns_records/3abbbaba2xxxx(這條dns記錄的id)" \
 -H "X-Auth-Email: xxxx(我的帳號的郵箱)" \
 -H "X-Auth-Key: 8405868bdxxxx(我的api_key)" \
 -H "Content-Type: application/json" \
 --data '{"type":"A","name":"test.nanqinlang.com(指定要更新記錄的域名)","content":"110.119.120.233(指定A記錄指向的ip)","ttl":180(指定ttl),"proxied":false}'
#返回結果
{"result":{"id":"3abbbaba2xxxx(這條要更新的dns記錄的id)","type":"A","name":"test.nanqinlang.com(更新了記錄的域名)","content":"110.119.120.233(更新後的指向ip)","proxiable":true,"proxied":false,"ttl":180(更新後的ttl),"locked":false,"zone_id":"8ee1be75cccxxxx(我的zone_id)","zone_name":"nanqinlang.com","modified_on":"2017-09-27T16:58:23.547640Z","created_on":"2017-09-27T16:58:23.547640Z","meta":{"auto_added":false}},"success":true(命令執行成功),"errors":[],"messages":[]}

將此命令進行定時任務後,就實現了 DDNS 域名動態解析 了。