找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 18245|回复: 39

IPv6 DDNS 自动更新脚本(Dynv6) 路由器为其他设备更新DDNS

  [复制链接]
发表于 2020-7-6 09:56 | 显示全部楼层 |阅读模式
本帖最后由 YiSary 于 2021-9-15 21:34 编辑

首次发帖,请各位多多指教由于经常外出办公, 微软RDP的使用频率较高. 微软RDP的优点很明显: 占用带宽低, 稳定性强, 兼容性强.
但是对我来讲, 也有一个很明显的缺点: 官方不提供服务器以实现远程访问.  之前是使用 内网穿透实现的远程访问,但是带宽和流量限制了使用体验(我用的免费版花生壳,和哲西云 分别是 1Mbps, 1GB ;4Mbps, 1GB)
家里移动宽带已经部署了IPv6, 分配了60位前缀, 手上有大把的IPv6资源; 然后客户端设备一般是手机, 手机(非物联网卡)都已经部署了IPv6, 那么我可以通过IPv6实现公网访问.
思路如下
家庭网络 为 中国移动光猫桥接至PandoraBox路由器, 该路由器拨号, 另一台路由器OpenWrt 作为AP和五口交换机, 接有我工作学习用的电脑, 和一台装有ESXI的主机(双网卡,三网口)
准备在ESXI主机中部署NAS和Windows以及Ubuntu. 其中这些设备都得上公网. IPv6前缀60位, 公网IPv6地址多了非常多. 但是路由器每次拨号都会变化IPv6和内网IPv4地址. 因此需要DDNS实现任意时刻公网访问内网
DDNS的思想是该设备将本机设备发送至DDNS的服务商, 路由器可以轻松实现该功能, 但是目前还没有找到比较方便的方法实现Windows等其他设备自动更新IPv6地址
(注, 由于IPv4资源匮乏 , 使用了NAT, 即使家宽拨到了IPv4的公网, 也是32位子网掩码, 也就是一个公网IP地址, 大部分人的情况是路由器开启 多对一的NAT Server , 也就是端口映射,但是IPv6就不一样了,IP地址多到一台设备可以有多个Ipv6, RA和DHCPv6获取到的都是公网,其中RA是设备用随机的或者自己的MAC地址加上IPv6前缀合成一个IP地址, DHCPv6的原理和DHCP类似, 用前缀+随机/顺序数合成一个; 例如 2409:1234::1,  2409:1234::2,  2409:1234::3. DHCPv
6服务器可以是OpenWrt路由器或者PandoraBox路由器, 那么我们可以通过更改路由器的DHCP实现固定设备后缀) 设置如图1 所示  (为保护个人信息安全,MAC地址和IPv6前缀已抹去).




图1 PandorBox路由器web网管界面



