KoolShare

 找回密码
 立即注册
搜索
查看: 928|回复: 9

[教程] RT-AC86U华硕路由器基于梅林固件和IPv6实现DDNS方法

[复制链接]

0

主题

12

帖子

87

积分

初级魔法师

Rank: 2

精华
0
门户文章
0
魔力币
86
魔法值
0
注册时间
2020-3-16
发表于 6 天前 | 显示全部楼层 |阅读模式
本帖最后由 upforce 于 2020-5-20 17:35 编辑

  • 需求说明
    很多人都有外网远程访问家庭网络的需求,比如远程访问NAS、搭建Web服务、Aria2远程下载、智能家居远程控制等等,目前多是以DDNS动态域名方式来实现远程访问。分以下三种情况:

    • 如果ISP服务商可以提供公网动态IPv4地址,实现DDNS相对较简单,华硕RT-AC86U路由器中就自带基于IPv4的DDNS设置。
    • 如果ISP服务商无法提供公网IPv4地址,就要使用内网穿透方式,但这种方式一般都需要在公网服务器上部署软件进行转发,速度和稳定性都不太理想。
    • 还有一种方式就是基于IPv6实现DDNS,也可以实现直接的远程访问,但需要远程访问终端也开启IPv6网络链接。
    目前家庭宽带服务商和手机通信服务商都已经实现了IPv6网络部署,基于IPv6的DDNS方式已经可行。下面就提供一种在华硕RT-AC86U路由器上基于梅林固件和IPv6实现DDNS的方法。
  • 实现方法
  • 光猫开启IPv6协议
    一般需要以管理员身份登录到光猫,在网络设置中选中互联网服务连接。在IP协议版本中选择IPv4/IPv6选项。如图所示:
    ddns-1.png
  • 路由器开启IPv6协议和DDNS
    登录到RT-AC86U路由器中,切换到IPv6设置界面。联机类型选Native,接口选PPP,其他保持默认即可。如图所示:
    ddns-2.png
    切换到外部网络(WAN)设置界面,在DDNS选项卡中启用DDNS客户端,服务器选Custom,主机名任意,其他保持默认即可。如图所示: ddns-3.png
  • 编写 IPv6 DDNS脚本
    使用SSH或Telnet方式登录到路由器,在/jffs/scripts目录中建立脚本ddns-start。内容如下:
    1. DOMAIN="xxx.com"
    2. HOSTNAME="router"
    3. SECRET_KEY="your_secret"
    4. APIKEY="your_key"

    5. IPv6="$(nvram get ipv6_rtr_addr)"
    6. if [ $IPv6 != "" ]; then

    7.     curl -X PUT api.godaddy.com/v1/domains/$DOMAIN/records/AAAA/$HOSTNAME \
    8.          -H "Authorization: sso-key $APIKEY:$SECRET_KEY" \
    9.          -H "Content-Type: application/json" \
    10.          -d "[{\"ttl\": 600, \"data\": \"$IPv6\"}]"

    11.     if [ $? -eq 0 ]; then
    12.         /sbin/ddns_custom_updated 1
    13.         echo "$(date +'%Y-%m-%d %H:%M:%S') OK = $IPv6" >> /tmp/ipv6-ddns
    14.     else
    15.         /sbin/ddns_custom_updated 0
    16.         echo "$(date +'%Y-%m-%d %H:%M:%S') NG = $IPv6" >> /tmp/ipv6-ddns
    17.     fi
    18. else
    19.      /sbin/ddns_custom_updated 0
    20.      echo "$(date +'%Y-%m-%d %H:%M:%S') NULL" >> /tmp/ipv6-ddns
    21. fi
    复制代码
    脚本说明:

    • 前4行内容需要根据自己申请的域名进行相应更改,xxx.com改为你的域名,router改为你的主机名,那么以后动态域名就是类似router.xxx.com这种格式。
    • your_secret和your_key分别改为你在域名管理中配置的参数。这里是以调用域名服务商Godaddy API为例的脚本,其他域名服务商需要做相应变更。
    • 这段代码的作用:获取路由器IPv6地址,然后调用域名服务商API更新域名的IPv6地址,并把更新记录到/tmp/ipv6-ddns文件中。
    使用命令chmod +x ddns-start设置ddns-start文件为可执行。
  • 重启路由器验证DDNS
    重启路由器后稍等片刻,然后SSH或Telent到路由器,使用cat /tmp/ipv6-ddns命令查看DDNS是否执行,以及执行的结果。使用ping6 命令查看域名IPv6地址是否更新,以此验证IPv6 DDNS是否配置成功。
    问题:经测试发现,有时候重启路由器后,DDNS脚本未能及时自动执行。
    原因:与路由器未能从及时从NTP服务器获取网络时间有关。
    解决:在系统管理中设置NTP服务器为国内时间服务器,如ntp1.aliyun.com。
  • 开启IPv6服务端口
    路由器已经实现了DDNS,相应也需要开启路由器指定端口以允许外网远程访问。比如在路由器中开启8080端口提供Web服务,需要在/jffs/scripts/firewall-start脚本增加IPv6防火墙规则,内容如下:
    1. ip6tables -I INPUT -p tcp --dport 8080 -j ACCEPT    # Web Server
    复制代码

    这样就可以在外网输入地址router.xxx.com:8080访问路由器Web服务了。
    以上内容如有可改进之处,希望大家指点。

