恩山无线论坛

标题: [分享]适用于OpenWRT/LEDE自带DDNS功能的阿里云脚本,完美嵌入 [打印本页]

作者: sensel    时间: 2018-1-3 21:48
标题: [分享]适用于OpenWRT/LEDE自带DDNS功能的阿里云脚本,完美嵌入
本帖最后由 sensel 于 2021-6-29 19:56 编辑

如你所知,LEDE自带的DDNS功能并不支持阿里云解析,国内的话目前比较稳定的也只有花生壳还算可以。然而免费的东西,难免有域名不好听、偶尔抽风等毛病。前天看到本坛lean兄的大作,才发现可以将阿里云DNS解析设置用脚本来管理,实现了动态解析自有域名的梦想。阿里那边.top域名促销,购买首年只需2元,续费每年也不过16,拿来当私有动态DNS最为合适。然而我看lean兄软件包里的做法,是自建一个完整功能的DDNS的软件包,感觉些许不便,比如不支持IPV6、HTTPS证书等功能,设置方面也比较薄弱,于是有了将阿里云解析功能集成进自带DDNS的想法。这么做的优点,是将管理界面、IP检测、启停、日志等外围功能都交由官方包实现,脚本只需完成最核心的构建云指令并签名,及与阿里服务器之间的通信功能。目前已实现完全嵌入自带DDNS功能,并做出IPK包,拿来分享给需要的朋友。再次感谢lean兄提供的思路!
脚本及安装包完全开源,放弃版权,欢迎各位集成到自己的固件。软件依赖:ddns-scripts(即自带DDNS管理脚本) luci-app-ddns(可选,自带功能的LUCI界面)wget(GNU Wget 完成与服务器通信) openssl-util(openssl工具用于生成签名)。

LEDE首页上的DDNS状态一栏。
[attach]194855[/attach]

DDNS管理主界面。我用了花生壳和阿里云2个动态DNS,在一个界面上管理。
[attach]194854[/attach]

DDNS设置页面,注意DDNS服务提供商列表里多了一个 aliyun.com。支持IPV6、HTTPS、自定义网络接口、代理服务器、检测间隔等功能。
[attach]194856[/attach]

本次启动的日志记录。可以看到前面的启动、IP获取等都由自带功能完成,在检测到IP地址发生变化后调用了脚本来完成与服务器之间的通信。
[attach]194857[/attach]

很幸运,日志记录了一段服务器返回出错后处理的流程。可以看到按照设置的重试间隔60秒后,脚本顺利完成IP更新。另外,这次我用的是HTTPS链接。
[attach]195022[/attach]

用到的脚本,只有一个 update_aliyun_com.sh 文件,安装后位置在 /usr/lib/ddns/。
[attach]194858[/attach]

核心的构造请求参数函数。这部分折腾了2天,坑爹的阿里接收到无效参数仅返回一个400,没有任何有用提示,害我以为是服务器问题排查了半天。
[attach]194859[/attach]

--------------------
最后当然是安装包。。。OpenWRT/LEDE全平台适用
[attach]194860[/attach]

--------------------
源码已托管到github https://github.com/sensec/ddns-scripts_aliyun
偶尔手痒也会想再完善一下。。。然而真没什么可改的 外围的繁琐的功能都交由官方客户端搞定,核心的阿里云通信协议又是几年不变,现在基本没我的事了。。。
当然,欢迎各位提出自己的需求或者遇到的问题,力所能及必定回复(安装使用等OpenWRT基础问题请自行google/baidu解决)。

--------------------
2021/3/6
小小更新一下,解决不区分A记录和AAAA记录的BUG(感谢 @phoenixbleed ),和改进了wget-ssl的检测方法。
源码:[attach]451546[/attach]
安装包:[attach]451545[/attach]

--------------------
2021/5/24
加一个适用于DDNS 2.8.2版本的安装包。2.8.2以上版本更改了服务商列表,所以需要修改安装脚本,主脚本保持不变。
安装包:[attach]473795[/attach]

--------------------
2021/6/16
1.0.2 版本,建议更新
1、改用curl完成http请求,不再使用wget-ssl,避免一些奇奇怪怪的麻烦。
2、加入自定义TTL,可直接修改脚本文件对应变量,默认600秒(10分钟)。
3、重新梳理整个脚本,完善获取解析记录列表函数。
4、安装包自动判断,适配所有DDNS-Script版本。

源码:[attach]477265[/attach]
安装包:[attach]477264[/attach]

预告:对号称最便宜的国外域名商 NameSilo 的支持插件已完成,目前正在某Q群小范围测试使用,近期有空就开帖。

--------------------
另,有朋友问怎么修改主记录,只要把域名那里设为 @xxx.top 就好。

新版的ddns-scripts日志不显示中文的解决办法:
编辑 /usr/lib/ddns/dynamic_dns_functions.sh,找到 write_log() 函数,将其中的
  1. if [ -n "$password" ]; then
  2. urlencode __MSE "$__MSG"
  3. __MSG=$( echo -e "$__MSE" \
  4. | sed -e "s/$URL_PASS/***PW***/g" \
  5. | sed -e "s/+/ /g; s/%00/\n/g; s/%/\\\\x/g" | xargs -0 printf "%b" )
  6. fi
复制代码

替换为
  1. if [ -n "$password" ]; then
  2. __MSG=$( echo -e "$__MSG" \
  3. | sed -e "s/$URL_PASS/***PW***/g" | xargs -0 printf "%b" )
  4. fi
复制代码


作者: 1184214234    时间: 2018-1-3 21:57
支持下,虽然我用不到
作者: root8    时间: 2018-1-3 22:39
大神,支持。

作者: hwlon    时间: 2018-1-4 17:39
本帖最后由 hwlon 于 2018-1-4 22:12 编辑

再顶一下,不过没测试。如果测试好用,再过来顶你。  经测试不好用啊,再完善完善吧!我还是用我修改的吧!!
作者: mjyhj    时间: 2018-1-5 00:26
给力啊~~~~~~~~~~~
作者: sensel    时间: 2018-1-5 00:37
hwlon 发表于 2018-1-4 17:39
再顶一下,不过没测试。如果测试好用,再过来顶你。  经测试不好用啊,再完善完善吧!我还是用我修改的吧! ...

