这里主要说的是linux shell下的使用。

先看接口说明:

接口地址:
HTTP请求方式:
  • POST
请求参数:
  • 公共参数
  • domain_id 或 domain, 分别对应域名ID和域名, 提交其中一个即可
  • record_id 记录ID,必选
  • sub_domain 主机记录,如 www
  • record_line 记录线路,通过API记录线路获得,中文,比如:默认,必选
  • record_line_id 线路的ID,通过API记录线路获得,英文字符串,比如:‘10=1’ 【record_line 和 record_line_id 二者传其一即可,系统优先取 record_line_id】
  • value IP地址,例如:6.6.6.6,可选
响应代码:
  • 共通返回
  • -15 域名已被封禁
  • -7 企业账号的域名需要升级才能设置
  • -8 代理名下用户的域名需要升级才能设置
  • 6 域名ID错误
  • 7 不是域名所有者或没有权限
  • 8 记录ID错误
  • 21 域名被锁定
  • 22 子域名不合法
  • 23 子域名级数超出限制,比如免费套餐域名不支持三级域名
  • 24 泛解析子域名错误,比如免费套餐载名不支持 a*
  • 25 轮循记录数量超出限制,比如免费套餐域名只能存在两条轮循记录
  • 26 记录线路错误,比如免费套餐域名不支持移动、国外
注意事项:
  • 如果1小时之内,提交了超过5次没有任何变动的记录修改请求,该记录会被系统锁定1小时,不允许再次修改,所以在开发和测试的过程中,请自行处理IP变动,仅在本地IP发生变动的情况下才调用本接口。
  • 如何理解没有任何变动的记录修改请求?比如原记录值已经是 1.1.1.1,新的请求还要求修改为 1.1.1.1。

示例:

curl -X POST https://dnsapi.cn/Record.Ddns -d 'login_token=LOGIN_TOKEN&format=json&domain_id=2317346&record_id=16894439&record_line_id=10%3D3&sub_domain=www'

首先你要去注册域名,freenom有免费的顶级域名。随便注册一个,改DNS服务器为dnspod的。

把ns服务器改为dnspod的免费服务器,土豪尽管去dnspoe注册.com,使用收费服务器。

等待大概24小时生效。

到DNSPOD登记注册,你已经注册的域名。

在DNSPOD开启token

API Token 生成方法详见:https://support.dnspod.cn/Kb/showarticle/tsid/227/,完整的 API Token 是由 ID,Token 组合而成的,用英文的逗号分割

记下ID TOKEN,token以后是不会显示的,一定记清楚,推荐记在keepass,我在用的密码管理软件。

我添加了一条home的记录,记录类型为A.

原来是用客户端获取一些信息,客户端也找不到了,那就用API吧。

这是wget的一个更新动态域名的命令。所有的***根据你的情况填写。

wget  --no-check-certificate --post-data "login_token=*****,*********************&format=json&domain_id=******&record_id=******&record_line_id=10=0&sub_domain=****" https://dnsapi.cn/Record.Ddns

这是curl的一个更新动态域名的命令。所有的***根据你的情况填写。

curl -X POST https://dnsapi.cn/Record.Ddns  -d 'login_token=*****,*********************&format=json&domain_id=******&record_id=******&record_line_id=10=0&sub_domain=****'

login_token=完整的 API Token 是由 ID,Token 组合而成的,用英文的逗号分割
domain_id= 6217161     域名的ID
record_id=32837409     子域的ID
sub_domain=home       子域的名字
record_line_id=10=0  线路电信

获取基本信息,验证token配置正确:

wget --no-check-certificate --post-data "login_token=****,********************&format=json" https://dnsapi.cn/Info.Version
curl -X POST https://dnsapi.cn/Info.Version  -d 'login_token=****,********************&format=json'

wget会保存一个文件

curl直接输出在屏幕

这个json串,可以在线解析一下,方便看:

https://www.bejson.com/

获取域名列表

wget --no-check-certificate --post-data "login_token=****,********************&format=json" https://dnsapi.cn/Domain.List
curl -X POST https://dnsapi.cn/Domain.List -d 'login_token=****,********************&format=json'

再去解析

这个ID,就是你的domain_id

