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个重要组成部分,下图只展示了三个:

 

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

1、调用api路径

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

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

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

 

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

 

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

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

 

 

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

我自己的方案是:

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

 

DDNS(动态域名系统)是一种通过更新 DNS 记录来动态地映射一个变化的 IP 地址到一个域名的方法。在 Linux 中,可以使用 Go 语言编写的 DDNS 客户端来实现自动更新域名解析记录。以下是使用 ddns-go 在 Linux 中实现 DDNS 的步骤: 1. 下载 ddns-go 可以从 ddns-go 的 Github 仓库中下载二进制文件或者源代码。如果你想自己编译,可以执行以下命令: ``` git clone https://github.com/ddns-go/ddns-go.git cd ddns-go make ``` 2. 配置 ddns-go 在执行 ddns-go 之前,你需要先配置好 ddns-go。创建一个名为 `config.yaml` 的文件,并在其中添加以下内容: ``` provider: <provider-name> domain: <domain-name> username: <username> password: <password> ``` 其中: - `<provider-name>` 是你的 DNS 服务提供商的名称(例如 Cloudflare、Godaddy 等)。 - `<domain-name>` 是你需要绑定的域名。 - `<username>` 和 `<password>` 是你的 DNS 服务提供商的用户名和密码。 你需要将这些值替换为你自己的信息。 3. 运行 ddns-go 当你完成配置后,即可运行 ddns-go。在终端中执行以下命令: ``` ./ddns-go -c config.yaml ``` 这将启动 ddns-go 并开始更新你的域名解析记录。你可以将这个命令添加到定时任务中,以便自动更新域名解析记录。 总结: 使用 ddns-go 在 Linux 中实现 DDNS 非常简单。你只需要下载、配置和运行 ddns-go,就可以自动更新你的域名解析记录。这是一种非常方便的方法,可以帮助你在 IP 地址变化时保持域名解析的正确性。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值