KoolShare

 找回密码
 立即注册
搜索
查看: 1944|回复: 13

[教程] 解决AC68U重启后华硕自带DDNS不自动启用

[复制链接]

17

主题

164

帖子

450

积分

中级魔法师

Rank: 3Rank: 3

精华
0
门户文章
0
魔力币
382
魔法值
0
注册时间
2014-9-19
发表于 2019-1-12 23:00:52 | 显示全部楼层 |阅读模式
本帖最后由 xuewy 于 2019-1-12 23:13 编辑

本人AC68U,偷懒用的是华硕自带的DDNS,不记得是刷了哪个梅林固件版本后(好像是7.8),路由器重启后DDNS不会自动启用,必须web登陆,手工开启。这样非常麻烦,有时候路由器重启后忘了手工启动,在外面Aria2,putty, Winscp工具都无法连回使用。搜了下论坛没有好的解决办法。昨天终于找到终极解决打法,特此分享给大家。
首先看下面的图
DDNS1.PNG

这是手工启动DDNS的系统日志,其中用到的命令ez-ipupdate,谷歌了一下,实际上就是用的这个命令来启动DDNS的,只是不知道这个命令的详细用法,网上不断搜索和反复测试下,终于让我找到了该命令的正确使用方法:
ez-ipupdate -S dyndns -i eth0 -a x.x.x.x -h my-name.asuscomm.com -A 2 -s nwsrv-ns1.asus.com

其中X.X.X.X 换成你自己的路由器的公网地址, my-name.ausucomm.com 换成你自己的华硕DDNS的名称。

用putty登录上你的路由器,执行一下这个命令,奇迹出现了
DDNS2.PNG
你会发现DDNS update successfully. 这时你到系统日志会看到记录跟手工web页面启动是一模一样的。

好了,这还不算完,要是我路由器重启或者我的WAN突然断了,很有可能公网地址就变了,怎么办呢? 别急,我又找到一个脚本
#!/bin/sh
MY_DDNS_HOSTNAME="****.asuscomm.com"

MYIP_FILE=/tmp/myip
SCRIPT_NAME=$(basename $0)
SCRIPT_PID=`/bin/pidof $SCRIPT_NAME`
SYSLOG_TAG="$SCRIPT_NAME[$SCRIPT_PID]"
PUBLIC_IP=`/usr/sbin/wget -O - --no-check-certificate --quiet https://checkip.amazonaws.com/`
DDNS_IP=`/usr/bin/nslookup $MY_DDNS_HOSTNAME ns1.asuscomm.com | tail -n1 | sed -e 's/Address 1: //'`
UPDATE_DDNS="/usr/sbin/ez-ipupdate -S dyndns -i eth0 -a $PUBLIC_IP -h $MY_DDNS_HOSTNAME -A 2 -s nwsrv-ns1.asus.com"
echo "PUBLIC_IP : '$PUBLIC_IP'"
echo "DDNS_IP  : '$DDNS_IP'"

if [ ! -f "$MYIP_FILE" ];
then
  echo "File not found: $MYIP_FILE"
  echo $PUBLIC_IP > $MYIP_FILE
  MYIP=$PUBLIC_IP
else
  MYIP=`cat $MYIP_FILE`
  echo "$MYIP_FILE : $MYIP"
fi
echo "MYIP : '$MYIP'"

if [ "$MYIP" == "$PUBLIC_IP" ] && [ "$PUBLIC_IP" == "$DDNS_IP" ];
then
  logmsg="Public IP $MYIP did not change"
  /usr/bin/logger -t $SYSLOG_TAG "$logmsg"
  exit 0
else
  logmsg="Public IP changed"
  /usr/bin/logger -t $SYSLOG_TAG "$logmsg"

  logmsg="Updating $MY_DDNS_HOSTNAME to new IP: $MYIP"
  /usr/bin/logger -t $SYSLOG_TAG "$logmsg"

  $UPDATE_DDNS
  exit 1
fi


这里你只要把你自己的华硕DDNS名称填上,脚本会自动到AWS检测你的public IP,然后执行 ez-ipupdate 的命令。
好了剩下的就只要添加这个脚本,让它在路由器重启或WAN断开的时候执行,然后再结合Cron定时命令,你想怎么玩就怎么玩了。

1. 用winscp工具把这个脚本复制到/jffs/scripts/目录下,赋予755权限
2. 在/jffs/scripts/目录下创建一个cru.sh的脚本,赋予755权限,内容如下
#!/bin/sh
cru a ddns "0 */1 * * * /bin/sh /jffs/scripts/update-ddns-asuswrt.sh"


然后按下图在路由器管理界面Tools-Script里将cru.sh添加到开机启动,不然每次重启设备后,计划任务表都会被清空
ddns3.PNG
这样重启机器,或者断开WAN后重连后,此脚本就会运行了,每1小时检查你的路由器的公网IP和update DDNS.
脚本下载后把pdf后缀去掉即可。









update-ddns-asuswrt.sh.pdf

1.08 KB, 下载次数: 56

15

主题

3017

帖子

1344

积分

大魔法师

Rank: 5Rank: 5