获取域名列表

wget --no-check-certificate --post-data 'login_token=****,********************&format=json&domain_id=62171614' https://dnsapi.cn/Record.List
curl -X POST https://dnsapi.cn/Record.List -d 'login_token=****,********************&format=json&domain_id=62171614'

解析后,找到要动态解析的子域id,或者说要用的域名的id,子域的名字

我这里找的是home,就是给家里的路由找个动态域名,出门在外也能找到回家的路。

login_token=
domain_id= 62171614
record_id=328374092
sub_domain=home
现在我们关心的数据都查出来了,重新组合一下:

wget --no-check-certificate --post-data "login_token=**,********,41a8ac7ce3039d8e7eb087ff534763d1&format=json&domain_id=62171614&record_id=328374092&record_line_id=10=0&sub_domain=home" https://dnsapi.cn/Record.Ddns
curl -X POST https://dnsapi.cn/Record.Ddns -d "login_token=**,********&format=json&domain_id=62171614&record_id=328374092&record_line_id=10=0&sub_domain=home"

在命令行里访问一下,看你的域名解析是不是已经变成你的IP了。

只是record_line_id没有说明,只写了个10=0。我也没怎么理解它是什么意思。难道是类似于CDN加速的东西?

我是电信线路,就先写上电信的ID了。

"line_ids": {
"默认": 0,
"国内": "7=0",
"国外": "3=0",
"电信": "10=0",
"联通": "10=1",
"教育网": "10=2",
"移动": "10=3",
"百度": "90=0",
"谷歌": "90=1",
"搜搜": "90=4",
"有道": "90=2",
"必应": "90=3",
"搜狗": "90=5",
"奇虎": "90=6",
"搜索引擎": "80=0"
},

在路由上尝试一下这个shell命令

晕吧

wget不支持https

curl没有这个命令

安装吧。

openwrt--系统--软件包--过滤器--wget

wget

wget-nossl

安装wget,就可以实现使用wget这个命令来更新ddns

安装curl 就可以使用curl命令

不过openwrt的curl还要加一个-k参数,忽略证书。

下面说怎么在openwrt中使用这个,创建/etc/hotplug.d/iface/30-dnspod.sh
文件内容如下#!/bin/sh
#!/bin/sh
# wan ifup
[ $ACTION = "ifup" -a $INTERFACE = "wan" ] curl -X POST https://dnsapi.cn/Record.Ddns -k -d "login_token=***,****&format=json&domain_id=62171614&record_id=328374092&record_line_id=10=0&sub_domain=home"
curl命令中增加了-k,或略服务器HTTPS效验
#!/bin/sh
# wan ifup
[ $ACTION = "ifup" -a $INTERFACE = "wan" ] wget --no-check-certificate --output-document=/dev/null --post-data "login_token=***,******&format=json&domain_id=62171614&record_id=328374092&record_line_id=10=0&sub_domain=home" https://dnsapi.cn/Record.Ddns

wget命令中增加了--output-document=/dev/null,不保存返回文件。

 

这个意思就是WAN口上线30秒以后,执行这个wget请求,请求到dnspod的ddns更新接口,就实现了注册。

dnspod 动态域名的使用。openwrt使用dnspod动态域名解析。的更多相关文章

  1. dnspod动态域名使用感受

    继花生壳不能用之后,3322也开始不太好用了,首先就是360把所有3322的域名全部判定为危险域名,甚至拦截程序对于3322url的api请求. 所以想把3322换成我们自己的独立域名,但是3322他 ...

  2. Linux纯Shell实现DNSPod动态域名

    http://www.anrip.com/post/872 开发背景: 公司有台嵌入式拨号上网设备,内置busybox和完整wget命令(支持https协议),但没有curl.python.ruby. ...

  3. DNSPod DDNS 动态域名设置

    所谓动态域名,就是当你的服务器 IP 地址发生变化的时候,自动地修改你在「域名解析服务商」那里的域名记录值 怎么操作?看官方文档 DNSPod用户API文档 首先需要创建 Token 完整的 API ...

  4. RPi 2B DDNS 动态域名

    /**************************************************************************** * RPi 2B DDNS 动态域名 * 说 ...

  5. 基于etcd插件的CoreDNS动态域名添加

    前提条件:已经有一个可用的etcd环境. 一.CoreDNS简介 CoreDNS是一个DNS服务器,和Caddy Server具有相同的模型:它链接插件.CoreDNS是云本土计算基金会启动阶段项目. ...

  6. rhel7+apache+c cgi+动态域名实现web访问

    1. 申请动态域名/安装no-ip客户端 https://blog.csdn.net/lee244868149/article/details/44095835 2. yum安装httpd 两种方法安 ...

  7. 免费的freedns实现动态域名和url转发

    路由器的固件是dd-wrt 到freedns.afraid.org上注册一个动态域名,如果默认的端口无法使用80,需要配置二级域名的url转发功能. 实测2个月很稳定. 另外为了防止主机ip地址更新频 ...

  8. 教程:动手用自己电脑搭建一个网站 (nat123 花生壳 动态域名 个人电脑做服务器)

    先ps一下..今晚试了N种方法,终于找到一个靠谱 免费 好用的方法,来改装自己电脑成为服务器,在外网也能通过域名访问了!!! 需要准备的东西: Tomcat:这个是web容器,其实有了这个就已经让电脑 ...

  9. 思科E3200 路由器 DD-WRT 设置花生壳和3322.org动态域名(DDNS)

    花生壳设置(已測试) ddns.oray.com:80 username   aaaa password bbbb 主机名   abc.gicp.net URL       /ph/update?ho ...

随机推荐

  1. Redis Cluster集群

    一.redis-cluster设计 Redis集群搭建的方式有多种,例如使用zookeeper等,但从redis 3.0之后版本支持redis-cluster集群,Redis-Cluster采用无中心 ...

  2. 解决Ubuntu14.04 下 E: Encountered a section with no Package: header 问题

    参考: ubuntu-E:Encountered a section with no Package: header的解决办法 解决Ubuntu14.04 下 E: Encountered a sec ...

  3. P4-Related Tools Installation

    P4-Related Tools Installation 安装P4相关工具的步骤和说明. 本说明只适用于 Ubuntu 14.04 系统. 推荐安装的其他工具 mininet:SDN网络仿真工具 v ...

  4. HDU 1213 How Many Tables(并查集模板)

    http://acm.hdu.edu.cn/showproblem.php?pid=1213 题意: 这个问题的一个重要规则是,如果我告诉你A知道B,B知道C,这意味着A,B,C知道对方,所以他们可以 ...

  5. UVa 1610 聚会游戏

    https://vjudge.net/problem/UVA-1610 题意:输入一个n个字符串的集合D,找一个长度最短的字符串S,使得D中恰好有一半串小于等于S,另一半串大于S. 思路:先拍序,然后 ...

  6. Linux(CentOS 6.5) 下安装MySql 5.7.18 二进制版本粗浅攻略

    鉴于Linux和mysql因不同版本,安装方式也不同,所以在阅读本攻略前,请确保各位同学的版本和我的Linux.MySql 版本一致. 如果不一致,只能参考. 我的版本: Linux CentOS 6 ...

  7. vim/vi中移动光标键会变成A,B,C,D的解决办法

    在某些情况下, vi/vim中的编辑会出现一些很不愉快的情况, 比如在vi/vim中输入方向键有时被转化为A B C D, 或者按个Enter键, 却被转为为其他字母, 恼人得很, 该怎么办呢? 方法 ...

  8. Jmeter 中Cookie管理器的使用

    Jmeter中有好几个地方可以管理Cookie,比如 Http Cookie Manager HTTP Header Manager jmeter.property文件中: #CookieManage ...

  9. unity项目针对IOS及Android平台的音频压缩格式

    IOS : 建议采用MP3格式, Android : 建议采用Vorbis格式, 因为这两种格式分别在这两个平台上有硬件解码的支持, 硬件解码比软件解码快.

  10. ASCII 可打印字符与控制字符

    2017-08-16 21:29:30 基本的 ASCII 字符集共有 128 个字符,其中有 95 个可打印字符,包括常用的字母.数字.标点符号等,另外还有 33 个控制字符.标准 ASCII 码使 ...