让OpenWrt原生ddns使用dnspod动态解析域名
时间:2023-02-07 10:04:01 | 来源:建站知识
时间:2023-02-07 10:04:01 来源:建站知识
本文原创,转载请联系本人。
ddns是国外的协议,而且大多数都是收费的,国内的花生壳又不稳定,于是自己DIY了。网上有些文章是使用sddns,我简单的看了下ddns,发现实际上无需装sddns直接使用原生的ddns就能做到。
该方法适用于Barrier Breaker 14.07、Attitude Adjustment 12.09。新版的Chaos Calmer 15.05已经带有update_script配置参数了,能自己写脚本实现了。新版的脚本文件:
packages/dynamic_dns_updater.sh at master · openwrt/packages · GitHub
所以Chaos Calmer 15.05之后的用户可以不用继续往下看了。
修改前提:1、申请dnspods的账号,按照官方向导,将你的域名添加到dnspods上;
2、去域名提供商那,将你的域名DNS改为dnspods的;
修改方法:需要修改/usr/lib/ddns/dynamic_dns_updater.sh脚本,而且改法很简单,只需要将原来的 改为
#some constantsif [ -z "$retrieve_prog" ]then retrieve_prog="/usr/bin/wget -O - ";fi
使能够自己在配置文件中定义命令行进程即可,这种改法的好处是,还能兼容以前的国外的动态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 '记录集类型'
上述内容请自行处理缩进与换行。
其中,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参数;
因此只需设置
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
即可实现原生支持。
--12月25日更新
使curl支持post方式发送数据
在/etc/config/ddns中设置
option use_post '1'
然后在/usr/lib/ddns/dynamic_dns_function.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就是看中稳定直观。