ddns_curl_for_dnspod.md Warning! last edited by likuku on July 21, 2015 2:59 PM
#范例:
curl 指令,被 crontab 定时执行即可:
curl -X POST https://dnsapi.cn/Record.Ddns -d '[email protected]&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
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。
使用 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 '[email protected]&login_password=password&format=json&domain=yourname.net'
使用 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 '[email protected]&login_password=password&format=json&domain_id=11111111'
子域名 上面 record_id 所对应的子域名,dnspod 里子域名指 主域名之前都为子域名,子域名不分级。
sub1.yourname.net
里 sub1 是1个A记录,是 yourname.net 的子域名
sub2.sub1.yourname.net
里 sub2.sub1 是1个A记录,是 yourname.net 的子域名