为什么各运营商的光猫家庭网关下发 IPv6 都是 DHCPv6 而不是 SLAAC?

2021-06-20 00:43:11 +08:00
 CrazyBoyFeng

现在运营商安装的光猫大多默认都调成路由网关模式(光猫拨号),而不是桥接模式(第三方路由或终端拨号)。这样用户不再需要第三方路由器即可直接连入。
但是光猫 LAN 侧的 IPv6 地址生成方式却不是标准推荐的 SLAAC,而是 DHCPv6 。

SLAAC,也就是 NDP,是 IETF 更推荐的 IPv6 地址生成方式,也是最早一批实现的 IPv6 标准协议。
但是为什么运营商们的 EPON/GPON 采购要求里,都要求 LAN 侧的 IPv6 只有 DHCPv6 这一种下发方式?尽管同时会要求 WAN 侧实现 SLAAC 和 DHCPv6 两种地址获取方式(一个例子)。

而 DHCPv6 恰是安卓不支持的,谷歌也不打算支持,我记得还专门发了一篇论文批判 DHCPv6 。
结果就是安卓用运营商提供的光猫家庭网关没有 IPv6 。必须只能通过光猫改桥接+第三方支持 NDP 的路由器。基本上只有懂一些网络的用户才会这么做。

9658 次点击
所在节点    宽带症候群
15 条回复
LnTrx
2021-06-20 01:07:41 +08:00
你的例子里不是提到了在 LAN 侧提供 SLAAC 么?

现况是,光猫一般支持 LAN 侧的 SLAAC,但不一定会下发可再分子网的前缀。

路由模式下,手机直连支持无线的光猫,或者下接路由器支持 IPv6 穿透,安卓手机应该都可以正常使用
NSAgold
2021-06-20 01:52:36 +08:00
光猫 slaac 下发比 /64 大的(如 /80 )的前缀时,安卓机似乎无法获取地址来着
xmlf
2021-06-20 06:24:09 +08:00
一直没开 ipv6,有公网 ipv4,目前 ipv6 有什么用?
echo1937
2021-06-20 08:33:59 +08:00
@CrazyBoyFeng
我在你的链接里看到 2.1.IPV6 基本功能测试包括三项:

2.1.1 、WAN 侧 SLAAC,LAN 侧 SLAAC

2.1.2 、WAN 侧 DHCPv6,LAN 侧 SLAAC

2.1.3 、WAN 侧 DHCPv6,LAN 侧 DHCPv6

所以你所说的“都要求 LAN 侧的 IPv6 只有 DHCPv6 这一种下发方式”是不是不对啊?


@NSAgold #2 似乎不会分发大于 /64 的前缀,很多协议会无法正常工作。https://www.v2ex.com/t/759100#reply5


@xmlf #3 比如我在 AWS 开了一台 EC2,是双栈的,如果我没有 IPv6 地址,我就无法测试和访问这台设备的 IPv6 服务
NSAgold
2021-06-20 14:01:14 +08:00
@echo1937 光猫 /64 前缀的情况下,DHCPv6 仍然能继续划分。 国内运营商最低发 /64 但国外似乎有发 /80 的,此时 SLAAC 不能正常工作,但 DHCPv6 似乎是可以的
NSAgold
2021-06-20 14:11:29 +08:00
@NSAgold RFC5375
billccn
2021-06-21 07:27:42 +08:00
很多传统的电信运营商其构架也是几十年前的逻辑结构,对他们来说互联网接入和用户线维护是两个部门,IP 地址分配是前者管,光网是后者管,这两者之间可能逻辑上甚至物理上都是分开的系统。比如用户的光纤接入了后者管的 OLT 以后再汇聚才能进入前者管的领域,这时候就有一个问题,如何能在汇聚以后识别每个用户的数据流呢?于是又祭出了从 DSL 时代就有的传家宝 PPPoE 拨号,既然已经是 PPPoE 了,那原来 DSL 时代的系统就可以稍加扩容继续用,此时如果要上 SLAAC 就需要投资新的系统还要培训运维人员,采用类似的 DHCP6 就省事很多。

技术层面说 DHCP 是客户端定时续租的模式,产生的流量较少,SLAAC 依赖的 NDP 在 PPP 封装的链接里很冗余,但是为了实现地址分配这一副作用,客户端和服务器都得不厌其烦的广播和处理这些 NDP 包,其数量远超 DHCP 。

