天天看點

godaddy建構ddns服務

godaddy域名服務商提供api接口供調用修改域名各個參數配置,同樣的dns也屬于域名參數的一種,我們可以修改域名dns指向實作域名和ip綁定的變更。同樣的我們可以通過腳本的形式定期執行修改實作動态dns服務。

https://developer.godaddy.com/doc/endpoint/domains#/v1/recordReplace

或者

https://developer.godaddy.com/doc/endpoint/domains#/v1/recordReplaceTypeName

該網址是godaddy api文檔位址,其中v1/recordReplace則是實作ddns的方法,而recordReplacetypename則更加細分修改的内容,為了友善了解,以recordReplace為例,api範例中recordReplace模闆有明确的header資訊,header不管是哪個api都需要使用,而recordReplacetypename範例有時候加載不出來,不寫header會直接422錯誤。

如圖,這裡包含了4個重要組成部分,下圖隻展示了三個:

godaddy建構ddns服務

四個重要組成部分分别是:

1、調用api路徑

2、調用api所需要修改的域名

3、修改的内容(包括請求頭資訊和body資訊都要按照官方的格式來)

4、以json格式發送内容,如果在頭中設定格式位xml,可已發送xml,一般都是用json

第四點其實是需要注意的,老手當然會有所認識,新人再沒有注意發送格式的情況下用别人的腳本有時候會忽略掉json形式發送,然後傳回各種錯誤;

點選execute執行,官方會給出shell形式的請求範例,如圖:

godaddy建構ddns服務

curl範例分析:

1、方法:PUT

2、請求路徑:request_url(正式環境去掉ote-)

3、請求頭head:-H後面的head資訊,我們需要修改的是Authorization對應的自己域名的KEY和PASSWORD

key的生成位址是:https://developer.godaddy.com/keys#

4、修改資訊body:-d後面的内容

為了友善,使用python3作為範例:

import requests
import json

#修改内容體
records = {
    #修改的域名
    "data": "6.6.6.6",
    #指向方式
    "name": "@",
    #指向端口
    "port": 80,
    #ttl時間,最小600
    "ttl": 600,
    #指向形式
    "type": "A"
}

#請求頭
head = {
    'accept':'application/json',
    'Content-Type':'application/json',
    #需要改為自己的key和pd
    'Authorization':'sso-key e4MzyMjQmALJ:KNtBGcWWmL'
}


#官方的預設dns資訊,統一的,如果不帶上,會傳回422錯誤
records_NS01 = {
    "data": "ns07.domaincontrol.com",
    "name": "@",
    "ttl": 3600,
    "type": "NS"
}
records_NS02 = {
    "data": "ns08.domaincontrol.com",
    "name": "@",
    "ttl": 3600,
    "type": "NS"
}

#元件發送資訊,資訊要轉成json形式,可以在發送轉也可以生成的時候轉,我直接在生成資料轉了
put_data =json.dumps([records,records_NS01,records_NS02])

print(put_data)
#請求的url,根據自己的域名變更範例的url
url = 'https://api.godaddy.com/v1/domains/hires.com/records'
#或者u1 ='https://api.ote-godaddy.com/v1/domains/hires.com/records/A/@'
#以put形式發送
req = requests.put(url,headers=head,data=put_data)
code = req.status_code
print(code)
           

 結果:

godaddy建構ddns服務

godaddy背景頁面:

godaddy建構ddns服務

這裡已經實作了通過腳本修改域名的dns,那麼如何建構ddns?

我自己的方案是:

樹莓派上放了python3的域名ip修改腳本和3分鐘執行一次的目前ip位址擷取的腳本,如果目前ip和上一次ip位址不一樣,這調用修改腳本直接掉godaddy的api修改為目前ip位址實作域名動态的綁定,你要說會有延時?那肯定會有延時了,但對于個人使用,解決了固定ip的大部分需求,對于個人建構nas或者家庭監控都是一個比較省錢的解決方案。

繼續閱讀