IPv6地址的后缀固定住了, 既然路由器可以7*24H运行,而且路由器知道各种设备的地址, 为什么不用路由器更新其他设备的地址呢
这就是我的思路
那么现在应该想办法实现, 路由器更新其他设备IPv6地址的脚本
以Dynv6为例 (Dynv6是一个免费二级域名DDNS提供商)
Linux设备更新自身IPv6的脚本已经有了(特别鸣谢 KoolShare论坛 lupos208 用户 的脚本和思路  原帖https://koolshare.cn/thread-158240-1-1.html )
我没有Linux 基础, 百度找了实现一点点功能的命令, 结合上述脚本的内容, 在该脚本加了几句, 以实现我的思路
  1. #!/bin/sh -e
  2. hostname=xxxx.dynv6.net
  3. token=xxxxxxxxxxxxxxxxxx
  4. device=br-lan
  5. file=$HOME/.dynv6.addr6

  6. [ -e $file ] && old=`cat $file`

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

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

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

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

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

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

  32. if [ "$old" = "$current" ]; then
  33.           echo -e "IPv6 address unchanged\n"
  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
  39. echo `date` $current >> ./ddns-runtime.txt

  40. prefix=${current%%::*}

  41. dev1="20"
  42. dev2="8"

  43. address1=$prefix"::"$dev1"/128"
  44. address2=$prefix"::"$dev2"/128"

  45. #hostname

  46. hostname1="xxxxx1.dynv6.net"
  47. hostname2="xxxxx2.dynv6.net"

  48. #send to dynv6.com
  49. $bin "http://dynv6.com/api/update?hostname=$hostname1&ipv6=$address1&token=$token"
  50. $bin "http://dynv6.com/api/update?hostname=$hostname2&ipv6=$address2&token=$token"

  51. #output hostname and address
  52. echo "hostname1="$hostname1  "address1="$address1 >> ./ddns-runtime.txt
  53. echo "hostname2="$hostname2  "address2="$address2 >> ./ddns-runtime.txt
  54. echo -e "\ncomplete\n"
复制代码

其中,hostname是在Dynv6注册的域名, token就是token ,然后前边的都是照抄的, 后面的才是更新其他设备的命令, 我使用了两台设备举例,分别是后缀20的Windows电脑和后缀为8的ESXI服务器, device为接口.
使用该脚本需要如下参数: [1.路由器域名  2.Token 3.接口名(PandoraBox为Br-lan, 具体的ifconfig看看就知道了,找有公网IPv6的接口) 4.设备1的域名 设备1后缀 5.设备2的域名 设备2后缀 ] 可以根据需要复制粘贴改序号实现更多设备更新IPv6
运行效果如下
路由器SSH如图2 所示

图2 路由器运行该脚本结果图












运行时间和更新的IPv6地址记录如图3 所示


图3 路由器运行该脚本后输出的运行时间和IP地址图



Dynv6控制台如图4 所示






图4 Dynv6控制台如图所示







手机4G网络公网访问RDP界面如图5 所示


图5  RDP





班门弄斧,如有不完善的地方,请多多指教

感谢您的支持与阅读


现在我不打算用一台设备更新所有设备的IPv6 DDNS地址了,放一下Windows 的脚本
for /f %%i in ('curl "http://ip.zxinc.org/getip" ') do curl "http://dynv6.com/api/update?hostname=这里填你的域名&ipv6=%%i/128&token=这里填你的token"






本帖子中包含更多资源

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

×
我的恩山、我的无线 The best wifi forum is right here.
发表于 2020-7-6 10:19 | 显示全部楼层
谢谢分享。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2020-7-6 10:52 | 显示全部楼层
我用的阿里云接管域名解析,然后去github上搜的ddns那个星最多的非常好用,路由器用动态dns里面直接支持阿里云
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2020-7-6 11:29 | 显示全部楼层
用的域名解析是阿里,目前我群晖上是靠脚本,但win10之类的不好搞,远程桌面都是靠ipv4+端口转发。在openwrt中的ddns中还不能直接获取到DHCPv6的地址,可通过脚本,lan接口地址可以直接获取。大部分ipv6地址更新只会更新前面的前缀,后缀不会变,支持起来还是简单,希望后续可以直接支持。

点评

要是有公网IPv4玩玩IPv4也不错,部署起来容易很多  详情 回复 发表于 2020-7-6 20:17
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2020-7-6 13:22 | 显示全部楼层
你们的IPv6的端口已经开放了?

点评

检查路由器或者光猫的防火墙,我这边1~65535都开着呢  详情 回复 发表于 2020-7-6 20:18
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2020-7-6 14:40 来自手机 | 显示全部楼层
我集成的固件里面带有阿里ddns,默认支持ipv6

点评

我的这个贴子主要是路由器帮其他设备更新IPv6地址  详情 回复 发表于 2020-7-6 20:18
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2020-7-6 20:17 | 显示全部楼层
jianggeek 发表于 2020-7-6 11:29
用的域名解析是阿里,目前我群晖上是靠脚本,但win10之类的不好搞,远程桌面都是靠ipv4+端口转发。在openwr ...

要是有公网IPv4玩玩IPv4也不错,部署起来容易很多
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2020-7-6 20:18 | 显示全部楼层
boy6585948 发表于 2020-7-6 13:22
你们的IPv6的端口已经开放了?

检查路由器或者光猫的防火墙,我这边1~65535都开着呢  

点评

北京、河南的联通和移动明确跟我说IPv6的端口在封着,我测试也是能ping通,telnet端口不通!  详情 回复 发表于 2020-7-7 12:04
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2020-7-6 20:18 | 显示全部楼层
99010 发表于 2020-7-6 14:40
我集成的固件里面带有阿里ddns,默认支持ipv6

我的这个贴子主要是路由器帮其他设备更新IPv6地址
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2020-7-7 12:04 | 显示全部楼层
YiSary 发表于 2020-7-6 20:18
检查路由器或者光猫的防火墙,我这边1~65535都开着呢

北京、河南的联通和移动明确跟我说IPv6的端口在封着,我测试也是能ping通,telnet端口不通!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2020-8-19 16:20 | 显示全部楼层
多谢分享,这个openwrt里面可设置后缀,梅林里面没有可设置后缀的地方。
另外,请问除了前面几行必须修改,还有“4.设备1的域名 设备1后缀 5.设备2的域名 设备2后缀”是否指53,54,61,62行?其余行是否都不需要修改了。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2020-9-11 14:27 | 显示全部楼层
学习一下,正需要内网设备ipv6 ddns
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2020-9-23 17:04 | 显示全部楼层
手机网络访问域名的时候还是只解析v4这个怎么解决的呢? dynv6上的域名v4没记录v6有但还是不能访问。

点评

建议你用手机装个Termux软件ping 下试试  详情 回复 发表于 2021-7-21 20:47
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2020-12-24 13:57 | 显示全部楼层
打开看看看看如何操作
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2020-12-24 14:23 | 显示全部楼层
dynv6可以只动态更新前缀,在他们网站上可以为每台主机添加固定的后缀,自定义或者填MAC地址生成EUI64地址都可以。不需要搞复杂的dhcpv6分发地址和主机一一对应然后一个一个去更新。

点评

我在网站上可以手动修改ipv6前缀,也可以修改AAAA记录的后缀,可是这些功能怎么用脚本实现呢?  详情 回复 发表于 2021-11-25 14:51
我看了下 后缀好像是不固定的  详情 回复 发表于 2021-7-21 20:47
同问这个如何实现的???  详情 回复 发表于 2021-3-16 14:45
怎么设置呢?  详情 回复 发表于 2021-2-3 17:32
请问在dynv6网站上怎么配置呢?  详情 回复 发表于 2021-1-14 00:16
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 10:00

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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

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