光猫拨号,二级路由 IPV6 的正确设置教程. - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
826540272
V2EX    宽带症候群

光猫拨号,二级路由 IPV6 的正确设置教程.

  •  
  •   826540272 2021-02-19 19:42:11 +08:00 14738 次点击
    这是一个创建于 1705 天前的主题,其中的信息可能已经有所发展或是发生改变。
    几乎所有光猫不会下发前缀指派,所以二级路由器只有路由器本身可以获得一个 ipv6 地址.
    解决方法是使用 ipv6 透传 / 中继 技术.
    透传方案兼容性更好,直接桥接 WAN 和 LAN 的 v6 数据包,使用"etable" 命令,具体命令忘了.可以搜索到.缺点好像是路由器本身拿不到 v6 地址.
    其次是 使用中继方案,
    OpenWrt 下设置方法是,WAN DHCPv6 设置里全部设为中继. LAN 设置 同样全部设为中继,
    优点是可以自定义 DNS 地址,你可以将路由器设为 DNS v6 地址,以进行过滤.
    缺点是 首包延迟大,能是 odhcp 软件的 BUG.
    第 1 条附言    2021-02-24 22:47:31 +08:00
    遇到 华为光猫 5G 版 8145C5
    可以正确下发 PD,无需额外配置。
    软件内也支持防火墙设定。
    下发的 PD 是 /63 的地址段
    8145 不支持,甚至防火墙锁死,无法接收入站
    30 条回复    2021-11-14 02:31:32 +08:00
    steadi
        1
    steadi  
       2021-02-19 21:23:54 +08:00
    就是 ipv6 桥模式
    sasalemma
        2
    sasalemma  
       2021-02-20 12:22:26 +08:00
    不是不能下发前缀,而是 PD 模式+statless 无状态,光猫的 PD 前缀给的是 60,路由 WAN 获得的是 /64 这个 statless 最小能分的掩码,不能再在 LAN 下发了。那样就是 /128,要是 PD+statful 倒是可以继续下发的。要是 PD 前缀是 /56/48 那更可分。

    二级路由最稳的做法还是 NAT6,不是 NAT66,不是穿透,而是直接用 IPV6 私网地址来 NAT6,能使用 IPV6 网络,也不会对网络产生任何 bug,底下设备要公网,和 V4 一样端口映射就是,只是 openwrt 本身防火墙对 ipv6 的 nat 端口映射没有界面支持,对于 ipv6 的转发倒是可以直接在界面操作。
    datou
        3
    datou  
       2021-02-20 13:39:19 +08:00
    还是把 ont 改桥接,在路由器上拨号吧

    这样设置 ipv6 防火墙更方便一些
    LnTrx
        4
    LnTrx  
       2021-02-20 16:42:31 +08:00
    @sasalemma NAT6 和 NAT66 不是一个东西?
    sasalemma
        5
    sasalemma  
       2021-02-20 21:42:42 +08:00
    @LnTrx 个人觉得自己的回复已经说明不是一个东西。
    sasalemma
        6
    sasalemma  
       2021-02-20 21:50:14 +08:00
    @LnTrx 一时手快,手动狗头掉了。真是扑了街。
    LnTrx
        7
    LnTrx  
       2021-02-20 21:50:38 +08:00
    @sasalemma 这个说法没听说过,说是一个东西的倒是有:

    > This page describes how to set up NAT6 (also known as NAT66)
    https://openwrt.org/docs/guide-user/network/ipv6/ipv6.nat6

    如果这两个不是一个东西,那分别指什么,能否提供一下资料?
    826540272
        8
    826540272  
    OP
       2021-02-21 04:54:37 +08:00 via Android
    @sasalemma 我 56 也不能分,这个不能设置的
    而且是不是 pd openwrt 界面可以看到,所以你的理解不对
    cwbsw
        9
    cwbsw  
       2021-02-23 16:06:30 +08:00
    @sasalemma
    就是光猫路由模式不支持 LAN 侧 DHCPv6-PD 的锅。
    /60 当然可以继续分割下发啊。WAN 口 SLAAC 的 /64 地址和 PD 分配的 /60 前缀又不是一个东西。你 WAN 口关闭 SLAAC 不配地址或者从 /60 里拿一个地址配在 WAN 口上都是可以的。
    sasalemma
        10
    sasalemma  
       2021-02-23 16:28:22 +08:00
    @cwbsw

    这真不行,以前 PD 给了 LAN /56 前缀,倒是实现了。

    你没理解我说的话。WAN 口这边的地址本来就是是 /64 也好,/60 也好的 SLAAC 和 LAN 的 PD 无关的。就如 ipv4 的 wan 上游服务的分配 ip 。

    只是 WAN 作为一个入口,给 LAN 这边一段 PD 地址,给了 /60 。LAN 这边用 SLAAC 方式分配,二级路由的 WAN 接 LAN,这个 WAN 口就是 /64 的 statless 地址了。还能再下发吗???

    这个东西研究 openwrt 内网的 pd 就是这样。除非用有状态了。

    和你说光猫是两回事。

    @826540272
    @cwbsw

    我知道你们说的意思。光猫的没有 PD,用 passthrough 一类直接和 wan 口同享一个网段的,和手机 wifi 共享 4g 一样,同网段的,/64 的 SLAAC,接个路由的情况,wan 口+SLAAC 就是 /64 。没有 PD 也没有下发。

    但我这边的光猫不是这样而已。光猫拨号,这边还是有 PD 。只是二级路由无法继续下发。

    我说的是哪怕你桥接路由拨号,/60 的 pd 在二级路由一样没有继续下发的,用 slaac 。
    cwbsw
        11
    cwbsw  
       2021-02-23 18:39:52 +08:00
    @sasalemma
    不知道你为什么认为 /60 就无法继续下发。
    假设运营商分配 2408:1234:2234:3230::/60,于是你不就得到了 16 个 /64 ?把 2408:1234:2234:3231::/64 分配给 LAN,2408:1234:2234:3232::/64 分配给二级路由的 LAN,不就可以了?
    qbqbqbqb
        12
    qbqbqbqb  
       2021-02-23 20:38:43 +08:00   3
    @sasalemma 你这里对一些概念的理解有些问题。

    是这样的,首先各个 /64 的意义是不一样的,通过 SLAAC 获得的只是一个地址,里面的“前缀长度”字段(值为“/64”)只是相当于 ipv4 的子网掩码的含义,只是提示了同一网段( WAN 侧)的地址范围,同前缀的其它地址是不属于你的。所以说当路由器仅获取 WAN 地址时(无论是通过 SLAAC 还是 DHCPv6 IA_NA,前者只支持 /64,后者支持任意的前缀长度,注意这两种方式获取到的都是“地址”而不是“前缀”),LAN 端设备是无法直接获得 IPv6 全球单播地址(就是 2 开头的公网地址)的。

    然后还有另外一种操作是 DHCPv6 IA_PD,这种操作可以向上级网络请求一个 IPv6 的前缀,一般家宽运营商给出的前缀长度都是 /56 或者 /60 的,也有极少情况是 /64 的。通过这种方式获取到的是“前缀”而不是“地址”,也就是说同前缀的 2^(128-PREFIX_LEN)个地址都是属于你的。这就是 DHCPv6 IA_PD 和其它地址获取方式( SLAAC 和 DHCPv6 IA_NA )的本质不同之处。

    家宽单层路由器(包括光猫自带路由,以及光猫桥接路由拨号两种情况)的一般工作方式:首先路由器(路由模式光猫)建立 PPPoE 链路,然后通过 SLAAC 获取 WAN 侧地址(一般情况下前缀长度为 /64 ),然后通过 DHCPv6 IA_PD 向 ISP 请求一个地址段,比如楼主拿到的是一个 /56 的地址段,这些地址都是临时属于你的( ISP 端在获取地址的那一刻就已经建立好了正确的路由)。然后重要的来了:路由器(路由模式光猫)从这 /56 的地址端中只取了一个 /64 的地址段作为前缀配置到了 LAN 接口上(包括本地路由器的路由表,自身 LAN 口地址,和负责分配地址的 RA 服务,有时候可能还有本地的 DHCPv6 服务),这样 LAN 侧的设备就可以通过相应的协议获取临时属于自己的公网地址了。至于为什么只取一个 /64 而不是整个 /56,是为了兼容 SLAAC 。

    而且可以注意到,路由器 LAN 侧和 WAN 侧不是同一个网段,这也是 IP 协议的最基本要求(想想 v4 时代是怎么配置地址的)

    这种情况下,还有 255 个 /64 全球可路由的地址段(或者也可以理解成 15 个 /64 地址段和 15 个 /0 地址段)是处于闲置状态的,理论上来说,一级路由器也可以响应 LAN 侧接入的下级路由器的 DHCPv6 IA_PD 请求,给下级路由器分配前缀(下级路由 WAN 侧通过 SLAAC 拿一级路由 LAN 侧的**一个**地址,LAN 侧拿一级路由从 ISP 得到且闲置的**一段**前缀,在这个过程中会自动配置好本地的路由表等参数),然后下级路由 LAN 侧连接的设备就也可以获得公网地址了。此时如果把 /56 改成 /60,也只是少一些可用地址段而已(只有 15 个 /64 地址段闲置),影响不大。如果一级路由器是 OpenWRT,是可以实现这种下发操作的。

    所以说实际存在的问题并不是所谓的“/60 下发只有 /64 不能再下发”(实际上不存在这种说法),而是光猫自带路由根本不会正确响应下级路由器的 IA_PD 请求。
    (我也见到过一些光猫,能够响应 IA_PD 请求,但是可能固件里有 bug 不能正确配置本地的路由表,导致二级路由后的设备能获取 ipv6 地址但不能上网)
    qbqbqbqb
        13
    qbqbqbqb  
       2021-02-23 21:03:19 +08:00
    @sasalemma
    改正上个回帖里的一处错误:“如果一级路由器是 OpenWRT,是可以实现这种下发操作的”
    现在的 OpenWRT 确实不支持这种下发。但是其它路由器不一定不支持。

    我之前也见过一种光猫,获取 /60 的前缀后可以给二级路由 PD /64 的前缀,但可能路由表的建立有 BUG,导致二级路由后的设备获取了地址也上不了网......
    qbqbqbqb
        14
    qbqbqbqb  
       2021-02-23 21:18:10 +08:00
    比如说一级路由使用 Mikrotik RouterOS 的话,这种情况就是可以下发前缀的
    sasalemma
        15
    sasalemma  
       2021-02-24 00:49:43 +08:00
    @qbqbqbqb

    已经不说 WAN 那边获取的 /64 和 /60,那个和 pd 地址段到 LAN 这边没有影响。

    一级路由的 PD 前缀为 /60,然后一级路由无状态下发的情况,一般配置下,一级路由只截取了 /64 开始下发至 LAN 设备(几乎大多数设备都是如此),还能无状态能二三四级一直下发不?就是一开始说的 /60 + 无状态方式,LAN 这边就只有 /64 网段了。LAN 以坑爹的 /64 PD 你都说为了兼容 SLAAC 方式,才采用的。

    我也说了,你要验证这个很简单的。路由,比如 OP 这边自己建立 LAN 的 PD 模式就是,就是 LAN 禁用前缀派发后,禁用全局,设定 LAN 的静态 ipv6 地址和 PD 前缀,就是 openwrt 自身的 PD 模式,和公网无关的。

    LAN 下还继续接个二级路由,还能 /128? 一级路由只是能拥有很多地址段和地址而已。比如在一级路由拨号中 WAN,可以加参数请求,WAN 口拨号获得的 PD 段为 240e:1234:1111:2222::/60,那实际上 多个 LAN 口 可以用请求成 LAN1 可以获取 240e:1234:1111:2222::/64 前缀,LAN2 能获取到:240e:1234:1111:2225::/64,LAN3 是:240e:1234:1111:2227::/64,就是 WAN 响应 LAN 派发不同地址段,也极少人会使用这个。

    LAN 下接的设备就成了 /64 的前缀+/64 的后缀,变成了完整的 128 位地址,就是 SLAAC 获得的地址,没有 PD 再次下发的可能了。 因为二级 WAN 和 LAN 也必然是需要不同网段的,只有用有状态来划分网段,有状态无需为 SLAAC 后 /64 段负责,继续 PD 就是,/82 /98 /128 就能无限制下发,只要你分的足够细。


    从一开始,我只提了一个问题:一级路由 PD/60 前缀+SLAAC 方式的 LAN,LAN 接二级路由 PD 继续下发问题。

    因为目前的开放性路由系统,相对来说就那几个,还各种 bug,除了自行修改配置,默认下的 LAN /64,还真很难处理这个。
    sasalemma
        16
    sasalemma  
       2021-02-24 00:51:47 +08:00
    @cwbsw 说下具体的。比如 op 一级拨号 wa 你这边获得 /60PD,LAN 口 /64 开始派送。界面上如何配置这个。二级路由同为 op 。
    sasalemma
        17
    sasalemma  
       2021-02-24 01:01:40 +08:00
    @cwbsw 关键是不同的路由器,你无法配置这个啊。不是不知道啊。比如 OP,你二级路由 WAN 请求前缀 /64,一级路由都不鸟这个,直接给 WAN 派送地址打发了二级路由。你说气不气呢?

    又比如一级路由中,ASUS 的 AC68U 用 native 方式,二级的 op 的 WAN try 啊。得 WAN try 得到 PD 前缀,才有后面 LAN 派件得可能性。。。

    我没说所有路由不支持。只是常见系统,DD 也好,OP 也好,ROS 这类个人觉得不友好没试而已。
    sasalemma
        18
    sasalemma  
       2021-02-24 01:38:06 +08:00
    @qbqbqbqb 可能上面一些表诉有问题。以前 /56 的时候,二级路由可以不设置,二级路由 WAN 也能拿到 /64 的 PD 前缀,而 变成 /60 后,地址段少了不影响,只是二级路由 WAN 获不到 和 LAN /64 段的 PD 而已。

    一些路由处理 PD 的大概是类似这个逻辑:一级 2408:1234:2234:3230::/60,二级 2408:1234:2234:3231::/64,三级 2408:1234:2234:3230:0001::/80

    如上面朋友说的,WAN1:2408:1234:2234:3230::/60,LAN1 获得了:2408:1234:2234:3230::/60,而 WAN2 并不能“越过”LAN1 段获得
    2408:1234:2234:3232::/64 的 PD 前缀而已。如果路由系统支持,那有 WAN
    1 有多少地址段,都能所谓“无限下发”了。只是目前家用这些坑爹货不行。7621A,4709C,x86 的 op 。除非穿透过去,如楼主说的。WAN-LAN 相通,阻隔 ipv4 包,还造成了第一个包的 bug,多级下,就坑死了。家用级别光猫也是如此如此。

    家宽这边也就是那么点人有这些需求,像我老弟的家,一个路由桥接拨号,挂一个交换机,底下都是挂二级路由,ipv6 自动失效。苏州那边的落脚点,电信封杀密码的中兴猫,猫拨号,也是没有 pd,也是挂着二级路由,桥接都没改成。

    所以最终隔离网络,就不是变成了二级路由,而是直接一级路由中一个 LAN 口设一个 VLAN 并独享一个 PD 前缀了。LAN 怎么请求 /60 PD 都是可以的。二级就跪了。所以才有了所谓不能下发的说辞了。确实,ROS 和 OP 都是基于 linux iptables 的货色,改天研究下 ROS 如何处理这个的,看看能不能搞到 op 这边。
    dodakt
        19
    dodakt  
       2021-02-24 08:55:43 +08:00 via iPhone
    @sasalemma /60 也可以下发例如 /62 的 pd 我一级 op 二级 ASUS
    cwbsw
        20
    cwbsw  
       2021-02-24 10:22:31 +08:00
    @sasalemma RouterOS 和 OpenWrt 都可以收到 /60 继续向下分发 /64 前缀的,13 楼说 OpenWrt 说不支持,不清楚 OpenWrt 最近是不是又瞎改了,至少我去年还在用 OpenWrt 作主路由的时候确实是可以的。
    qbqbqbqb
        21
    qbqbqbqb  
       2021-02-24 16:06:39 +08:00
    @cwbsw 这个是我阅读 odhcpd 的源码和查询相关资料得出的结论。OpenWRT 在处理 PD 请求的时候似乎是从已经配置到 LAN 的前缀上挖出一块向下分发的,而不是从闲置地址里分发。
    qbqbqbqb
        22
    qbqbqbqb  
       2021-02-24 16:12:15 +08:00
    @sasalemma 这个和 iptables 没什么关系,ipv6 默认纯路由模式不经过 NAT,是不涉及 iptables 的(当然,如果有防火墙的话还是要用到 iptables )。涉及到的是 DHCPv6 Server 的工作逻辑,对于 PD 请求是“创建新的 VLAN”,还是和 NA 请求一视同仁直接从 LAN 里挖。这两种在路由表上都是很容易实现的。就看 DHCPv6 软件的开发者的选择了。
    cwbsw
        23
    cwbsw  
       2021-02-24 18:04:47 +08:00
    @qbqbqbqb
    RouterOS 设置的是 pool prefix length,通常设置为 64,这样就可以把收到的 /60 分割成 16 个可用的 /64 。
    OpenWrt 可以直接把 LAN 的前缀长度设置为 60 。
    826540272
        24
    826540272  
    OP
       2021-02-24 22:01:41 +08:00
    @sasalemma 你说的不对,是不是 PD 在 openwrt 界面有显示
    826540272
        25
    826540272  
    OP
       2021-02-24 22:38:00 +08:00
    @qbqbqbqb 你的理解不对,光猫获取到的地址和 PD 地址没关系。只是 PD 地址段是通过光猫路由的.
    sasalemma
        26
    sasalemma  
       2021-03-11 00:00:52 +08:00
    @826540272
    @cwbsw
    @dodakt

    很长,但也很快看完。

    前几天被抓去搞事情了,实际上这个问题是这样的,IPV6-PD 这个模式,客观来说就是 IPV6 子网问题,我个人理解是这样:

    假设 IPV6-PD 为 /60 的前缀 240e:3c1:5665:ddXY::/60 。就是意味着:

    X 这个 60 位是 ISP 分配给你的,也是固定的,Y 这个位才是子网的位数,而 IPV6 都是 16 进制,各位大佬都知道就是 0-F 这样,也就是说后 64 位 SLAAC 方式能分出 16 个子网 /64 的。

    240e:3c1:5665:dd70::/60 这个前缀可以分成

    2 个 /61 子网:

    240e:3c1:5665:dd70::/61
    240e:3c1:5665:dd78::/61

    4 个 /62 子网

    240e:3c1:5665:dd70::/62
    240e:3c1:5665:dd74::/62
    240e:3c1:5665:dd78::/62
    240e:3c1:5665:dd7c::/62

    8 个 /63 子网

    240e:3c1:5665:dd70::/63
    240e:3c1:5665:dd72::/63
    240e:3c1:5665:dd74::/63
    240e:3c1:5665:dd76::/63
    240e:3c1:5665:dd78::/63
    240e:3c1:5665:dd7a::/63
    240e:3c1:5665:dd7c::/63
    240e:3c1:5665:dd7e::/63

    16 个 /64 子网

    240e:3c1:5665:dd70::/64~240e:3c1:5665:dd7F::/64

    这个各位是没有意见的。

    ========================================================

    下面开始说路由了:

    先说非级联(只有一级路由),非级联就是多口 LAN ( VLAN )分子网

    一级路由

    WAN 获取 IPV6-PD 240e:3c1:5665:dd70::/60
    LAN1,LAN1 可以 以 240e:3c1:5665:dd70::/60 下发,只有一个大子网。

    和上面划分子网方式一样,可以分 LAN1-LAN16 。每个不同的 LAN 口分配 240e:3c1:5665:dd70::/64~240e:3c1:5665:dd7F::/64 的不同子网。来区分不同的使用情况,比如 LAN1 对应于家里的物联设备。LAN2 是普通上网设备云云。

    但大多数路由,默认情况下,不会直接使用 /60 这么大的一个子网,为了方便使用和节省运力,还有所谓的兼容性,反正只有一级,所以默认下是从 /60 里随意抽了一个 /64 的子网,一般是抽 0,也就是 240e:3c1:5665:dd70::/64 开始分配 LAN1 下的设备。

    LAN1 设备获取的 ip 地址均为 240e:3c1:5665:dd70:开头,这个大家也没有意见。

    ========================================================

    级联,IPV6-PD 就要算算子网问题了,因为那个子网的拓展并不是像大家想的那样,可以 /64 一直传下去啊。假设 PD 下发没有任何问题。

    一级路由

    WAN 获取 240e:3c1:5665:dd70::/60 前缀。

    LAN 以 240e:3c1:5665:dd70::/60 下发
    LAN 的 IPV6 地址 240e:3c1:5665:dd70::1 (假设设定为::1)


    二级路由

    WAN 获取的 IPv6 地址永远都是 /64 的,240e:3c1:5665:dd70:1111:2222:3333:4444/64
    WAN 获得了一个 IPV6-PD 前缀:240e:3c1:5665:dd78::/61

    LAN 以 240e:3c1:5665:dd78::/61 下发
    LAN 的 IPV6 地址为 240e:3c1:5665:dd78::1

    这样二级路由下发的就只有剩下的一半子网了。
    因为 240e:3c1:5665:dd70::/61 这段,一级路由的 LAN 段抽了 240e:3c1:5665:dd70::/64 用了啊。
    虽然 240e:3c1:5665:dd71::/64~240e:3c1:5665:dd77::/64 这段并没有使用。
    除非二级路由用了 LAN2~LAN8 (均以 /64 分配)


    三级路由( WAN 接二级 LAN )

    WAN 获取的 IPv6/64,240e:3c1:5665:dd78:aaaa:bbbb:cccc:dddd/64
    WAN 获得前缀:240e:3c1:5665:dd7c::/62

    LAN 下发 240e:3c1:5665:dd7c::/62
    LAN 的 IPV6 地址为 240e:3c1:5665:dd7c::1


    四级路由( WAN 接二级 LAN )同理

    WAN 获取的 IPv6/64,240e:3c1:5665:dd7c:aaaa:1111:cccc:2222/64
    WAN 获得前缀:240e:3c1:5665:dd7e::/63

    LAN 下发 240e:3c1:5665:dd7e::/63
    LAN 的 IPV6 地址为 240e:3c1:5665:dd7e::1


    五级路由( WAN 接二级 LAN )同理

    WAN 获取的 IPv6/64,240e:3c1:5665:dd7e:aaaa:3333:cccc:4444/64
    WAN 获得前缀:240e:3c1:5665:dd7f::/64

    LAN 下发 240e:3c1:5665:dd7f::/64
    LAN 的 IPV6 地址为 240e:3c1:5665:dd7f::1

    好了,到了这里就是 /64 了,如果还接一个路由,如果还是以 SLAAC 方式
    就只能用 NAT6,一类本地地址了。当然这里用 WAN 接 LAN,去掉 ipv4 协议的穿透方式让六级路由获取五级同级的 ipv6 子网段也是可以的。

    这个才是我要问的问题。/64 后,SLAAC 怎么解。

    ========================================================

    然后变种一下。假如一级路由。分了 4 个 VLAN,一开始就分了 /62 4 个子网。按上面的说法,就是最多挂 3 级路由就 over 了。

    当然对于家用,已经 100%够用了。


    就是有些理解是模糊的。看上面的说辞,有些朋友觉得 IPV6-PD 似乎可以这样:

    一级路由:240e:3c1:5665:dd70::/64,二级路由把 240e:3c1:5665:dd71::/64 发过去,三级 240e:3c1:5665:dd72::/64 这样。

    但正常情况下,IPV6-PD 这样的子网发放模式和边际路由的理解一样啊,毕竟都是 WAN 传给 LAN,再下一级 WAN-LAN 。下一级肯定是上一级的子网范围内的啊。

    ========================================================

    所以说白了,不是说给的 ip 地址不够多,是多,说人话就是说,你一个 /64 的子网能接入 NNNN 多个设备,毕竟 SLAAC 都好,后面 64 位的主机位能让你的 IP 地址数量数不完,只是子网这个货色,一般是用来区分网络分区作用多些。

    就好比非子网,不同网段 192.168.1.0~192.168.254.0,你都能设置 1~254 这样的区域。

    而 IPV6 中除了一开始从一级路由平层分开 /60 前缀为 /64 的 16 个子网外,用 ip6tabel 禁止每个子网相互通信外,或者 vlan 隔离,级联中就得考虑只有这 16 个子网的 1 、2 、4 、8 、16 的分配法而已。

    当然如果这个世界只靠 ipv6 公网 ip 开网吧,/60 已经可以开黑吧了。

    以上,有不对的地方,指正下。大概我目前就是这样搞的。因为家里各路人员繁杂,所以一级 LAN 已经分了 8 个子网 VLAN 。就剩下 statful 可以玩耍了。

    前几天被抓去搞事情了,实际上这个问题是这样的,IPV6-PD 这个模式,客观来说就是 IPV6 子网问题,我个人理解是这样:

    假设 IPV6-PD 为 /60 的前缀 240e:3c1:5665:ddXY::/60 。就是意味着:

    X 这个 60 位是 ISP 分配给你的,也是固定的,Y 这个位才是子网的位数,而 IPV6 都是 16 进制,各位大佬都知道就是 0-F 这样,也就是说后 64 位 SLAAC 方式能分出 16 个子网 /64 的。

    240e:3c1:5665:dd70::/60 这个前缀可以分成

    2 个 /61 子网:

    240e:3c1:5665:dd70::/61
    240e:3c1:5665:dd78::/61

    4 个 /62 子网

    240e:3c1:5665:dd70::/62
    240e:3c1:5665:dd74::/62
    240e:3c1:5665:dd78::/62
    240e:3c1:5665:dd7c::/62

    8 个 /63 子网

    240e:3c1:5665:dd70::/63
    240e:3c1:5665:dd72::/63
    240e:3c1:5665:dd74::/63
    240e:3c1:5665:dd76::/63
    240e:3c1:5665:dd78::/63
    240e:3c1:5665:dd7a::/63
    240e:3c1:5665:dd7c::/63
    240e:3c1:5665:dd7e::/63

    16 个 /64 子网

    240e:3c1:5665:dd70::/64~240e:3c1:5665:dd7F::/64

    这个各位是没有意见的。

    ========================================================

    下面开始说路由了:

    先说非级联(只有一级路由),非级联就是多口 LAN ( VLAN )分子网

    一级路由

    WAN 获取 IPV6-PD 240e:3c1:5665:dd70::/60
    LAN1,LAN1 可以 以 240e:3c1:5665:dd70::/60 下发,只有一个大子网。

    和上面划分子网方式一样,可以分 LAN1-LAN16 。每个不同的 LAN 口分配 240e:3c1:5665:dd70::/64~240e:3c1:5665:dd7F::/64 的不同子网。来区分不同的使用情况,比如 LAN1 对应于家里的物联设备。LAN2 是普通上网设备云云。

    但大多数路由,默认情况下,不会直接使用 /60 这么大的一个子网,为了方便使用和节省运力,还有所谓的兼容性,反正只有一级,所以默认下是从 /60 里随意抽了一个 /64 的子网,一般是抽 0,也就是 240e:3c1:5665:dd70::/64 开始分配 LAN1 下的设备。

    LAN1 设备获取的 ip 地址均为 240e:3c1:5665:dd70:开头,这个大家也没有意见。

    ========================================================

    级联,IPV6-PD 就要算算子网问题了,因为那个子网的拓展并不是像大家想的那样,可以 /64 一直传下去啊。假设 PD 下发没有任何问题。

    一级路由

    WAN 获取 240e:3c1:5665:dd70::/60 前缀。

    LAN 以 240e:3c1:5665:dd70::/60 下发
    LAN 的 IPV6 地址 240e:3c1:5665:dd70::1 (假设设定为::1)


    二级路由

    WAN 获取的 IPv6 地址永远都是 /64 的,240e:3c1:5665:dd70:1111:2222:3333:4444/64
    WAN 获得了一个 IPV6-PD 前缀:240e:3c1:5665:dd78::/61

    LAN 以 240e:3c1:5665:dd78::/61 下发
    LAN 的 IPV6 地址为 240e:3c1:5665:dd78::1

    这样二级路由下发的就只有剩下的一半子网了。
    因为 240e:3c1:5665:dd70::/61 这段,一级路由的 LAN 段抽了 240e:3c1:5665:dd70::/64 用了啊。
    虽然 240e:3c1:5665:dd71::/64~240e:3c1:5665:dd77::/64 这段并没有使用。
    除非二级路由用了 LAN2~LAN8 (均以 /64 分配)


    三级路由( WAN 接二级 LAN )

    WAN 获取的 IPv6/64,240e:3c1:5665:dd78:aaaa:bbbb:cccc:dddd/64
    WAN 获得前缀:240e:3c1:5665:dd7c::/62

    LAN 下发 240e:3c1:5665:dd7c::/62
    LAN 的 IPV6 地址为 240e:3c1:5665:dd7c::1


    四级路由( WAN 接二级 LAN )同理

    WAN 获取的 IPv6/64,240e:3c1:5665:dd7c:aaaa:1111:cccc:2222/64
    WAN 获得前缀:240e:3c1:5665:dd7e::/63

    LAN 下发 240e:3c1:5665:dd7e::/63
    LAN 的 IPV6 地址为 240e:3c1:5665:dd7e::1


    五级路由( WAN 接二级 LAN )同理

    WAN 获取的 IPv6/64,240e:3c1:5665:dd7e:aaaa:3333:cccc:4444/64
    WAN 获得前缀:240e:3c1:5665:dd7f::/64

    LAN 下发 240e:3c1:5665:dd7f::/64
    LAN 的 IPV6 地址为 240e:3c1:5665:dd7f::1

    好了,到了这里就是 /64 了,如果还接一个路由,如果还是以 SLAAC 方式
    就只能用 NAT6,一类本地地址了。当然这里用 WAN 接 LAN,去掉 ipv4 协议的穿透方式让六级路由获取五级同级的 ipv6 子网段也是可以的。

    这个才是我要问的问题。/64 后,SLAAC 怎么解。

    ========================================================

    然后变种一下。假如一级路由。分了 4 个 VLAN,一开始就分了 /62 4 个子网。按上面的说法,就是最多挂 3 级路由就 over 了。

    当然对于家用,已经 100%够用了。


    就是有些理解是模糊的。看上面的说辞,有些朋友觉得 IPV6-PD 似乎可以这样:

    一级路由:240e:3c1:5665:dd70::/64,二级路由把 240e:3c1:5665:dd71::/64 发过去,三级 240e:3c1:5665:dd72::/64 这样。

    但正常情况下,IPV6-PD 这样的子网发放模式和边际路由的理解一样啊,毕竟都是 WAN 传给 LAN,再下一级 WAN-LAN 。下一级肯定是上一级的子网范围内的啊。

    ========================================================

    所以说白了,不是说给的 ip 地址不够多,是多,说人话就是说,你一个 /64 的子网能接入 NNNN 多个设备,毕竟 SLAAC 都好,后面 64 位的主机位能让你的 IP 地址数量数不完,只是子网这个货色,一般是用来区分网络分区作用多些。

    就好比非子网,不同网段 192.168.1.0~192.168.254.0,你都能设置 1~254 这样的区域。

    而 IPV6 中除了一开始从一级路由平层分开 /60 前缀为 /64 的 16 个子网外,用 ip6tabel 禁止每个子网相互通信外,或者 vlan 隔离,级联中就得考虑只有这 16 个子网的 1 、2 、4 、8 、16 的分配法而已。

    当然如果这个世界只靠 ipv6 公网 ip 开网吧,/60 已经可以开黑吧了。

    以上,有不对的地方,指正下。大概我目前就是这样搞的。因为家里各路人员繁杂,所以一级 LAN 已经分了 8 个子网 VLAN 。就剩下 statful 可以玩耍了。
    sasalemma
        27
    sasalemma  
       2021-03-11 00:05:33 +08:00
    呃。似乎 bug,重复了。抱歉。
    IMEVER
        28
    IMEVER  
       2021-03-14 14:04:57 +08:00
    openwrt 支持下发 pd 的
    比如一级获取前缀 /60
    配置不不动

    二级路由器配置如下:
    lan 口
    获取前缀 /62
    dhcpv6 和 ra 都是 server,ndp 中继

    wan 口好像界面找不到配置的地方,可以直接修改 /etc/config/dhcp
    config dhcp 'wan'
    option interface 'wan'
    option ignore '1'
    option ra "relay"

    这样二级路由就可以等得到一个 /62 的 pd 了。当然这个前缀可以配置到 61 、62 、63 、64,下面的都有 slaac,再细分下去也可以,只是下面不能用 slaac 了,只能 statefull
    TsukiMori
        29
    TsukiMori  
       2021-11-14 02:28:30 +08:00
    @cwbsw

    Openwrt 支持 PD 拆分 在接口设置里手动选择前缀委托长度 可以从 60 开始 61 62 一路套下来 理论上也就是分到 PD/64
    但是 Openwrt 这种路由上联和 PD 都是基于 DHCPv6
    13 楼说的情况是 PD 委托路由下的设备 用 SLAAC 获取地址会直接快进到 /64
    TsukiMori
        30
    TsukiMori  
       2021-11-14 02:31:32 +08:00
    @sasalemma 主要痛点在于 像 openwrt 这样的路由 wan 口是 DHCPv6 而不是 SLAAC 光猫拿到 /60 的 PD 以后就不管三七二十一都给个 /64 地址 没有给 DHCPv6 客户端继续下发 PD 的余地
    我这里甚至还有光猫下发 /128 地址的情况
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5789 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 01:43 PVG 09:43 LAX 18:43 JFK 21:43
    Do have faith in what you're doing.
    ubao msn 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