哪里不好用可以说一下吗?
作者: xm3good    时间: 2018-1-5 12:58
这个源码包应该放在什么地方里边只有一个脚本文件,我应该放在DDNS里么做下替换么?


作者: hello_limin    时间: 2018-1-5 13:58
亲,你这么厉害,我想做你的经纪人!
作者: hwlon    时间: 2018-1-5 14:30
sensel 发表于 2018-1-5 00:37
哪里不好用可以说一下吗?

我测试了 日志 一片错误 ,我也忘记截图了,A记录  @域名支持不好!!!,再多多测试完善吧,相信你会成功的!!
作者: cboy88    时间: 2018-1-5 14:40
支持大神,回头也买个阿里云域名去

作者: sensel    时间: 2018-1-5 17:03
hwlon 发表于 2018-1-5 14:30
我测试了 日志 一片错误 ,我也忘记截图了,A记录  @域名支持不好!!!,再多多测试完善吧,相信你会成功 ...

绿字说明,主机和域名之间使用@或.符号分隔。@记录比较特殊,假设你的域名为 aaa.com,lookup 那里应该直接填域名 aaa.com,下面的 domain 域那里要填 @aaa.com 或者 @.aaa.com 都可以。这是由于需要兼容一般人 www.aaa.com 这种习惯,我在脚本里做了兼容处理,如果域名内不包含@符号,会将第一个.符号当作主机和域名之间的分隔符。
我猜,你在 domain 一栏直接填的 aaa.com,于是脚本把主机当成 aaa,域名当成 com。。。不出错才有鬼了

[attach]195194[/attach]

作者: khzhao    时间: 2018-1-5 19:53
   谢谢谢谢正在找呢。

作者: lszjyj    时间: 2018-1-5 19:57
谢谢楼主分享!
作者: leeyonwang    时间: 2018-1-6 01:52
我用的固件自带了阿里云ddns,就是lean的那种,然后我直接在putty里安装的你的ipk,安装成功了,但是现在我没法进入动态ddns那个页面,点击一直是正在加载,一直landing。。。 是不是冲突了??
作者: tomery    时间: 2018-1-6 02:17
真心感谢楼主,感谢开源
作者: leeyonwang    时间: 2018-1-7 02:02
本帖最后由 leeyonwang 于 2018-1-7 02:17 编辑
leeyonwang 发表于 2018-1-6 01:52
我用的固件自带了阿里云ddns,就是lean的那种,然后我直接在putty里安装的你的ipk,安装成功了,但是现在我 ...

现在可以用了,多谢!
作者: hello_limin    时间: 2018-1-10 10:10
用不到
作者: gemmanho    时间: 2018-1-12 21:00
谢谢谢谢正在找呢。
作者: hello_limin    时间: 2018-1-14 16:24
编译用的源码。
作者: li809    时间: 2018-1-15 12:02

大神,支持。
作者: 橙の树下    时间: 2018-1-15 13:19
[attach]196748[/attach]

[attach]196749[/attach]

求教大神,这是怎么回事?


作者: sensel    时间: 2018-1-15 13:49
橙の树下 发表于 2018-1-15 13:19
求教大神,这是怎么回事?

1、检查密码是否错误?从日志看不符合阿里云的格式。
2、使用HTTPS但没有指定证书的话,需要在最后一行的CA证书路径输入 IGNORE,即需要遵从下面的提示。
作者: 橙の树下    时间: 2018-1-15 13:54
删去以前的 重新添加就对了,密码账号都是直接复制粘贴的,应该没有错。不知道哪的问题。
不过现在已经正常了,
谢谢大神,这样嵌入在自带的ddns里面真的是很完美。
作者: qi20081234    时间: 2018-1-15 13:56
技术帖,支持楼主,楼主辛苦

作者: qi20081234    时间: 2018-1-15 13:57
楼主辛苦,支持楼主

作者: sensel    时间: 2018-1-15 14:19
橙の树下 发表于 2018-1-15 13:54
删去以前的 重新添加就对了,密码账号都是直接复制粘贴的,应该没有错。不知道哪的问题。
不过现在已经正 ...

多亏自带DDNS的功能完善,模块性和开放性也做得比较好,可以放心将界面、检测等功能托付,而且官方更新也很及时,有什么新技术都会在第一时间支持。
这样的话,我这个脚本完成后就不怎么需要修改了,除非阿里云那边另有升级。
作者: sufeiy    时间: 2018-1-15 15:03
谢谢正在找呢。....
作者: yan1990_y    时间: 2018-2-20 12:16
特地过来顶一下!!
作者: llq_1983    时间: 2018-2-23 21:02
本帖最后由 llq_1983 于 2018-2-23 22:35 编辑

我的4300  LEDE ,  安装折腾中..

作者: llq_1983    时间: 2018-2-24 09:06
报错:wget 错误代码: '8'。  按照回复区的方式,删除重新建立还是不行
基础设置如下:
Lookup Hostname:xxxx.top
Domain:  www.xxxxx.top

