找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 199046|回复: 352

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

 火... [复制链接]
发表于 2018-1-3 21:48 | 显示全部楼层 |阅读模式
本帖最后由 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状态一栏。


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


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


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


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


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


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


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


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

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

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

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

源码:
安装包:

预告:对号称最便宜的国外域名商 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
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

点评

最新版已经好用了,就是概览“网络 配置错误” 不过不影响使用  发表于 2018-3-26 15:48

评分

参与人数 22恩山币 +23 收起 理由
781354052 + 1 感谢你的分享,无论怎样,你都是最无私的人.
Rubbed6578 + 1 牛逼,解决问题了!
pleasenter + 1 强大的恩山!(以下重复1万次)
lyhfree + 1 感谢分享,按你域名设置方法,lean库里的阿里DDNS也可以用了!万分感谢!
uu236 + 1 感谢你的分享,无论怎样,你都是最无私的人!来,说说,你E盘上还有啥一起给我吧!
xinup + 1 感谢你的分享,无论怎样,你都是最无私的人!来,说说,你E盘上还有啥一起给我吧!
chsalan + 1 感谢!注意:DDNS2.8.2版本已不适用,其服务商的配置文件已调整,需手动适配
hhh110 + 1 求问有dnspod的嘛
漫步时光 + 1 感谢你的分享,无论怎样,你都是最无私的人!来,说说,你E盘上还有啥一起给我吧!
YonChun + 1 风清云淡、飘逸悠然……极爽!
gkwxd + 1 出现wget 错误代码:'8';ERROR 400: Bad Request这个
cw224 + 1 送你一块“恩山”牌肥皂,喏,就在你脚下、捡一下吧……
ScKam + 1 厉害厉害!
xuanyuan1230 + 2 强大的恩山!(以下重复1万次)
funison + 1 强大的恩山!(以下重复1万次)
老郎 + 1 强大的恩山!(以下重复1万次),1块钱买了个域名,马上搞起,爽!
amjake + 1 我来恩山就是为了撩你!
小飞姬 + 1 我对你的敬仰犹如江水滔滔,我上朝鲜战场后一定写信给你!!!
xspoco + 1 我来恩山就是为了撩你!
cboy88 + 1 很好,支持!
hello_limin + 1 亲,你这么厉害,我想做你的经纪人!
hwlon + 1 强大的恩山!(以下重复1万次)

查看全部评分

我的恩山、我的无线 The best wifi forum is right here.
发表于 2018-1-3 21:57 | 显示全部楼层
支持下,虽然我用不到
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2018-1-3 22:39 | 显示全部楼层
大神,支持。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2018-1-4 17:39 | 显示全部楼层
本帖最后由 hwlon 于 2018-1-4 22:12 编辑

再顶一下,不过没测试。如果测试好用,再过来顶你。  经测试不好用啊,再完善完善吧!我还是用我修改的吧!!

点评

最新版已经好用了,谢谢!!  详情 回复 发表于 2018-3-26 15:45
哪里不好用可以说一下吗?  详情 回复 发表于 2018-1-5 00:37
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2018-1-5 00:26 | 显示全部楼层
给力啊~~~~~~~~~~~
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2018-1-5 00:37 | 显示全部楼层
hwlon 发表于 2018-1-4 17:39
再顶一下,不过没测试。如果测试好用,再过来顶你。  经测试不好用啊,再完善完善吧!我还是用我修改的吧! ...

哪里不好用可以说一下吗?

点评

我测试了 日志 一片错误 ,我也忘记截图了,A记录 @域名支持不好!!!,再多多测试完善吧,相信你会成功的!!  详情 回复 发表于 2018-1-5 14:30
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2018-1-5 12:58 | 显示全部楼层
这个源码包应该放在什么地方里边只有一个脚本文件,我应该放在DDNS里么做下替换么?

我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2018-1-5 13:58 | 显示全部楼层
亲,你这么厉害,我想做你的经纪人!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2018-1-5 14:30 | 显示全部楼层
sensel 发表于 2018-1-5 00:37
哪里不好用可以说一下吗?

我测试了 日志 一片错误 ,我也忘记截图了,A记录  @域名支持不好!!!,再多多测试完善吧,相信你会成功的!!

点评

最新版已经好用了  详情 回复 发表于 2018-3-26 15:45
绿字说明,主机和域名之间使用@或.符号分隔。@记录比较特殊,假设你的域名为 aaa.com,lookup 那里应该直接填域名 aaa.com,下面的 domain 域那里要填 @aaa.com 或者 @.aaa.com 都可以。这是由于需要兼容一般人 www.  详情 回复 发表于 2018-1-5 17:03
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2018-1-5 14:40 | 显示全部楼层
支持大神,回头也买个阿里云域名去
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 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。。。不出错才有鬼了


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2018-1-5 19:53 | 显示全部楼层
   谢谢谢谢正在找呢。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2018-1-5 19:57 | 显示全部楼层
谢谢楼主分享!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2018-1-6 01:52 | 显示全部楼层
我用的固件自带了阿里云ddns,就是lean的那种,然后我直接在putty里安装的你的ipk,安装成功了,但是现在我没法进入动态ddns那个页面,点击一直是正在加载,一直landing。。。 是不是冲突了??

点评

现在可以用了 但是报错 024402 : ************ ************** ************** ************** 024402 note : PID '15367' started at 2018-01-07 02:44 024402 : ddns version : 2.7.6-13 0  详情 回复 发表于 2018-1-7 02:02
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2018-1-6 02:17 来自手机 | 显示全部楼层
真心感谢楼主,感谢开源
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-3-29 09:48

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表