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张图片

 

四个重要组成部分分别是:

1、调用api路径

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

3、修改的内容(包括请求头信息和body信息都要按照官方的格式来)

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

 

第四点其实是需要注意的,老手当然会有所认识,新人再没有注意发送格式的情况下用别人的脚本有时候会忽略掉json形式发送,然后返回各种错误;

 

点击execute执行,官方会给出shell形式的请求范例,如图:

godaddy构建ddns服务_第2张图片

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后台页面:

 godaddy构建ddns服务_第3张图片

 

这里已经实现了通过脚本修改域名的dns,那么如何构建ddns?

我自己的方案是:

树莓派上放了python3的域名ip修改脚本和3分钟执行一次的当前ip地址获取的脚本,如果当前ip和上一次ip地址不一样,这调用修改脚本直接掉godaddy的api修改为当前ip地址实现域名动态的绑定,你要说会有延时?那肯定会有延时了,但对于个人使用,解决了固定ip的大部分需求,对于个人构建nas或者家庭监控都是一个比较省钱的解决方案。

 

你可能感兴趣的:(DDNS)