日志如下:
085150       : ************ ************** ************** **************
085150  note : PID '17094' started at 2018-02-24 08:51
085150       : ddns version  : 2.7.6-13
085150       : uci configuration:
ddns.ipv4.domain='www.sxxxxxxxxxxxxnt.top'
ddns.ipv4.enabled='1'
ddns.ipv4.interface='wan'
ddns.ipv4.ip_interface='pppoe-wan'
ddns.ipv4.ip_source='interface'
ddns.ipv4.lookup_host='sxxxxxxxxxxxxt.top'
ddns.ipv4.password='xxxxxxxxxxxxxxxx5n'
ddns.ipv4.service_name='aliyun.com'
ddns.ipv4.username='Lxxxxxxxxxxxx'
ddns.ipv4=service
085150       : verbose mode  : 0 - run normal, NO console output
085151       : check interval: 600 seconds
085151       : force interval: 259200 seconds
085151       : retry interval: 60 seconds
085151       : retry counter : 0 times
085152       : No old process
085152       : last update: never
085152       : Detect registered/public IP
085152       : #> /usr/bin/nslookup xxxxx.top  >/var/run/ddns/ipv4.dat 2>/var/run/ddns/ipv4.err
085152       : Registered IP '218.xxx.148' detected
085152  info : Starting main loop at 2018-02-24 08:51
085152       : Detect local IP on 'interface'
085152       : #> ip -o addr show dev pppoe-wan scope global >/var/run/ddns/ipv4.dat 2>/var/run/ddns/ipv4.err
085152       : Local IP '218.xxxx.14' detected on interface 'pppoe-wan'
085152       : Update needed - L: '218.xxxx.14' <> R: '218.xxx.148'
085152       : parsing script '/usr/lib/ddns/update_aliyun_com.sh'
085153       : #> /usr/bin/wget-ssl -nv -t 1 -O /var/run/ddns/ipv4.dat -o /var/run/ddns/ipv4.err --no-proxy 'http://alidns.aliyuncs.com/?Action=DescribeSubDomainRecords&SubDomain=www.xxxxx.top&Format=JSON&Version=2015-01-09&AccessKeyId=LTxxxxxxxxx&SignatureMethod=HMAC-SHA1&Timestamp=2018-02-24T00%3A51%3A52Z&SignatureVersion=1.0&SignatureNonce=2b734e96-506e-4908-9eb1-10e38d476cec&Signature='
085154 ERROR : wget 错误代码: '8'
085154       : http://alidns.aliyuncs.com/?Acti ... cec&Signature=:
2018-02-24 08:51:54 ERROR 400: Bad Request.
085154  WARN : 传输失败 - 1/0 在 60 秒后重试
作者: sensel    时间: 2018-2-24 23:24
llq_1983 发表于 2018-2-24 09:06
报错:wget 错误代码: '8'。  按照回复区的方式,删除重新建立还是不行
基础设置如下:
Lookup Hostname: ...

参数最后的Signature= 后面是空的?检查一下 openssl-util 有没有安装,签名HMAC值需要用它来计算。
如果是需要修改@记录,Domain:  @xxxxx.top,Lookup Hostname:xxxxx.top
如果是修改www记录,Domain:  www.xxxxx.top,Lookup Hostname:www.xxxxx.top
作者: kevin888    时间: 2018-2-25 08:05
感谢分享。。
作者: llq_1983    时间: 2018-2-25 16:11
openssl-util 安装了,也使用update更新过,运行还是报错。
S-S R和广告插件在运行。关了后也一样报错


155719       : ************ ************** ************** **************
155719  note : PID '20446' started at 2018-02-25 15:57
155719       : ddns version  : 2.7.6-13
155719       : uci configuration:
ddns.ipv4.domain='www.stxxxxxxxxxxxxxxt.top'
ddns.ipv4.enabled='1'
ddns.ipv4.interface='wan'
ddns.ipv4.ip_interface='pppoe-wan'
ddns.ipv4.ip_source='interface'
ddns.ipv4.lookup_host='www.stxxxxxxxxxxxxxxt.top'
ddns.ipv4.password='5Cxxxxxxxxxxxxxxj5n'
ddns.ipv4.service_name='aliyun.com'
ddns.ipv4.username='LTxxxxxxxxxxxxxxhPb'
ddns.ipv4=service
155719       : verbose mode  : 0 - run normal, NO console output
155720       : check interval: 600 seconds
155720       : force interval: 259200 seconds
155720       : retry interval: 60 seconds
155720       : retry counter : 0 times
155720       : No old process
155720       : last update: never
155720       : Detect registered/public IP
155720       : #> /usr/bin/nslookup www.stxxxxxxxxxxxxxxt.top  >/var/run/ddns/ipv4.dat 2>/var/run/ddns/ipv4.err
155720       : Registered IP '222.2xx.xx1.113' detected
155720  info : Starting main loop at 2018-02-25 15:57
155721       : Detect local IP on 'interface'
155721       : #> ip -o addr show dev pppoe-wan scope global >/var/run/ddns/ipv4.dat 2>/var/run/ddns/ipv4.err
155721       : Local IP '222.2xx.1xx.113' detected on interface 'pppoe-wan'
155721       : Forced Update - L: '222.xx2.xx1.113' == R: '222.xx2.xx1.113'
155721       : parsing script '/usr/lib/ddns/update_aliyun_com.sh'
155722       : #> /usr/bin/wget-ssl -nv -t 1 -O /var/run/ddns/ipv4.dat -o /var/run/ddns/ipv4.err --no-proxy 'http://alidns.aliyuncs.com/?Action=DescribeSubDomainRecords&SubDomain=www.stxxxxxxxxxxxxxxt.top&Format=JSON&Version=2015-01-09&AccessKeyId=LTxxxxxxxxxxxxxxhPb&SignatureMethod=HMAC-SHA1&Timestamp=2018-02-25T07%3A57%3A21Z&SignatureVersion=1.0&SignatureNonce=d18a06ab-8763-4e44-b347-bc8a2535c569&Signature='
155722 ERROR : wget 错误代码: '8'
155722       : http://alidns.aliyuncs.com/?Acti ... 569&Signature=:
2018-02-25 15:57:22 ERROR 400: Bad Request.
155722  WARN : 传输失败 - 1/0 在 60 秒后重试
155823       : #> /usr/bin/wget-ssl -nv -t 1 -O /var/run/ddns/ipv4.dat -o /var/run/ddns/ipv4.err --no-proxy 'http://alidns.aliyuncs.com/?Action=DescribeSubDomainRecords&SubDomain=www.stxxxxxxxxxxxxxxt.top&Format=JSON&Version=2015-01-09&AccessKeyId=LTxxxxxxxxxxxxxxhPb&SignatureMethod=HMAC-SHA1&Timestamp=2018-02-25T07%3A58%3A23Z&SignatureVersion=1.0&SignatureNonce=599a83d2-4388-4659-8f1d-12a6dc354f2b&Signature='
155823 ERROR : wget 错误代码: '8'
155823       : http://alidns.aliyuncs.com/?Acti ... f2b&Signature=:
2018-02-25 15:58:23 ERROR 400: Bad Request.
155823  WARN : 传输失败 - 2/0 在 60 秒后重试

