找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 13054|回复: 41

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

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

如今移动、电信、联通的家庭宽带都支持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示范脚本。我根据梅林固件稍微修改了一下,使其可以在梅林系统上跑起来。我是新手似乎没有上传附件的权限,把脚本贴出来大家自己拷贝吧。脚本内容如下:
  1. #!/bin/sh -e
  2. hostname=$1
  3. device=$2
  4. file=/jffs/scripts/.dynv6.addr6
  5. [ -e $file ] && old=`cat $file`

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

  10. if [ -z "$netmask" ]; then
  11.   netmask=128
  12. fi

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

  17. if [ -e /usr/sbin/curl ]; then
  18.   bin="curl -fsS"
  19. elif [ -e /usr/sbin/wget ]; then
  20.   bin="wget -O-"
  21. else
  22.   echo "neither curl nor wget found"
  23.   exit 1
  24. fi

  25. if [ -z "$address" ]; then
  26.   echo "no IPv6 address found"
  27.   exit 1
  28. fi

  29. # address with netmask
  30. current=$address/$netmask

  31. if [ "$old" = "$current" ]; then
  32.   echo "IPv6 address unchanged"
  33.   exit
  34. fi

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

  37. # save current address
  38. echo $current > $file
复制代码

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

说明一下,这个脚本执行时必须带上参数。带参数执行命令示例如下:
  1. 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(名字必须是这个,这个脚本会每次重启路由器时自动执行。如果没有就自己创建一个,注意要给予其执行权限)脚本文件中增加一行:

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

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

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


我的恩山、我的无线 The best wifi forum is right here.
发表于 2021-4-27 14:45 | 显示全部楼层
这个是单栈还是双栈呢?
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2021-4-27 14:46 | 显示全部楼层
感谢分享         
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 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"
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2021-5-6 20:33 | 显示全部楼层
正好需要,谢谢分享
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2021-5-6 22:33 | 显示全部楼层
好像有点意思,有空试试看
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 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使用什么命令啊
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 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"
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2021-5-11 18:59 | 显示全部楼层
pany4321 发表于 2021-5-9 22:33
还是这个命令,不过脚本文件要补充一行更新ipv4地址的命令。如下:

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

我加上了还是不行提示未找到IPV6地址
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2021-5-18 19:08 | 显示全部楼层
i1003 发表于 2021-5-11 18:59
我加上了还是不行提示未找到IPV6地址

你是因为没有IPV6网络,那就没有必要更新IPV6地址了,把这一句删掉就好。
$bin "http://dynv6.com/api/update?hostname=$hostname&ipv6=$current&token=$token"
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2021-5-18 21:21 | 显示全部楼层
腾讯买了个域名 请问怎么做  不知道接口是啥dnspod 求指导一下 tiken已经获取了
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2021-5-18 21:22 | 显示全部楼层
我从梅林刷到 openwrt 就是搞这个功能 但是搞了一星期了都没成功 原来梅林就支持  请问大佬你用的是哪个梅林版本 我也刷下
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2021-5-18 21:24 | 显示全部楼层
pal865 发表于 2021-5-18 21:22
我从梅林刷到 openwrt 就是搞这个功能 但是搞了一星期了都没成功 原来梅林就支持  请问大佬你用的是哪个梅 ...

远程 ipv6访问路由器, 然后远程开机电脑 然后ipv6 远程桌面  美滋滋 省了三方软件会员费 而且速度极快
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2021-5-19 22:27 | 显示全部楼层
分析你脚本然后准备搞腾讯的,但是发现获取到地址后 根本不能外网访问,内网域名可以打开k3管理页面  外网就不行了  求助下
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2021-5-20 16:51 | 显示全部楼层
pal865 发表于 2021-5-18 21:21
腾讯买了个域名 请问怎么做  不知道接口是啥dnspod 求指导一下 tiken已经获取了

我刷的是G大最新的386 2.2版梅林固件。不过我认为无论哪个版本都是可以支持的。

点评

救救孩子吧  详情 回复 发表于 2021-8-13 09:40
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-23 14:09

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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

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