恩山无线论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 436|回复: 8

[k3] 梅林固件使用自定义脚本实现IPV6动态域名(dynv6.com域名)

[复制链接]
发表于 2021-4-27 14:26 | 显示全部楼层 |阅读模式
本帖最后由 pany4321 于 2021-4-27 15:04 编辑

如今移动、电信、联通的家庭宽带都支持IPV6了,我家里装了移动和电信两条宽带,经测试IPV6都正常。我用了一个华为AX路由器,一个斐讯K3路由器(刷了G大最新的386 2.2版梅林固件),分别连接两条宽带。光猫都改成了桥接模式,通过路由器拨号上网。路由器和家里的NAS、电脑等都可以获得IPV6公网地址。可以在外通过IPV6访问NAS设备,测试了个把月都非常稳定。

虽然IPV6解决了互联网访问难题,但是目前并不是所有地方都能够IPV6上网,因此还有一定的使用条件限制,这个也没有办法,只能坐等IPV6全面普及。

运营商提供的家庭宽带IPV6的缺点,那就是IPV6公网地址也是动态分配的,我发现我的路由器基本上每天晚上都会更换成新的IPV6地址。因此今天给大家分享一种K3路由器的IPV6动态域名解决方案。该方案最大的特点是简单、稳定且完全零成本。

本方案采用dynv6动态域名(国外最知名的免费动态域名提供商之一,网站上宣称永久免费),使用自定义脚本实现域名的动态更新,每当IPv6地址有变化时,会自动进行更新。步骤如下:

1、到dynv6.com网站申请自己的域名,申请过程极其简单:
  1)先注册账号。
  2)在“My Zones”页面直接申请自己的二级域名(默认有dynv6.net、v6.army等可选)。
  3)在自己的账号“keys”页面创建自己的HTTP Tokens。创建Token是随机生成的,类似“ys9zapwuHeXry64-mU3zDKfSmy8ZFC”一串字符。
这个申请过程非常简单,因此没有详细展开,大家到网站上看看很快就能申请好。

以下步骤中假设你申请的域名是:your-name.dynv6.net,HTTP Token为“ys9zapwuHeXry64-mU3zDKfSmy8ZFC”。真正使用时需要根据自己的具体情况替换掉。

2、创建域名自动更新脚本dynv6.sh

这个脚本是dynv6网站上推荐的,是一个非常简洁的Linux示范脚本。我根据梅林固件稍微修改了一下,使其可以在梅林系统上跑起来。我是新手似乎没有上传附件的权限,把脚本贴出来大家自己拷贝吧。脚本内容如下:
#--------------------------------------
#!/bin/sh -e
hostname=$1
device=$2
file=/jffs/scripts/.dynv6.addr6
[ -e $file ] && old=`cat $file`

if [ -z "$hostname" -o -z "$token" ]; then
  echo "Usage: token=<your-authentication-token> [netmask=64] $0 your-name.dynv6.net [device]"
  exit 1
fi

if [ -z "$netmask" ]; then
  netmask=128
fi

if [ -n "$device" ]; then
  device="dev $device"
fi
address=$(ip -6 addr list scope global $device | grep -v " fd" | sed -n 's/.*inet6 \([0-9a-f:]\+\).*/\1/p' | head -n 1)

if [ -e /usr/sbin/curl ]; then
  bin="curl -fsS"
elif [ -e /usr/sbin/wget ]; then
  bin="wget -O-"
else
  echo "neither curl nor wget found"
  exit 1
fi

if [ -z "$address" ]; then
  echo "no IPv6 address found"
  exit 1
fi

# address with netmask
current=$address/$netmask

if [ "$old" = "$current" ]; then
  echo "IPv6 address unchanged"
  exit
fi

# send addresses to dynv6
$bin "http://dynv6.com/api/update?hostname=$hostname&ipv6=$current&token=$token"

# save current address
echo $current > $file
#--------------------------------------

将dynv6.sh脚本放到/jffs/scripts/目录下,并给予执行权限。

说明一下,这个脚本执行时必须带上参数。带参数执行命令示例如下:
token=ys9zapwuHeXry64-mU3zDKfSmy8ZFC netmask=64 /jffs/scripts/dynv6.sh your-router.dynv6.net ppp0
这条命令执行时,先设置环境变量token为你的HTTP Token值,设定IPV6地址前缀位数为64,再执行命令,命令后面跟的参数是你申请到的域名以及WAN口的接口名称ppp0。
脚本执行时会自动获取当前WAN口的IPV6地址,并保存到一个临时文件中,如果当前地址跟保存地址不一致,就自动更新域名,地址更新成功后会将新的IPV6地址保存到临时文件中以便下一次检查比对。

3、创建计划任务监测IPV6地址变更情况,有变化时自动更新

在K3路由器的/jffs/scripts/services-start.sh(名字必须是这个,这个脚本会每次重启路由器时自动执行。如果没有就自己创建一个,注意要给予其执行权限)脚本文件中增加一行:

cru a ddns "10 * * * * token=ys9zapwuHeXry64-mU3zDKfSmy8ZFC netmask=64 /jffs/scripts/dynv6.sh your-router.dynv6.net ppp0"

这一条命令的意思是创建一个计划任务,每10分钟执行一次。每次执行时会检查当前IPV6地址是否有变化,有变化就自动更新域名IPV6地址。

上述三步执行完毕,就能实现dynv6动态域名了,远程管理路由器或者访问家里的其他设备,就方便多了。

发表于 2021-4-27 14:45 | 显示全部楼层
这个是单栈还是双栈呢?
发表于 2021-4-27 14:46 | 显示全部楼层
感谢分享         
 楼主| 发表于 2021-4-27 15:04 | 显示全部楼层
45430770 发表于 2021-4-27 14:45
这个是单栈还是双栈呢?

你说的单栈、双栈是啥意思,是说IPV4+IPV6吗?肯定是两者都支持的。如果也要更新IPV4地址,脚本中需要加一句:
$bin "http://ipv4.dynv6.com/api/update?hostname=$hostname&ipv4=auto&token=$token"
发表于 2021-5-6 20:33 | 显示全部楼层
正好需要,谢谢分享
发表于 2021-5-6 22:33 | 显示全部楼层
好像有点意思,有空试试看
来自苹果客户端来自苹果客户端
发表于 2021-5-9 20:32 | 显示全部楼层
本帖最后由 i1003 于 2021-5-9 20:34 编辑

token=ys9zapwuHeXry64-mU3zDKfSmy8ZFC netmask=64 /jffs/scripts/dynv6.sh your-router.dynv6.net ppp0这条命令是更新IPV6的 我要更新IPV4使用什么命令啊
 楼主| 发表于 2021-5-9 22:33 | 显示全部楼层
i1003 发表于 2021-5-9 20:32
token=ys9zapwuHeXry64-mU3zDKfSmy8ZFC netmask=64 /jffs/scripts/dynv6.sh your-router.dynv6.net ppp0这 ...

还是这个命令,不过脚本文件要补充一行更新ipv4地址的命令。如下:

$bin "http://ipv4.dynv6.com/api/update?hostname=$hostname&ipv4=auto&token=$token"
来自安卓客户端来自安卓客户端
发表于 2021-5-11 18:59 | 显示全部楼层
pany4321 发表于 2021-5-9 22:33
还是这个命令,不过脚本文件要补充一行更新ipv4地址的命令。如下:

$bin "http://ipv4.dynv6.com/api/upd ...

我加上了还是不行提示未找到IPV6地址
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )|网站地图

GMT+8, 2021-5-13 22:57

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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