我家几年前成功申请到了公网 IPv4,目前挂了个 j1900 的垃圾服务器提供公网访问,感觉还挺不错。最近突然想到,现在不是一直在推广 IPv6 吗,不如把家里的 IPv6 也开通下。
开通和配置 IPv6
首先前往 http://www.test-ipv6.com/ 测试一下,发现目前没有 IPv6,可能是因为我家宽带办理的比较早,默认没开启这个业务,有些新办理的宽带默认就是有 IPv6 服务的,不需要再打电话开通。
打了电信的客服电话,得到的回复是如果机房设备支持的话,可以开通 IPv4/IPv6 双栈。过了一天后就收到回电说开通成功了。感觉比之前要公网 IPv4 要简单多了,这次一打电话就同意开通了。
接下来就要配置 IPv6.
光猫
首先进入光猫超级管理员后台,在网络选项卡找到网络连接,选择上网业务的连接(INTERNET 开头),然后将连接类型改成桥接,IP 模式改成 IPv4&IPv6.
改为桥接后,需要使用路由器拨号,这个是最推荐的方法。当然你也可以选择不改,那这样就会多一层 NAT.
我利用的是光猫的一个漏洞获取到超级管理员密码,如果你和我一样用的比较老款的光猫,可以试试这个漏洞:https://www.zouht.com/1370.html
路由器
进入路由器,找到 IPv6 相关的设置页面。梅林固件的这个页面就在高级设置选项卡内。
根据 官方文档:
- 当您的外部网络(WAN) > 互联网连接 > WAN联机类型为 [PPPoE], 在IPv6联机类型请选择 [Native]
- 当您的外部网络(WAN) > 互联网连接 > WAN联机类型为 [动态IP], 在IPv6联机类型请选择 [Passthrough]
- 当您的外部网络(WAN) > 互联网连接 > WAN联机类型为 [静态IP], 在IPv6联机类型请选择 [静态 IPv6]
对应下就是:
- 当光猫选择桥接,使用路由器拨号时,选择 [Native]
- 当光猫选择路由,使用光猫拨号时,选择 [Passthrough]
根据自己的情况修改即可,其他选项均留默认,不需要调整。
应用后,可能需要重启路由器,然后就会看到下图红框内获取到了 IPv6 的地址,这就说明配置无误。
内网设备
对于手机,默认都是开启 IPv6 的,不需要调整。
但对于 Windows,很有可能过去的某一天,我们把 IPv6 给禁用了(比如我之前因为 bing 上不去就禁用了 v6),所以最好还是检查下。
进入 控制面板\网络和 Internet\网络连接 ,然后点开对应网卡的属性,确保 IPv6 打勾启用了。然后再查看网卡详情,看见 v4 和 v6 的连接均显示 Internet 即可。
当然可以再去文章开头那个网站测试下,如果如下显示就说明 IPv6 正常。
DDNS
路由器
获取到的公网 IPv6 和 IPv4 一样都是动态的,所以还是需要 DDNS 服务解析到一个域名上。
我之前使用的是梅林的插件:Aliddns
这个插件非常好用,一直稳定运行没有出过岔子。可惜就是只支持 IPv4,作者也没有更新新版本。
好在社区里已经有大佬修改了该插件,用于解析 IPv6:Axliddns6
不过这个插件在我环境运行有点问题,因为在我环境里 nslookup 默认的 DNS 解析不出来 AAAA 记录,不知道为什么。作者还删掉了原版手动指定 DNS 服务器的功能(不知出于什么目的)导致这插件用不成。
不过可以手动修改下 axliddns6_update.sh,给 nslookup 指令手动指定 DNS 服务器。
内网设备
由于 IPv6 不存在 NAT 这个概念,每个设备的 IPv6 都是不同的。那么我们在路由器上做 DDNS,解析出来的是路由器的 IPv6,而不是路由器下面的设备。
这和 IPv4 很不一样,我以前 IPv4 是使用的 DMZ,DDNS 直接解析到路由器,路由器将数据包转发给我指定的内网设备即可。
解决方案 1 – 路由器插件转发
为了应对这个问题,新插件特意增加了一个转发功能,用于将对应端口的数据包转发给指定内网设备。
如下图,这么操作就可以将 homeroute.ddns.chriskim.top:18080 的数据包转发给内网 192.168.0.2:18080
这个操作可以满足一部分需求,但是我感觉不是非常优雅。首先插件只能添加 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 站。
不过这点感知更低了, 因为目前几乎所有网站都支持 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 的按流量收费,其实价格是不变的。
发表回复