作者: sensel    时间: 2018-2-25 18:17
llq_1983 发表于 2018-2-25 16:11
openssl-util 安装了,也使用update更新过,运行还是报错。
S-S R和广告插件在运行。关了后也一样报错

SSH登录路由器,运行以下命令,然后把结果贴出来看看。

  1. __SEPARATOR="&"
  2. __URLARGS='Action=DescribeSubDomainRecords&SubDomain=www.xxx.top&Format=JSON&Version=2015-01-09&AccessKeyId=LTxxxhPb&SignatureMethod=HMAC-SHA1&Timestamp=2018-02-25T07%3A57%3A21Z&SignatureVersion=1.0&SignatureNonce=d18a06ab-8763-4e44-b347-bc8a2535c569'

  3. string=$(echo -n "$__URLARGS" | sed 's/\'"${__SEPARATOR}"'/\n/g' | sort | sed ':label; N; s/\n/\'"${__SEPARATOR}"'/g; b label')
  4. echo $string

  5. signature=$(echo -n "$string" | openssl dgst -sha1 -hmac "${password}&" -binary)
  6. echo $signature
  7. signature=$(echo -n "$signature" | openssl base64)
  8. echo $signature

  9. unset __SEPARATOR __URLARGS string signature
复制代码

作者: air_zq    时间: 2018-2-26 12:47
本帖最后由 air_zq 于 2018-2-26 12:56 编辑

想问下,阿里云解析里是如何配置的?


我的日志中报错
Mon Feb 26 12:38:06 2018 user.notice ddns-scripts[12196]: aliyun: PID '12196' started at 2018-02-26 12:38
Mon Feb 26 12:38:07 2018 user.warn ddns-scripts[12196]: aliyun: NO valid IP found
Mon Feb 26 12:38:07 2018 user.err ddns-scripts[12196]: aliyun: No or private or invalid IP '192.168.0.210' given! Please check your configuration
Mon Feb 26 12:38:07 2018 user.err ddns-scripts[12196]: aliyun: No update send to DDNS Provider
[attach]202949[/attach][attach]202950[/attach]

作者: sensel    时间: 2018-2-26 23:00
air_zq 发表于 2018-2-26 12:47
想问下,阿里云解析里是如何配置的?

你的问题是没有获取到有效外网IP。你是不是在内网路由上运行?去改一下高级设置里的IP地址来源类型
作者: air_zq    时间: 2018-2-27 11:54
sensel 发表于 2018-2-26 23:00
你的问题是没有获取到有效外网IP。你是不是在内网路由上运行?去改一下高级设置里的IP地址来源类型

太感谢,已经完美运行了。
作者: air_zq    时间: 2018-3-1 10:59
sensel 发表于 2018-2-26 23:00
你的问题是没有获取到有效外网IP。你是不是在内网路由上运行?去改一下高级设置里的IP地址来源类型

[attach]203388[/attach]
二级域名,这样设计正确么?
今天日志中出现了这个  不知是什么原因
Thu Mar  1 10:55:15 2018 user.err ddns-scripts[20117]: aliyun: wget 错误代码: '8'
Thu Mar  1 10:55:15 2018 user.warn ddns-scripts[20117]: aliyun: 传输失败 - 108/0 在 60 秒后重试
Thu Mar  1 10:56:16 2018 user.err ddns-scripts[20117]: aliyun: wget 错误代码: '8'
Thu Mar  1 10:56:16 2018 user.warn ddns-scripts[20117]: aliyun: 传输失败 - 109/0 在 60 秒后重试
Thu Mar  1 10:57:17 2018 user.err ddns-scripts[20117]: aliyun: wget 错误代码: '8'
Thu Mar  1 10:57:17 2018 daemon.info odhcpd[372]: Using a RA lifetime of 0 seconds on br-lan
Thu Mar  1 10:57:17 2018 user.warn ddns-scripts[20117]: aliyun: 传输失败 - 110/0 在 60 秒后重试
Thu Mar  1 10:58:17 2018 user.err ddns-scripts[20117]: aliyun: wget 错误代码: '8'
Thu Mar  1 10:58:17 2018 user.warn ddns-scripts[20117]: aliyun: 传输失败 - 111/0 在 60 秒后重试



作者: sensel    时间: 2018-3-1 11:43
air_zq 发表于 2018-3-1 10:59
二级域名,这样设计正确么?
今天日志中出现了这个  不知是什么原因
Thu Mar  1 10:55:15 2018 use ...

lookup hostname 是用于检测IP地址的域名,domain 是更新用域名。
一般情况下,这两者是相同的,即 lookup=yyy.xxx.top、domain=yyy.xxx.top。只有一种情况例外,即你需要修改的是 xxx.top 本身,那么 lookup=xxx.top、domain=@xxx.top。
作者: lin511321    时间: 2018-3-1 16:33
做个记号,谢谢楼主
作者: zhangtengfei    时间: 2018-3-17 13:59
35624       : #> /usr/bin/wget-ssl -nv -t 1 -O /var/run/ddns/myddns_ipv4.dat -o /var/run/ddns/myddns_ipv4.err --no-check-certificate --no-proxy 'https://alidns.aliyuncs.com/?Action=DescribeSubDomainRecords&SubDomain=%40.zhangtengfei.blog&Format=JSON&Version=2015-01-09&AccessKeyId=1502308474&SignatureMethod=HMAC-SHA1&Timestamp=2018-03-17T05%3A56%3A24Z&SignatureVersion=1.0&SignatureNonce=577e3cac-fd13-41d5-a535-c28fb3d5d398&Signature='
135625 ERROR : GNU Wget Error: '8'
135625       : WARNING: cannot verify alidns.aliyuncs.com's certificate, issued by 'CN=Symantec Class 3 Secure Server CA - G4,OU=Symantec Trust Network,O=Symantec Corporation,C=US':
  Unable to locally verify the issuer's authority.
https://alidns.aliyuncs.com/?Act ... 398&Signature=:
2018-03-17 13:56:25 ERROR 404: Not Found.
135625  WARN : Transfer failed - retry 1/1000 in 60 seconds
作者: sensel    时间: 2018-3-17 21:32
Signature=,检查 openssl-util 吧。或者是没安装,或者是安装了其它东西破坏了它的功能。。。
你可以尝试SSH进去 echo test | openssl dgst -sha1,看看会输出什么错误信息。
作者: 石头猫    时间: 2018-3-21 03:59
感谢作者大神

安装的时候出现这个错误:
  1. root@OpenWrt:~# opkg install ddns-scripts_aliyun_1.0.0-1_all.ipk
  2. Installing ddns-scripts_aliyun (1.0.0-1) to root...
  3. Configuring ddns-scripts_aliyun.
  4. //usr/lib/opkg/info/ddns-scripts_aliyun.postinst: /usr/lib/opkg/info/ddns-scripts_aliyun.postinst-pkg: line 6: can't create /etc/ddns/services: nonexistent directory
  5. //usr/lib/opkg/info/ddns-scripts_aliyun.postinst: /usr/lib/opkg/info/ddns-scripts_aliyun.postinst-pkg: line 7: can't create /etc/ddns/services_ipv6: nonexistent directory
复制代码


DDNS服务提供商一栏中也找不到aliyun.com

ddns-scripts wget openssl-util luci-app-ddns
都已安装
作者: sensel    时间: 2018-3-21 13:45
石头猫 发表于 2018-3-21 03:59
感谢作者大神

安装的时候出现这个错误:

/etc/ddns/services 文件不存在。这2个是ddns-scripts的配置文件,可能ddns-scripts未安装成功,或者版本太旧。
作者: peaier    时间: 2018-3-23 00:05
已经安装了自带的ddns,需要先删除后再安装楼主的ipk包嘛,谢谢?
作者: mjyhj    时间: 2018-3-23 01:15
怎么在主页上显示 DDNS
作者: sensel    时间: 2018-3-23 19:06
peaier 发表于 2018-3-23 00:05
已经安装了自带的ddns,需要先删除后再安装楼主的ipk包嘛,谢谢?

不需要,直接安装就好。先安装依赖组件
作者: sensel    时间: 2018-3-23 19:07
mjyhj 发表于 2018-3-23 01:15
怎么在主页上显示 DDNS

直接显示的。不显示的话可能是LEDE版本太旧
作者: hwlon    时间: 2018-3-26 15:45
hwlon 发表于 2018-1-4 17:39
再顶一下,不过没测试。如果测试好用,再过来顶你。  经测试不好用啊,再完善完善吧!我还是用我修改的吧! ...

最新版已经好用了,谢谢!!
作者: hwlon    时间: 2018-3-26 15:45
hwlon 发表于 2018-1-5 14:30
我测试了 日志 一片错误 ,我也忘记截图了,A记录  @域名支持不好!!!,再多多测试完善吧,相信你会成功 ...

最新版已经好用了
作者: hwlon    时间: 2018-3-26 15:49
本帖最后由 hwlon 于 2018-3-26 15:55 编辑

最新版已经好用了,就是概览“网络 配置错误” 不过不影响使用



作者: sensel    时间: 2018-3-27 12:56
hwlon 发表于 2018-3-26 15:49
最新版已经好用了,就是概览“网络 配置错误” 不过不影响使用

这个错误更新LEDE或DDNS就好了。
以前我这里也是显示网络配置错误,某次更新LEDE后就显示正常了,哪个版本没记。
作者: lovesuni    时间: 2018-3-27 15:52
感谢楼主,感谢开源
作者: inlyt    时间: 2018-4-4 10:46
sensel 发表于 2018-3-23 19:06
不需要,直接安装就好。先安装依赖组件

104258       : ************ ************** ************** **************
104258  note : PID '23781' started at 2018-04-04 10:42
104258       : ddns version  : 2.7.7-3
104258       : uci configuration:\nddns.aliyun.check_interval='5'
ddns.aliyun.domain='@.inlyt.top'
ddns.aliyun.enabled='1'
ddns.aliyun.force_interval='10'
ddns.aliyun.force_unit='minutes'
ddns.aliyun.lookup_host='inlyt.top'
ddns.aliyun.password='*password*'
ddns.aliyun.service_name='aliyun.com'
ddns.aliyun.username='LTAIDURUOLMa9v3r'
ddns.aliyun=service
104258       : verbose mode  : 0 - run normal, NO console output
104259       : check interval: 300 seconds
104259       : force interval: 600 seconds
104259       : retry interval: 60 seconds
104259       : retry counter : 0 times
104259       : No old process
104259       : last update: never
104259       : Detect registered/public IP
104259       : #> /usr/bin/nslookup inlyt.top  >/var/run/ddns/aliyun.dat 2>/var/run/ddns/aliyun.err
104259 ERROR : BusyBox nslookup error: '1'
104259       : nslookup: can't resolve '(null)': Name does not resolve
nslookup: can't resolve 'inlyt.top': Name does not resolve
104259       : Detect registered/public IP
104259       : #> /usr/bin/nslookup inlyt.top  >/var/run/ddns/aliyun.dat 2>/var/run/ddns/aliyun.err
104259 ERROR : BusyBox nslookup error: '1'
104259       : nslookup: can't resolve '(null)': Name does not resolve
nslookup: can't resolve 'inlyt.top': Name does not resolve
104259  WARN : Get registered/public IP for 'inlyt.top' failed - retry 1/0 in 60 seconds
我设置后总是出现这个。。
作者: sensel    时间: 2018-4-5 01:40
inlyt 发表于 2018-4-4 10:46
104258       : ************ ************** ************** **************
104258  note : PID '23 ...

104259 ERROR : BusyBox nslookup error: '1'
提示 busybox nslookup 返回错误。检查你的固件版本,可能的话更新一下。
作者: inlyt    时间: 2018-4-5 02:17
sensel 发表于 2018-4-5 01:40
104259 ERROR : BusyBox nslookup error: '1'
提示 busybox nslookup 返回错误。检查你的固件版本,可能 ...

噢,谢谢啊!感激回复,问了好多人,碰了好多壁…居然可以等到您的回复,感激不尽~话说固件版本最低需要什么版本号呢??
作者: sensel    时间: 2018-4-5 20:13
inlyt 发表于 2018-4-5 02:17
噢,谢谢啊!感激回复,问了好多人,碰了好多壁…居然可以等到您的回复,感激不尽~话说固件版本最低需要 ...

一般固件nslookup都是可用的,怀疑你用的这个版本有问题,建议换个版本试试。
我的测试环境为LEDE 17.01。
作者: tempma    时间: 2018-4-11 10:38
Koolddns里面有alidns,和你的有啥区别啊?
作者: gfyuye    时间: 2018-4-20 12:57
楼主的脚本很好用.但是帖子里的没有强调,应该设置中的用户名,密码应该是Access Key 和Access Key Secret.我在这个上面走了弯路.
作者: sensel    时间: 2018-4-20 21:57
gfyuye 发表于 2018-4-20 12:57
楼主的脚本很好用.但是帖子里的没有强调,应该设置中的用户名,密码应该是Access Key 和Access Key Secret.我 ...

在倒数第二张图的绿字部分。。。我懒得多打字
作者: tangmin21141    时间: 2018-4-22 23:54
本帖最后由 tangmin21141 于 2018-4-22 23:55 编辑

系统日志:
Sun Apr 22 21:44:33 2018 daemon.notice xlnetacc: XLNetAcc is starting ...
Sun Apr 22 22:34:09 2018 daemon.notice xlnetacc: XLNetAcc has stoped.
Sun Apr 22 22:34:10 2018 daemon.notice xlnetacc: XLNetAcc is starting ...
Sun Apr 22 23:39:04 2018 daemon.notice xlnetacc: XLNetAcc has stoped.
Sun Apr 22 23:39:05 2018 daemon.notice xlnetacc: XLNetAcc is starting ...

日志文件:
2018/04/22 21:44:33 迅雷快鸟正在启动...
2018/04/22 21:44:34 _peerid is 31013B8BFF9A004V
2018/04/22 21:44:34 _devicesign is div101.b45a4b2bef45f70bf6572946be86559b7903b4ccc4ff66c7d3921682fc574b0b
2018/04/22 21:44:34 绑定IP地址: 123.XXX.XX.132
2018/04/22 21:44:34 login is {"errorCode":"6","errorDesc":"为了您的帐号安全,请输入图形验证码[6]","errorDescUrl":"","errorIsRetry":0,"isCompressed":"0","platformVersion":"2","protocolVersion":"200","sequenceNo":"1000001","userID":"","verifyType":"MEA"}
2018/04/22 21:44:34 帐号登录失败。错误代码: 6,原因: 为了您的帐号安全,请输入图形验证码[6]
2018/04/22 22:34:09 trap sigterm, exit

然而在手机上能够正常登陆并加速,这个问题怎么破?打客服要如何交涉?请大神帮个忙。@sensel
作者: tangmin21141    时间: 2018-4-22 23:56
tangmin21141 发表于 2018-4-22 23:54
系统日志:
Sun Apr 22 21:44:33 2018 daemon.notice xlnetacc: XLNetAcc is starting ...
Sun Apr 22 22 ...

不好意思,回错帖子了。
作者: xiaoyi4425    时间: 2018-4-25 13:02
适用于石像鬼吗?
作者: amjake    时间: 2018-4-28 11:10

大神,支持。
作者: cyandragons    时间: 2018-4-29 00:33
//usr/lib/opkg/info/ddns-scripts_aliyun.postinst: /usr/lib/opkg/info/ddns-scripts_aliyun.postinst-pkg: line 6: can't create /etc/ddns/services: nonexistent directory
//usr/lib/opkg/info/ddns-scripts_aliyun.postinst: /usr/lib/opkg/info/ddns-scripts_aliyun.postinst-pkg: line 7: can't create /etc/ddns/services_ipv6: nonexistent directory
ChaosCalmer系统,安装出现了这个。
感觉是版本不适配?
作者: cyandragons    时间: 2018-4-29 00:51
现在装的ddns-scripts是2.4.3-1的,不知道是否合适?没有更新了好像
作者: sensel    时间: 2018-4-29 23:04
cyandragons 发表于 2018-4-29 00:51
现在装的ddns-scripts是2.4.3-1的,不知道是否合适?没有更新了好像

更新到LEDE 17.01吧,带的 ddns-scripts 是 2.7.6
作者: cyandragons    时间: 2018-4-29 23:12
sensel 发表于 2018-4-29 23:04
更新到LEDE 17.01吧,带的 ddns-scripts 是 2.7.6

现在已经成功安装了,但是服务商里直接显示custom,一个服务商都没有了。
还是CC15.05
请问大神咋处理啊?
作者: cyandragons    时间: 2018-4-30 00:35
已经刷了LEDE了,结果还是直接显示custom,所有服务商都不在了。很奇怪。
作者: cyandragons    时间: 2018-4-30 01:09
感谢楼主的作品,LEDE目前故障已经排除了,很好用!不过我觉得最小的检查时间可以设置为30秒,这样确保稳定。
作者: cyandragons    时间: 2018-4-30 16:55
楼主可否缩短一下检查间隔时间?我想将间隔时间最小设为30秒,5分钟感觉有点太长了,代码不是很改的来。。。
谢谢!
作者: sensel    时间: 2018-5-1 01:37
cyandragons 发表于 2018-4-30 16:55
楼主可否缩短一下检查间隔时间?我想将间隔时间最小设为30秒,5分钟感觉有点太长了,代码不是很改的来。。 ...

没必要。PPPOE的话只要不断线IP就不会变,你不会30秒断线一次吧?
那个检查间隔最低5分钟是ddns-scripts指定的,因为频繁查询的话有些服务商会认定为恶意。
作者: muzilee    时间: 2018-5-1 08:55
大神厉害

作者: cyandragons    时间: 2018-5-1 15:56
sensel 发表于 2018-5-1 01:37
没必要。PPPOE的话只要不断线IP就不会变,你不会30秒断线一次吧?
那个检查间隔最低5分钟是ddns-scr ...

哦哦,这样啊,谢谢
作者: cyandragons    时间: 2018-5-1 15:59
本帖最后由 cyandragons 于 2018-5-1 16:03 编辑
sensel 发表于 2018-5-1 01:37
没必要。PPPOE的话只要不断线IP就不会变,你不会30秒断线一次吧?
那个检查间隔最低5分钟是ddns-scr ...

主要是怕有时候频繁重启,IP经常换的时候,网站就没法访问。
还有设置想问下,里面有个检查间隔(check interval)和强制间隔(force interval)这两个有什么区别?
强制间隔是指每隔一段时间必须修改一次解析记录,还是只检查解析记录不同再修改?如果设为30分钟,那如果在30分钟之内不换IP是不是也不会修改解析记录?现在我的强制间隔设置的是5分钟,好像阿里云每5分钟就要给我发一次解析记录修改通知,但是有时候又没有,很是迷
谢谢!

作者: sensel    时间: 2018-5-1 23:31
cyandragons 发表于 2018-5-1 15:59
主要是怕有时候频繁重启,IP经常换的时候,网站就没法访问。
还有设置想问下,里面有个检查间隔(check  ...

别忘了域名还有一个TTL值,阿里最低设置好像是10分钟。也就是说即使你改了域名对应的IP,在这个时间内查询到的还是旧IP,再加上客户使用DNS服务器可能的缓存时间,这些都让更小的检查间隔毫无意义。。。

检查间隔:使用nslookup向DNS服务器查询域名对应IP,再跟本地IP作对比,相同则等待指定时间后重新检查,不同则向阿里服务器发送新IP更改请求。
强制间隔:不经过向DNS服务器查询的过程,直接向阿里服务器发出更改请求。
作者: 黑色眼睛    时间: 2018-5-15 20:49
非常感谢楼主的分享,谢谢
作者: lnpx    时间: 2018-5-16 10:31
非常感谢楼主这样无私的奉献!
作者: sinbar    时间: 2018-5-29 08:36

谢谢楼主分享!
作者: tomery    时间: 2018-7-3 19:47
已经使用很久了,感谢楼主
作者: bb2    时间: 2018-7-9 18:24

作者: hzx505    时间: 2018-7-11 03:19
LEDE Reboot 17.01.2 r3435-65eec8bd5f / LuCI lede-17.01 branch (git-17.152.82987-7f6fc16)
opkg install /tmp/ddns-scripts_aliyun_1.0.0-1_all.ipk

成功安装在LEDE 17.0.1上,注册.top 域名即刻使用上了。
感谢分享
作者: hzx505    时间: 2018-7-13 00:32
本帖最后由 hzx505 于 2018-7-13 00:33 编辑

请问楼主,
ddns-scripts_aliyun_1.0.0-1_all.ipk 和 阿里DDNS 有什么区别 ?
两个ipk可以共存吗?
感觉楼主这个脚本嵌入系统,可以在总览看到比较直观,感谢分享

作者: sensel    时间: 2018-7-18 01:01
hzx505 发表于 2018-7-13 00:32
请问楼主,
ddns-scripts_aliyun_1.0.0-1_all.ipk 和 阿里DDNS 有什么区别 ?
两个ipk可以共存吗?

这个依赖官方的ddns-scripts,功能多一点。可以共存,但是没必要。
作者: hzx505    时间: 2018-7-20 13:10
sensel 发表于 2018-7-18 01:01
这个依赖官方的ddns-scripts,功能多一点。可以共存,但是没必要。

是嵌入官方的 又功能多,那就安心用楼主的
作者: stoneh    时间: 2018-7-21 14:19
楼主,请教个问题,lede的这个模块里如果子域名设置为@,那么带www的域名就无法解析了,子域名这里能设置多个值么,用什么格式?
作者: sensel    时间: 2018-7-22 02:34
本帖最后由 sensel 于 2018-7-22 02:36 编辑
stoneh 发表于 2018-7-21 14:19
楼主,请教个问题,lede的这个模块里如果子域名设置为@,那么带www的域名就无法解析了,子域名这里能设置多 ...


示例:
www.xxx.top,则Lookup设为www.xxx.top,Domain设为www.xxx.top或www@xxx.top。
ftp.xxx.top,则Lookup设为ftp.xxx.top,Domain设为ftp.xxx.top或ftp@xxx.top。
即,www和ftp为主机名,xxx.top是域名。主机名和域名之间使用.或者@符号分隔。

但有个特殊情况,域名规则里主机名为@表示解析域名自身,即@.xxx.top指解析xxx.top。那么:
@.xxx.top,则Lookup设为xxx.top,Domain设为@.xxx.top或@xxx.top。


由于ddns-scripts的限制,一个配置项只能修改一个域名项。如果你需要修改多个阿里云子域名,添加指向aliyun.com的多个配置项即可。在ddns-scripts的管理下,每个配置项都是独立的进程,互不影响。
作者: stoneh    时间: 2018-7-22 11:16
sensel 发表于 2018-7-22 02:34
示例:
www.xxx.top,则Lookup设为www.xxx.top,Domain设为www.xxx.top或www@xxx.top。
ftp.xxx.top ...

谢老哥解答,原来如此,lede里还不能一口气设置多个,不过现在通过在阿里种使用cname这种简单的办法达成了目的,非常感谢你的启发!!
作者: leihongping    时间: 2018-7-26 13:51
谢谢大神分享


作者: 葱油饼董事长    时间: 2018-8-1 11:23
感谢楼主分享
作者: liuleisail    时间: 2018-8-2 09:42
本帖最后由 liuleisail 于 2018-8-2 20:15 编辑

之前可以,结果我冲刷系统后怎么也不行了,求救;

  1. 092420       : ************ ************** ************** **************
  2. 092420  note : PID '8116' started at 2018-08-02 09:24
  3. 092420       : ddns version  : 2.7.7-6
  4. 092420       : uci configuration:\nddns.ali.domain='@liXXX.top'
  5. ddns.ali.enabled='1'
  6. ddns.ali.interface='vwan1'
  7. ddns.ali.ip_network='vwan1'
  8. ddns.ali.lookup_host='liuleisail.top'
  9. ddns.ali.password='*password*'
  10. ddns.ali.service_name='aliyun.com'
  11. ddns.ali.username='LTXXXXXXNFl97'
  12. ddns.ali=service
  13. 092420       : verbose mode  : 0 - run normal, NO console output
  14. 092420       : check interval: 600 seconds
  15. 092420       : force interval: 259200 seconds
  16. 092420       : retry interval: 60 seconds
  17. 092420       : retry counter : 0 times
  18. 092420       : No old process
  19. 092420       : last update: never
  20. 092420       : Detect registered/public IP
  21. 092420       : #> /usr/bin/nslookup liuleisail.top  >/var/run/ddns/ali.dat 2>/var/run/ddns/ali.err
  22. 092420       : Registered IP '182.33.163.152' detected
  23. 092420  info : Starting main loop at 2018-08-02 09:24
  24. 092420       : Detect local IP on 'network'
  25. 092420       : Local IP '182.33.163.197' detected on network 'vwan1'
  26. 092420       : Update needed - L: '182.33.163.197' <> R: '182.33.163.152'
  27. 092420       : parsing script '/usr/lib/ddns/update_aliyun_com.sh'
  28. 092420       : #> /usr/bin/wget-ssl -nv -t 1 -O /var/run/ddns/ali.dat -o /var/run/ddns/ali.err --no-proxy 'http://alidns.aliyuncs.com/?Action=DescribeSubDomainRecords&SubDomain=%40.liuleisail.top&Format=JSON&Version=2015-01-09&AccessKeyId=LTAID15sLMuNFl97&SignatureMethod=HMAC-SHA1&Timestamp=2018-08-02T01%3A24%3A20Z&SignatureVersion=1.0&SignatureNonce=29ec0226-286b-4db1-9805-4dfcec98417f&Signature='
  29. 092420 ERROR : GNU Wget Error: '8'
  30. 092420       : http://alidns.aliyuncs.com/?Action=DescribeSubDomainRecords&SubDomain=%40.liXXXXil.top&Format=JSON&Version=2015-01-09&AccessKeyId=LTXXXXXXXl97&SignatureMethod=HMAC-SHA1&Timestamp=2018-08-02T01%3A24%3A20Z&SignatureVersion=1.0&SignatureNonce=29ec0226-286b-4db1-9805-4dfcec98417f&Signature=:
  31. 2018-08-02 09:24:20 ERROR 400: Bad Request.
  32. 092420  WARN : Transfer failed - retry 1/0 in 60 seconds

复制代码


翻看上面的帖子,看到这种情况似乎是因为openssl-util没有安装成功导致,查看结果发现已经安装好了啊。然后看到前面帖子说运行下
  1. echo test | openssl dgst -sha1
复制代码

看看结果,结果如下:
  1. root@OpenWrt:~# echo test | openssl dgst -sha1
  2. Error relocating /usr/bin/openssl: BIO_f_zlib: symbol not found
  3. Error relocating /usr/bin/openssl: COMP_zlib_cleanup: symbol not found
复制代码

请问楼主,这种情况应该如何处理?@sensel
作者: sensel    时间: 2018-8-2 22:34
liuleisail 发表于 2018-8-2 09:42
之前可以,结果我冲刷系统后怎么也不行了,求救;

把 libopenssl 和 openssl-util 更新到同一版本。这种情况一般是固件自带低版本libopenssl,然后又安装了高版本openssl-util导致两者版本不匹配。
作者: leopau    时间: 2018-8-3 08:29
谢谢楼主的分享!!!
作者: liuleisail    时间: 2018-8-3 14:48
本帖最后由 liuleisail 于 2018-8-3 21:43 编辑
sensel 发表于 2018-8-2 22:34
把 libopenssl 和 openssl-util 更新到同一版本。这种情况一般是固件自带低版本libopenssl,然后又安装了 ...

经过检查,libopenssl和openssl-util是一个版本,都是1.0.2o-1版本。然后我删除后重新添加仍旧是我上个帖子中的log……

ps:查找了半天,发现[url=]Dynamic DNS跟55r冲突……唉,无语了。只要打开ddns,55r就会失效,算了,最后用docker解决解析问题……[/url]


作者: renzhend    时间: 2018-8-3 15:59
这个牛叉

作者: zbsmtd    时间: 2018-8-25 21:45
No or private or invalid IP '192.168.50.199' given! Please check your configuration
我的是二级路由,我想更新外网IP,高级设置里面IP地址来源选什么
作者: lbmzly    时间: 2018-9-5 23:35
233213       : #> /usr/bin/wget-ssl -nv -t 1 -O /var/run/ddns/myddns_ipv4.dat -o /var/run/ddns/myddns_ipv4.err --no-proxy 'http://alidns.aliyuncs.com/?Action=DescribeSubDomainRecords&SubDomain=www.xxxx.top&Format=JSON&Version=2015-01-09&AccessKeyId=LTAIfxxxxILTB&SignatureMethod=HMAC-SHA1&Timestamp=2018-09-05T15%3A32%3A13Z&SignatureVersion=1.0&SignatureNonce=b7305da0-e676-4be3-b287-fa12f428118a&Signature='
233215 ERROR : GNU Wget Error: '8'
233215       : http://alidns.aliyuncs.com/?Acti ... 18a&Signature=:
2018-09-05 23:32:15 ERROR 400: Bad Request.
233217  WARN : Transfer failed - retry 5/0 in 60 seconds


一直都是这个错不知道怎么回事,麻烦您帮看一下
作者: sensel    时间: 2018-9-10 00:07
lbmzly 发表于 2018-9-5 23:35
233213       : #> /usr/bin/wget-ssl -nv -t 1 -O /var/run/ddns/myddns_ipv4.dat -o /var/run/ddns/mydd ...

你这种提示也是因为openssl未能计算出正确的签名。解决方法参考92楼,但如果是94楼这种情况,,,我也没办法。
作者: sensel    时间: 2018-9-10 00:09
zbsmtd 发表于 2018-8-25 21:45
No or private or invalid IP '192.168.50.199' given! Please check your configuration
我的是二级路由 ...

二级用URL,然后找出一个可用的获取外网IP网址。详细请参考openwrt网站的ddns说明部分。
作者: satku    时间: 2018-9-15 18:08





欢迎光临 恩山无线论坛 (https://www.right.com.cn/forum/) Powered by Discuz! X3.5