202006 月发表在 分享

30ER-X连接移动家庭宽带IPv6测试

前些时间给家里面安装了中国移动的免费宽带(只收装机费,后面不要钱),装好后发现是双栈的,有IPv6公网IP。不过因为想折腾一下,弱电箱里面挤了个EdgeRouter X路由器,光猫改成桥接模式。eth0连接光猫,PPPoE拨号;eth1连接了一台Homelab ESXi的虚拟化交换机;eth2、3、4接入ER-X集成的硬交换switch0,连接了一台华为荣耀路由器作AP。IPv4很好配置,这里不赘述。这里主要谈一下v6。

配置概览

为了确保内网设备都有公网v6地址,不考虑NAT方案。下面是我的方案:

  • PPPoE 接口上面,使用 autoconf 自动配置 IPv6 地址。
  • PPPoE 接口上面,启用 DHCPv6-PD,通过 DHCPv6 协议向运营商申请一个 IPv6 前缀。
  • switch0 接口上面,启用路由通告,以便内网设备按前面申请到的前缀自动配置 IPv6 地址。

注意:这里我使用了“自动配置”,而不是“自动申请”,是因为 IPv6 SLAAC 只需要知道网段就可以了,主机地址部分,会根据网卡MAC地址,自动生成。

Cfg0.png
Cfg1.png
配置 commit 和 save 后,Windows 和 iPhone 都正常出现了 v6 地址,ER-X 上 ps 可以看到 dhcp6c DHCPv6客户端进程和 radvd 路由通告进程。

之前在学校使用过“桥接”方案,即直接桥接内网网口和校园网网口,再用ebtables过滤掉非IPv6数据包,上送路由系统,这次在ER-X上是不可行的。这主要是因为3点原因:1、上行接口是PPPoE的,只有三层,不能桥接;2、根据以前对ER-X的HWNAT引擎的调查,使用软网桥和ebtables意味着所有数据包要上送内核,无法利用HWNAT的能力;3、运营商提供了 DHCPv6-PD 服务,这是 IPv6 内网最理想的方案。

测试体验

在 Windows 里面设置使用下一代互联网国家工程中心的 DNS 服务器 240c::6666,同时禁用 IPv4 协议。访问 bgp.he.net 可以看到与 ipconfig 里面相同的地址。AS 号为 9808,属于中国移动。

bgphe.png
中国移动的 IPv6 还算良心,测试从 Ubuntu 官方下载 Ubuntu 系统镜像,速度正常,同时可以看到 ER-X 的 CPU 占用率只有 1%,说明可能是走了 HWNAT 引擎,应该是可以线速转发的。

TestHWNAT.png
测试了几大国内的互联网公司的网站,只有淘宝、腾讯网、今日头条可以正常连接访问,加载速度都非常快。ping -6 www.taobao.com 显示RTT大约为 30ms。但是三个网站均出现了只有主站可以打开,CDN 无法访问,静态资源无法加载的问题。其中淘宝网表现是最好的,而腾讯网、今日头条连页面样式都没有加载出来。

taobaov6.png
国内开源镜像只有清华大学 TUNA 的可以使用。测试发现 TUNA 的访问速度不佳,不如直接访问 Ubuntu 官方镜像,不知道 CERNET 和 CMNET 的 v6 是怎么互联的。

前缀不释放问题

配置的过程中多次 commit 配置文件测试,每一次修改 DHCPv6-PD 有关的配置,EdgeOS 都会重启 dhcp6c 服务,重启后会申请新的 IPv6 前缀,并不会释放已有的前缀,最终导致客户机申请到非常多数量的公网 IPv6 地址,如图。

Problem.png
虽然不影响使用,但影响心情,通过 ssh 使用如下命令释放多余的前缀即可解决问题:

ip addr flush dev switch0 dynamic
zyxwvu
UNDER CONSTRUCTION