找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 209205|回复: 353

[分享]适用于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状态一栏。


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

评分

参与人数 23恩山币 +24 收起 理由
czc*** + 1 一看就是觉得高端、大气、上档次!.
7813*** + 1 感谢你的分享,无论怎样,你都是最无私的人.
Rubbe*** + 1 牛逼,解决问题了!
pleas*** + 1 强大的恩山!(以下重复1万次)
lyh*** + 1 感谢分享,按你域名设置方法,lean库里的阿里DDNS也可以用了!万分感谢!
uu*** + 1 感谢你的分享,无论怎样,你都是最无私的人!来,说说,你E盘上还有啥一起给我吧!
xi*** + 1 感谢你的分享,无论怎样,你都是最无私的人!来,说说,你E盘上还有啥一起给我吧!
chs*** + 1 感谢!注意:DDNS2.8.2版本已不适用,其服务商的配置文件已调整,需手动适配
hhh*** + 1 求问有dnspod的嘛
漫步*** + 1 感谢你的分享,无论怎样,你都是最无私的人!来,说说,你E盘上还有啥一起给我吧!
Yon*** + 1 风清云淡、飘逸悠然……极爽!
gk*** + 1 出现wget 错误代码:'8';ERROR 400: Bad Request这个
cw*** + 1 送你一块“恩山”牌肥皂,喏,就在你脚下、捡一下吧……
Sc*** + 1 厉害厉害!
xuanyu*** + 2 强大的恩山!(以下重复1万次)
fun*** + 1 强大的恩山!(以下重复1万次)
老*** + 1 强大的恩山!(以下重复1万次),1块钱买了个域名,马上搞起,爽!
amj*** + 1 我来恩山就是为了撩你!
小*** + 1 我对你的敬仰犹如江水滔滔,我上朝鲜战场后一定写信给你!!!
xsp*** + 1 我来恩山就是为了撩你!
cbo*** + 1 很好,支持!
hello*** + 1 亲,你这么厉害,我想做你的经纪人!
hw*** + 1 强大的恩山!(以下重复1万次)

查看全部评分

我的恩山、我的无线 The best wifi forum is right here.
支持下,虽然我用不到
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

大神,支持。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

本帖最后由 hwlon 于 2018-1-4 22:12 编辑

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

点评

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

使用道具 举报

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

使用道具 举报

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

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

点评

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

使用道具 举报

这个源码包应该放在什么地方里边只有一个脚本文件,我应该放在DDNS里么做下替换么?

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

使用道具 举报

亲,你这么厉害,我想做你的经纪人!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

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.
回复

使用道具 举报

支持大神,回头也买个阿里云域名去
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
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.
回复

使用道具 举报

   谢谢谢谢正在找呢。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

谢谢楼主分享!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

我用的固件自带了阿里云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.
回复

使用道具 举报

来自手机 | 显示全部楼层
真心感谢楼主,感谢开源
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 01:50

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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

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