精华
0
门户文章
0
魔力币
738
魔法值
0
注册时间
2018-7-15
发表于 2019-1-13 08:08:57 | 显示全部楼层
很好,顶一哈

10

主题

212

帖子

980

积分

高级魔法师

Rank: 4

精华
0
门户文章
0
魔力币
875
魔法值
0
注册时间
2016-12-2
发表于 2019-1-13 20:11:34 来自手机 | 显示全部楼层
帮顶,收藏备用。

0

主题

19

帖子

287

积分

中级魔法师

Rank: 3Rank: 3

精华
0
门户文章
0
魔力币
284
魔法值
0
注册时间
2017-1-31
发表于 2019-1-13 21:02:16 | 显示全部楼层
不错不错,留着备用

1

主题

23

帖子

306

积分

中级魔法师

Rank: 3Rank: 3

精华
0
门户文章
0
魔力币
300
魔法值
0
注册时间
2016-11-4
发表于 2019-1-13 22:58:17 | 显示全部楼层
7.9版重启后还是不行

17

主题

164

帖子

450

积分

中级魔法师

Rank: 3Rank: 3

精华
0
门户文章
0
魔力币
382
魔法值
0
注册时间
2014-9-19
 楼主| 发表于 2019-1-13 23:21:44 | 显示全部楼层
bozihao 发表于 2019-1-13 22:58
7.9版重启后还是不行

web页面上是没启用,但实际上已经通过命令启用了,你可以自己测测看

2

主题

29

帖子

63

积分

初级魔法师

Rank: 2

精华
0
门户文章
0
魔力币
57
魔法值
0
注册时间
2019-2-27
发表于 2019-3-4 11:30:49 | 显示全部楼层
非常感谢,希望好用,

10

主题

96

帖子

123

积分

初级魔法师

Rank: 2

精华
0
门户文章
0
魔力币
98
魔法值
0
注册时间
2018-1-10
发表于 2019-3-4 18:47:42 | 显示全部楼层
V大384.6版一直没问题。即使重启也能自动配置asus DDNS。

0

主题

27

帖子

142

积分

初级魔法师

Rank: 2

精华
0
门户文章
0
魔力币
138
魔法值
0
注册时间
2018-3-10
发表于 2019-3-21 12:32:09 | 显示全部楼层
為何執行 ez-ipupdate 的命令檢測的public IP與 單獨執行checkip.amazonaws.com的public IP不一樣? ez-ipupdate 檢測的public IP都是舊的.每小時檢測一次都沒變?

23

主题

735

帖子

816

积分

高级魔法师

Rank: 4

精华
0
门户文章
0
魔力币
587
魔法值
0
注册时间
2016-4-27
发表于 2019-3-21 13:50:42 | 显示全部楼层
asuswrt-merlin从384.7开始以后的版本不再用ez-ipupdate,改用inadyn,所以嘛,脚本
有局限性。最好:
if [ -n `which ez-ipupdate` ];then
        运行脚本。。。。
else
        echo '固件不支持本脚本'
fi


0

主题

27

帖子

142

积分

初级魔法师

Rank: 2

精华
0
门户文章
0
魔力币
138
魔法值
0
注册时间
2018-3-10
发表于 2019-3-22 09:40:07 | 显示全部楼层
zwmscorm 发表于 2019-3-21 13:50
asuswrt-merlin从384.7开始以后的版本不再用ez-ipupdate,改用inadyn,所以嘛,脚本
有局限性。最好:
if [ ...

我使用的是380.7.0_X7.9 應該沒問題吧? 只是執行時會顯示 Public IP =111.250.203.150 及DDNS IP=111.250.203.152 (一線雙撥).DDNS IP不會轉ˋˋ成 Public IP. 只有在 Web 手動執行ez-ipupdate -S dyndns -i eth0 -a 111.250.203.150 -h XXXX.asuscomm.com -A 2 -s nwsrv-ns1.asus.com 才會改變. 請問需要如何更改腳本?能讓 DDNS IP=Public IP.

2

主题

24

帖子

74

积分

初级魔法师

Rank: 2

精华
0
门户文章
0
魔力币
69
魔法值
0
注册时间
2016-11-7
发表于 2019-3-22 10:09:15 | 显示全部楼层
战略性mark,多谢楼主!

0

主题

7

帖子

10

积分

魔法学徒

Rank: 1

精华
0
门户文章
0
魔力币
9
魔法值
0
注册时间
2019-4-27
发表于 2019-4-27 23:06:37 | 显示全部楼层
dbslsy 发表于 2019-3-4 18:47
V大384.6版一直没问题。即使重启也能自动配置asus DDNS。

这个在哪下载,我没找到哟

0

主题

3

帖子

10

积分

魔法学徒

Rank: 1

精华
0
门户文章
0
魔力币
10
魔法值
0
注册时间
2018-6-29
发表于 2019-5-4 21:35:29 | 显示全部楼层
我也是没找到哎!~

联系我们|手机版|KoolShare ( 沪ICP备13045430号962110 沪公网备31010402005377

GMT+8, 2019-6-17 11:35 , Processed in 0.103899 second(s), 8 queries , Gzip On, Redis On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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