另外 DHCP 还有特殊功能比如可以下发大于 /64 的前缀,让路由器分成多个子网,可以下发 DNS 和 NTP 等的地址。
dawnh
2021-06-21 14:56:23 +08:00
确实是 DHCPv6 普遍吗?我怎么感觉用 SLAAC 的反而更多?有没有统计数据?
事实上即使是有 SLAAC,DHCPv6 也可能必须同时提供,比如分配 DNS 和分配网关。我这里了解到的不少运营商是 SLAAC 分配地址,但是 DHCPv6 下发其他配置。
ca1123
2021-06-21 15:44:46 +08:00
@xmlf 听说是上网可以更科学
360511404
2021-06-21 19:15:27 +08:00
@dawnh 这几年用过三个地区的联通,都是 dhcpv6-pd
qbqbqbqb
2021-06-30 14:03:18 +08:00
这种光猫是支持 SLAAC 的,只要取消勾选“地址信息是否通过 DHCP 获取”这个选项就可以了。

IPv6 地址分配不是“SLAAC/IPv6”那么简单。它把 IPv4 的 DHCP 协议拆成了两个协议:RA 和 DHCPv6,其中 RA 是必选协议,DHCPv6 是可选协议。RA 负责在局域网内公布前缀网段(起到类似 IPv4 的子网掩码和网络号的作用)和默认网关,同时可以激活特定网段的 SLAAC ; DHCPv6 可以分配 DNS 地址,以及类似 DHCPv4 的统一分配地址,但是因为 DHCPv6 相比 v4 去掉了分配“前缀(相当于子网掩码)和默认网关”的功能,所以必须配合 RA 一起使用。

所以实际分配地址一般有三种模式:
1. 纯 SLAAC 无 DHCPv6,缺点是如果客户端不支持 RDNSS 扩展的话就无法取得 DNS 地址
2. DHCPv6 Stateless,即 RA 负责公布网段并激活 SLAAC,DHCPv6 只负责分配 DNS ;客户端通过 SLAAC 配置地址,再通过 DHCPv6 配置 DNS
3. DHCPv6 Stateful,即 RA 负责公布网段但不激活 SLAAC,DHCPv6 负责分配地址和 DNS ;客户端的地址和 DNS 都是从 DHCPv6 获取的。
以上第二种兼容性最好,安卓能获取地址,也不会出现某些客户端无法获取 DNS 的情况。

回到你的光猫上,可以看到里面有两个选项“地址信息是否通过 DHCP 获取”“其他信息是否通过 DHCP 获取”,都不勾就是纯 SLAAC (客户端可能获取不到 IPv6 的 DNSdizhi ),只勾第二个就是 DHCPv6 Stateless,都勾上就是 DHCPv6 Stateful
CrazyBoyFeng
2021-07-03 23:35:23 +08:00
@qbqbqbqb #11 抱歉我这边改了之后仍然得不到 slaac 地址。

![联通家庭网关]( https://graph.org/file/a7ae804737cffaf334aef.png)
可以看到 wan 侧通过 dhcpv6 获得了 /60 前缀,通过 slaac 获得了 /64 地址。

![电脑]( https://graph.org/file/aa362b18124e4827ca29a.png)
可以看到 lan 侧获得的 ip 是通过 /60 前缀下发的。如果通过 slaac 下发地址,那么我的电脑上应该得到的是与网关上同属一个 /64 前缀的 `2408:824e:0002:736e:`。
CrazyBoyFeng
2021-07-04 14:04:39 +08:00
@qbqbqbqb 抱歉之前 #12 说的不对,/64 是不下发的。只做设备标识用。那这里电脑得到的 /60 地址,从电脑上分辨不出来是 dhcpv6 还是 slaac 。

不过安卓还是得不到 ipv6,不知道是哪里出的问题。
qbqbqbqb
2021-07-04 14:22:59 +08:00
@CrazyBoyFeng 按照你电脑上的显示,应该是通过 SLAAC 获取的地址。只有 SLAAC 才会获取一个固定和一个临时两个地址。如果是 DHCPv6 有状态获取的话只会显示一个,而且会像 v4 一样显示地址租期。
qbqbqbqb
2021-07-04 14:26:01 +08:00
@CrazyBoyFeng 至于安卓为什么得不到,这我就不太清楚了,有可能是手机系统自身的兼容性问题

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/784544

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX