讓OpenWrt原生ddns使用dnspod動態(tài)解析域名
時間:2023-02-07 10:04:01 | 來源:建站知識
時間:2023-02-07 10:04:01 來源:建站知識
本文原創(chuàng),轉(zhuǎn)載請聯(lián)系本人。
ddns是國外的協(xié)議,而且大多數(shù)都是收費的,國內(nèi)的花生殼又不穩(wěn)定,于是自己DIY了。網(wǎng)上有些文章是使用sddns,我簡單的看了下ddns,發(fā)現(xiàn)實際上無需裝sddns直接使用原生的ddns就能做到。
該方法適用于Barrier Breaker 14.07、Attitude Adjustment 12.09。新版的Chaos Calmer 15.05已經(jīng)帶有update_script配置參數(shù)了,能自己寫腳本實現(xiàn)了。新版的腳本文件:
packages/dynamic_dns_updater.sh at master · openwrt/packages · GitHub
所以Chaos Calmer 15.05之后的用戶可以不用繼續(xù)往下看了。
修改前提:1、申請dnspods的賬號,按照官方向?qū)?,將你的域名添加到dnspods上;
2、去域名提供商那,將你的域名DNS改為dnspods的;
修改方法:需要修改/usr/lib/ddns/dynamic_dns_updater.sh腳本,而且改法很簡單,只需要將原來的 改為
#some constantsif [ -z "$retrieve_prog" ]then retrieve_prog="/usr/bin/wget -O - ";fi
使能夠自己在配置文件中定義命令行進程即可,這種改法的好處是,還能兼容以前的國外的動態(tài)DNS。
改完之后,需要配置dnspod的配置,在配置/etc/config/ddns文件中新增:
option retrieve_prog '/usr/bin/curl -k -X POST https://dnsapi.cn/Record.Modify -d ' option update_url 'login_token=[LOGIN_TOKEN]&format=json&domain_id=[DOMAIN_ID]&record_id=[RECORD_ID]&sub_domain=[DOMAIN]&value=[IP]&record_type=[RECORD_TYPE]&record_line=%e9%bb%98%e8%ae%a4' option login_token '你的登錄Token' option domain_id '你的域名ID' option record_id '你的記錄ID'option domain '你的子域名' option record_type '記錄集類型'
上述內(nèi)容請自行處理縮進與換行。
其中,login_token請參考
https://support.dnspod.cn/Kb/showarticle/tsid/227/大功告成!
測試方法:在ssh中輸入/usr/lib/ddns/dynamic_dns_updater.sh myddns
上述命令行中的myddns是你配置文件中的config service 'myddns'。
如果提示curl不存在,請直接從安裝源安裝curl即可。
--9月17日更新
Chaos Calmer 15.05使用原生ddns的做法研究:
觀察dynamic_dns_functions.sh腳本第111--112行,可知若要使用curl,需配置USE_CURL=1;
第81行有自動檢測SSL機制,所以可以去掉-k參數(shù);
因此只需設(shè)置
update_url '--request POST
https://dnsapi.cn/Record.Modify --data login_token=[LOGIN_TOKEN]&format=json&domain_id=[DOMAIN_ID]&record_id=[RECORD_ID]&sub_domain=[DOMAIN]&value=[IP]&record_type=[RECORD_TYPE]&record_line=%e9%bb%98%e8%ae%a4
即可實現(xiàn)原生支持。
--12月25日更新
使curl支持post方式發(fā)送數(shù)據(jù)
在/etc/config/ddns中設(shè)置
option use_post '1'
然后在/usr/lib/ddns/dynamic_dns_function.sh中設(shè)置
找到
__PROG="/usr/bin/curl -RsS -o $DATFILE --stderr $ERRFILE"
在下面加入
if [ $use_post -eq 1 ]; thenexport __POST="$__URL"__PROG="$__PROG -d '${__POST#*/?}'"__URL="${__POST%/?*}"fi
即可
sse BianMun:要說可玩性的話,那還是openwrt,日常使用padavan就是看中穩(wěn)定直觀。