原文:http://maoyuanrun.com/2015/10/05/openwrt-ddns-dnspod/
在OpenWrt Chaos Calmer之前,其原生的 ddns-scripts 并不支持 DNSPod 的域名解析服务,很多方案都是要安装 sddns 以提供支持。但从 CC 15.05 开始,ddns-scripts 加入了 update_script 这一选项,这让我们得以通过编写脚本使其支持DNSPod的服务。
获取域名和记录ID
首先,需要给OpenWrt安装cURL:
$ sudo opkg update $ sudo opkg install curl
然后前往 DNSPod 的后台创建一个login_token,并通过 DNSPod 的 API 获取域名列表 和 记录列表 分别取得域名ID(DOMAIN_ID)和记录ID(RECORD_ID),记下这两个ID,相关请求如下:
# 获取域名ID curl -X POST https://dnsapi.cn/Domain.List -d 'login_token=LOGIN_TOKEN&format=json' # 获取记录ID curl -X POST https://dnsapi.cn/Record.List -d 'login_token=LOGIN_TOKEN&format=json&domain_id=DOMAIN_ID'
若提示类似下面的错误
curl: (77) Error reading ca cert path /etc/ssl/certs - PolarSSL: (-0x2900) X509 - Read/write of file failed
可以试着安装ca-certificates后重试
opkg install ca-certificates
新建一个脚本文件,例如 update_script.sh,放入root目录,脚本内容大致如下:
#!/bin/sh IP=$(ifconfig pppoe-wan | awk '/inet addr/{print substr($2,6)}')URL='https://dnsapi.cn/Record.Modify'
LOGIN_TOKEN='13490,6b5976c68aba5b14a0558b77c17c3932'
DOMAIN_ID='2317346' # 域名 ID
RECORD_ID='16894439' # 记录 ID
SUB_DOMAIN='www' # 子域名RECORD_TYPE='A' # A 记录
RECORD_LINE='%e9%bb%98%e8%ae%a4' # 默认DATA="login_token=${LOGIN_TOKEN}&format=json&
domain_id={DOMAIN_ID}&record_id={RECORD_ID}&
sub_domain={SUB_DOMAIN}&value={IP}&
record_type={RECORD_TYPE}&record_line={RECORD_LINE}"curl -X POST {URL} -d {DATA}
在LuCi中添加计划任务,每15分钟更新一次,内容如下:
*/15 * * * * /root/update_script.sh &>/dev/null
SSH验证配置文件是否有效:
./update_dnspod_wdmhsh.sh
注意脚本的编码格式为UTF-8/Unix
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于