评分

2

查看全部评分

1

主题

12

帖子

166

积分

初级魔法师

Rank: 2

精华
0
门户文章
0
魔力币
163
魔法值
0
注册时间
2018-4-19
发表于 6 天前 来自手机 | 显示全部楼层
感觉好复杂

3

主题

15

帖子

311

积分

中级魔法师

Rank: 3Rank: 3

精华
0
门户文章
0
魔力币
303
魔法值
0
注册时间
2019-7-12
发表于 6 天前 | 显示全部楼层
华硕的web页面 不是不支持监听ipv6吗

18

主题

5009

帖子

3088

积分

初级魔导师

Rank: 6Rank: 6

精华
0
门户文章
0
魔力币
1608
魔法值
0
注册时间
2018-7-15
发表于 6 天前 | 显示全部楼层
学习了,感谢分享!

27

主题

1205

帖子

1275

积分

大魔法师

Rank: 5Rank: 5

精华
0
门户文章
0
魔力币
864
魔法值
0
注册时间
2018-6-4
发表于 4 天前 | 显示全部楼层
前排占个坑~

2

主题

236

帖子

1664

积分

大魔法师

Rank: 5Rank: 5

精华
0
门户文章
0
魔力币
1551
魔法值
0
注册时间
2015-2-15

DDOS纪念勋章

发表于 4 天前 | 显示全部楼层
楼主你确认可以吗??

IPV6的 DDNS早就好了,外网并不能访问。

0

主题

2

帖子

7

积分

魔法学徒

Rank: 1

精华
0
门户文章
0
魔力币
7
魔法值
0
注册时间
2018-5-25
发表于 3 天前 | 显示全部楼层
感谢分享

1

主题

35

帖子

320

积分

中级魔法师

Rank: 3Rank: 3

精华
0
门户文章
0
魔力币
312
魔法值
0
注册时间
2016-4-14
发表于 前天 08:44 | 显示全部楼层

感谢分享

1

主题

20

帖子

55

积分

初级魔法师

Rank: 2

精华
0
门户文章
0
魔力币
52
魔法值
0
注册时间
2020-3-5
发表于 昨天 03:38 来自手机 | 显示全部楼层
楼主的ddns那里会显示处于多个nat吗?我ddns注册失败

0

主题

3

帖子

25

积分

魔法学徒

Rank: 1

精华
0
门户文章
0
魔力币
25
魔法值
0
注册时间
2020-5-6
发表于 2 小时前 | 显示全部楼层
web不支持ipv6的吧  楼主确定可以?

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

GMT+8, 2020-5-26 13:43 , Processed in 0.105126 second(s), 10 queries , Gzip On, Redis On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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