ChrisKim
Do not go gentle into that good night.
颢天

电信宽带 + 梅林固件实现 IPv6 DDNS

我家几年前成功申请到了公网 IPv4,目前挂了个 j1900 的垃圾服务器提供公网访问,感觉还挺不错。最近突然想到,现在不是一直在推广 IPv6 吗,不如把家里的 IPv6 也开通下。

开通和配置 IPv6

首先前往 http://www.test-ipv6.com/ 测试一下,发现目前没有 IPv6,可能是因为我家宽带办理的比较早,默认没开启这个业务,有些新办理的宽带默认就是有 IPv6 服务的,不需要再打电话开通。

打了电信的客服电话,得到的回复是如果机房设备支持的话,可以开通 IPv4/IPv6 双栈。过了一天后就收到回电说开通成功了。感觉比之前要公网 IPv4 要简单多了,这次一打电话就同意开通了。

接下来就要配置 IPv6.

光猫

首先进入光猫超级管理员后台,在网络选项卡找到网络连接,选择上网业务的连接(INTERNET 开头),然后将连接类型改成桥接,IP 模式改成 IPv4&IPv6.

改为桥接后,需要使用路由器拨号,这个是最推荐的方法。当然你也可以选择不改,那这样就会多一层 NAT.

https://assets.zouht.com/img/blog/3096-01.webp

我利用的是光猫的一个漏洞获取到超级管理员密码,如果你和我一样用的比较老款的光猫,可以试试这个漏洞:https://www.zouht.com/1370.html

路由器

进入路由器,找到 IPv6 相关的设置页面。梅林固件的这个页面就在高级设置选项卡内。

https://assets.zouht.com/img/blog/3096-02.webp

根据 官方文档

  • 当您的外部网络(WAN) > 互联网连接 > WAN联机类型为 [PPPoE], 在IPv6联机类型请选择 [Native]
  • 当您的外部网络(WAN) > 互联网连接 > WAN联机类型为 [动态IP], 在IPv6联机类型请选择 [Passthrough]
  • 当您的外部网络(WAN) > 互联网连接 > WAN联机类型为 [静态IP], 在IPv6联机类型请选择 [静态 IPv6]

对应下就是:

  • 当光猫选择桥接,使用路由器拨号时,选择 [Native]
  • 当光猫选择路由,使用光猫拨号时,选择 [Passthrough]

根据自己的情况修改即可,其他选项均留默认,不需要调整。

应用后,可能需要重启路由器,然后就会看到下图红框内获取到了 IPv6 的地址,这就说明配置无误。

https://assets.zouht.com/img/blog/3096-03.webp

内网设备

对于手机,默认都是开启 IPv6 的,不需要调整。

但对于 Windows,很有可能过去的某一天,我们把 IPv6 给禁用了(比如我之前因为 bing 上不去就禁用了 v6),所以最好还是检查下。

进入 控制面板\网络和 Internet\网络连接 ,然后点开对应网卡的属性,确保 IPv6 打勾启用了。然后再查看网卡详情,看见 v4 和 v6 的连接均显示 Internet 即可。

https://assets.zouht.com/img/blog/3096-04.webp
https://assets.zouht.com/img/blog/3096-05.webp

当然可以再去文章开头那个网站测试下,如果如下显示就说明 IPv6 正常。

https://assets.zouht.com/img/blog/3096-06.webp

DDNS

路由器

获取到的公网 IPv6 和 IPv4 一样都是动态的,所以还是需要 DDNS 服务解析到一个域名上。

我之前使用的是梅林的插件:Aliddns

这个插件非常好用,一直稳定运行没有出过岔子。可惜就是只支持 IPv4,作者也没有更新新版本。

好在社区里已经有大佬修改了该插件,用于解析 IPv6:Axliddns6

不过这个插件在我环境运行有点问题,因为在我环境里 nslookup 默认的 DNS 解析不出来 AAAA 记录,不知道为什么。作者还删掉了原版手动指定 DNS 服务器的功能(不知出于什么目的)导致这插件用不成。

不过可以手动修改下 axliddns6_update.sh,给 nslookup 指令手动指定 DNS 服务器。

https://assets.zouht.com/img/blog/3096-07.webp

内网设备

由于 IPv6 不存在 NAT 这个概念,每个设备的 IPv6 都是不同的。那么我们在路由器上做 DDNS,解析出来的是路由器的 IPv6,而不是路由器下面的设备。

