Skip to content

Instantly share code, notes, and snippets.

@likuku
Created July 21, 2015 07:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save likuku/663cdee4dd4675b4e570 to your computer and use it in GitHub Desktop.
Save likuku/663cdee4dd4675b4e570 to your computer and use it in GitHub Desktop.

ddns_curl_for_dnspod.md Warning! last edited by likuku on July 21, 2015 2:59 PM

#范例:

你的动态域名是:ddns1.ddns.yourname.net

curl 指令,被 crontab 定时执行即可:

curl -X POST https://dnsapi.cn/Record.Ddns -d 'login_email=your@email.mail&login_password=password&format=json&domain_id=11111111&record_id=000000&record_line=默认&sub_domain=ddns1.ddns'

dnspod 对 Record.Ddns 这个 API 有限制,每小时最多修改5次,超额则一天内禁止再次修改。

假若对 ddns 的可用性不是非常在意,最简单解决方式就是 crontab 里设定每小时执行不超过5次。

我当前使用crontab设置是每小时0分和30分各执行一次,即: 0,30 * * * *

#1. NS 记录: youname.net 的 NS 记录改为 dnspod 的 NS 主机,NS 一般至少是2台:

当前 dnspod 的 NS 服务器地址:

f1g1ns1.dnspod.net
f1g1ns2.dnspod.net

修改完毕,请用 dig youname.net ns 来检查确认你自己域名的 NS 已经指向 dnspod 的 NS 服务器地址。

参考:

https://support.dnspod.cn/ 页底的 「常见问题」 => 「功能介绍及使用教程」

#2.CURL 更新 ddns 指令的解析说明:

bash 里(脚本/command line)必须直接在命令参数内写入 login 信息,id 信息,使用变量无法正确执行。

DNSPod API 文档目录: https://www.dnspod.cn/docs/index.html

ddns API 官方说明:

https://dnsapi.cn/Record.Ddns 文档和范例 https://www.dnspod.cn/docs/records.html#dns

其中关于 限制频繁修改域名记录的说明 原文引用:

注意事项:

  • 如果1小时之内,提交了超过5次没有任何变动的记录修改请求,该记录会被系统锁定1小时,不允许再次修改,所以在开发和测试的过程中,请自行处理IP变动,仅在本地IP发生变动的情况下才调用本接口。
  • 如何理解没有任何变动的记录修改请求?比如原记录值已经是 1.1.1.1,新的请求还要求修改为 1.1.1.1。

必需参数说明:

domain_id

使用 API https://dnsapi.cn/Domain.Info 来获取指定域名的domain_id 官方文档,范例:https://www.dnspod.cn/docs/domains.html#domain-info

curl 指令范例:

curl -X POST https://dnsapi.cn/Domain.Info  -d 'login_email=your@email.mail&login_password=password&format=json&domain=yourname.net'

record_id

使用 API https://dnsapi.cn/Record.List 来获取指定域名下的所有记录信息 官方文档,范例:https://www.dnspod.cn/docs/records.html#record-list domain_id 是必须的;在返回结果里,查询子域名记录ddns 的信息段,得到 record_id

curl 指令范例:

curl -X POST https://dnsapi.cn/Record.List -d 'login_email=your@email.mail&login_password=password&format=json&domain_id=11111111'

sub_domain

子域名 上面 record_id 所对应的子域名,dnspod 里子域名指 主域名之前都为子域名,子域名不分级。

sub1.yourname.net 里 sub1 是1个A记录,是 yourname.net 的子域名 sub2.sub1.yourname.net 里 sub2.sub1 是1个A记录,是 yourname.net 的子域名

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment