dnspod 動態域名的使用。openwrt使用dnspod動態域名解析。

這裏主要說的是linux shell下的使用。python

先看接口說明:linux

接口地址:
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。

示例:shell

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的。json

把ns服務器改成dnspod的免費服務器,土豪儘管去dnspoe註冊.com,使用收費服務器。api

等待大概24小時生效。服務器

到DNSPOD登記註冊,你已經註冊的域名。dom

在DNSPOD開啓tokencurl

API Token 生成方法詳見:https://support.dnspod.cn/Kb/showarticle/tsid/227/,完整的 API Token 是由 ID,Token 組合而成的,用英文的逗號分割post

記下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更新接口,就實現了註冊。

相關文章
相關標籤/搜索