这和 IPv4 很不一样,我以前 IPv4 是使用的 DMZ,DDNS 直接解析到路由器,路由器将数据包转发给我指定的内网设备即可。

解决方案 1 – 路由器插件转发

为了应对这个问题,新插件特意增加了一个转发功能,用于将对应端口的数据包转发给指定内网设备。

如下图,这么操作就可以将 homeroute.ddns.chriskim.top:18080 的数据包转发给内网 192.168.0.2:18080

https://assets.zouht.com/img/blog/3096-08.webp

这个操作可以满足一部分需求,但是我感觉不是非常优雅。首先插件只能添加 6 条转发记录,即只能设置 6 个端口,其次每次都要在路由器里调整,感觉非常麻烦。

解决方案 2 – 直接在内网设备做 DDNS

既然我们要访问指定内网设备,那直接在这个设备做 DDNS,解析这个设备的 IPv6 不就行了。我使用的是下面这个程序:

该程序是 C# 编写的,可以用 docker,就不需要配置环境。根据作者文档配置好后,在想要提供公网访问的设备上运行,程序就会定时更新域名解析。

IPv6 体验差别

拥有公网访问能力

设备获取到的 IPv6 是公网 IP,不存在 NAT,是可以直接公网访问到的,这在 IPv4 是很奢侈的。

有了公网访问能力,可以方便地游戏联机、文件共享、开服务器等等,让家庭网络可玩性上升一个档次。

不过由于我之前本来就有 IPv4 公网 IP,所以这一点对我的体验感并不强。

Torrent DHT 结点明显增多

以前家里有公网 IPv4,DHT 结点也只有 250~300 左右。开通 IPv6 后,结点数量飙升至 750~900,翻了三倍之多。P2P 下载时也能连接到 IPv6 的用户了,在用户列表中可以看到 1/4 的用户是 IPv6 连接的。

因此,IPv6 对 torrent 的下载速度肯定是有好处。

网站能使用 IPv6 访问

开通 IPv6 后,网站会优先用 IPv6 访问。比如访问 b 站,可以发现服务器 IP 已经显示的 IPv6 形式,代表我们是使用 IPv6 访问的 b 站。

https://assets.zouht.com/img/blog/3096-09.webp

不过这点感知更低了, 因为目前几乎所有网站都支持 IPv4,几乎没有网站只能用 IPv6 才能访问。

其他玩意

下面就当自己的备忘录了

IPv6 域名解析

最开始想复杂了,其实直接解析个 AAAA 记录,和 A 记录共存就行了。

客户端会优先使用 IPv6 连接,IPv4 作为备用方案。

nginx 监听 IPv6

IPv4 的 0.0.0.0,对应 IPv6 的 [0:0:0:0:0:0:0:0],简写为 [::]

所以在 nginx 配置文件中,监听 [::]:80 和 [::]:443 即可,如:

listen 80;
listen [::]:80;
listen 443 ssl http2;
listen [::]:443 ssl http2;

(网上教程说先要输入 nginx -V,看有没有 IPv6 模块,而我试了下没有显示 IPv6 模块,但都能正常用 IPv6,不知道是为什么)

阿里云 ECS 开启 IPv6

参考官方文档即可:https://help.aliyun.com/document_detail/108458.html

IPv6 流量是独立于 IPv4 流量收费的,不过由于我 IPv4 选的是按流量计费,那再加个 IPv6 的按流量收费,其实价格是不变的。

本文链接:https://www.zouht.com/3096.html
本文使用:CC BY-NC-SA 4.0 许可
# # #
首页      随笔      电信宽带 + 梅林固件实现 IPv6 DDNS

发表回复

textsms
account_circle
email

  • SkyWalker

    原因:解析域名失败,解析结果promote.ldns.rate.local
    Axliddns6插件显示这个是什么意思呢,我是想解析路由器的v6地址的

    6 月前 回复

颢天

电信宽带 + 梅林固件实现 IPv6 DDNS
我家几年前成功申请到了公网 IPv4,目前挂了个 j1900 的垃圾服务器提供公网访问,感觉还挺不错。最近突然想到,现在不是一直在推广 IPv6 吗,不如把家里的 IPv6 也开通下。 开通和配置…
扫描二维码继续阅读
2023-01-05