为什么各运营商的光猫家庭网关下发 IPv6 都是 DHCPv6 而不是 SLAAC? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
CrazyBoyFeng
V2EX    宽带症候群

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

  •  
  •   CrazyBoyFeng 2021-06-20 00:43:11 +08:00 10994 次点击
    这是一个创建于 1573 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    第 1 条附言    2021-06-25 20:58:11 +08:00

    抱歉我例子举得不对。不过我手上刚好有一个新装的联通光猫,它的 LAN 侧设置只有 DHCPv6。安卓从这个光猫获取不到 IPv6。 20210623235602

    15 条回复    2021-07-04 14:26:01 +08:00
    LnTrx
        1
    LnTrx  
       2021-06-20 01:07:41 +08:00
    你的例子里不是提到了在 LAN 侧提供 SLAAC 么?

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

    路由模式下,手机直连支持无线的光猫,或者下接路由器支持 IPv6 穿透,安卓手机应该都可以正常使用
    NSAgold
        2
    NSAgold  
       2021-06-20 01:52:36 +08:00 via Android
    光猫 slaac 下发比 /64 大的(如 /80 )的前缀时,安卓机似乎无法获取地址来着
    xmlf
        3
    xmlf  
       2021-06-20 06:24:09 +08:00 via Android
    一直没开 ipv6,有公网 ipv4,目前 ipv6 有什么用?
    echo1937
        4
    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 的前缀,很多协议会无法正常工作。t/759100#reply5


    @xmlf #3 比如我在 AWS 开了一台 EC2,是双栈的,如果我没有 IPv6 地址,我就无法测试和访问这台设备的 IPv6 服务
    NSAgold
        5
    NSAgold  
       2021-06-20 14:01:14 +08:00
    @echo1937 光猫 /64 前缀的情况下,DHCPv6 仍然能继续划分。 国内运营商最低发 /64 但国外似乎有发 /80 的,此时 SLAAC 不能正常工作,但 DHCPv6 似乎是可以的
    NSAgold
        6
    /div> NSAgold  
       2021-06-20 14:11:29 +08:00
    @NSAgold RFC5375
    billccn
        7
    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
        8
    dawnh  
       2021-06-21 14:56:23 +08:00
    确实是 DHCPv6 普遍吗?我怎么感觉用 SLAAC 的反而更多?有没有统计数据?
    事实上即使是有 SLAAC,DHCPv6 也可能必须同时提供,比如分配 DNS 和分配网关。我这里了解到的不少运营商是 SLAAC 分配地址,但是 DHCPv6 下发其他配置。
    ca1123
        9
    ca1123  
       2021-06-21 15:44:46 +08:00
    @xmlf 听说是上网可以更科学
    360511404
        10
    360511404  
       2021-06-21 19:15:27 +08:00
    @dawnh 这几年用过三个地区的联通,都是 dhcpv6-pd
    qbqbqbqb
        11
    qbqbqbqb  
       2021-06-30 14:03:18 +08:00   11
    这种光猫是支持 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
        12
    CrazyBoyFeng  
    OP
       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
        13
    CrazyBoyFeng  
    OP
       2021-07-04 14:04:39 +08:00
    @qbqbqbqb 抱歉之前 #12 说的不对,/64 是不下发的。只做设备标识用。那这里电脑得到的 /60 地址,从电脑上分辨不出来是 dhcpv6 还是 slaac 。

    不过安卓还是得不到 ipv6,不知道是哪里出的问题。
    qbqbqbqb
        14
    qbqbqbqb  
       2021-07-04 14:22:59 +08:00   1
    @CrazyBoyFeng 按照你电脑上的显示,应该是通过 SLAAC 获取的地址。只有 SLAAC 才会获取一个固定和一个临时两个地址。如果是 DHCPv6 有状态获取的话只会显示一个,而且会像 v4 一样显示地址租期。
    qbqbqbqb
        15
    qbqbqbqb  
       2021-07-04 14:26:01 +08:00
    @CrazyBoyFeng 至于安卓为什么得不到,这我就不太清楚了,有可能是手机系统自身的兼容性问题
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2784 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 14:49 PVG 22:49 LAX 07:49 JFK 10:49
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86