V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
terrytw
V2EX  ›  宽带症候群

IPv6 的小疑问

  •  
  •   terrytw · 346 天前 · 1591 次点击
    这是一个创建于 346 天前的主题,其中的信息可能已经有所发展或是发生改变。
    家里宽带有 IPv6 ,有一台 Debian 的虚拟机,ifconfig 里看网络信息是这样的:

    ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
    inet6 240e:388:****:3f01:4802:****:fe98:db0f/64 scope global dynamic mngtmpaddr
    valid_lft 1819sec preferred_lft 1818sec

    我很困惑的点在于,上面这个 240e:388:****:3f01:4802:****:fe98:db0f 明显是一个 128 位的地址,为何后面跟了一个/64?
    9 条回复    2024-01-12 02:55:16 +08:00
    yyzh
        1
    yyzh  
       346 天前 via Android
    后面那个是子网掩码,相当于 127.0.0.1/8 的那个/8
    terrytw
        2
    terrytw  
    OP
       346 天前
    @yyzh 我的问题很业余,请多担待
    如果是 IPv4 的地址,比如 192.168.1.5 ,后面子网掩码应该是 32
    对应的 IPv6 的地址,如果是 240e:388:****:3f01 ,只有子网前缀,没有后面 64 位后缀的话,子网掩码应该是/64
    如果 64 位后缀已经明确的情况下,子网掩码应该是/128 ?
    JavaGym
        4
    JavaGym  
       346 天前   ❤️ 1
    看下这个你就了解了
    terrytw
        5
    terrytw  
    OP
       346 天前
    @yyzh 感谢哈,根据你的提示找了一些资料,加上你链接的内容,基本理解了
    mcluyu
        6
    mcluyu  
       346 天前
    简单来说就是 ipv6 可用地址实在太多了, 没必要像以前那样扣扣搜搜给一个 IP , 直接给你一个地址段就好了
    busier
        7
    busier  
       346 天前
    你对子网掩码理解还真奇葩

    希望这回明白了
    tril
        8
    tril  
       346 天前   ❤️ 1
    CIDR 表示法把子网掩码和 IP 地址合在一起写容易让人误会,以为这个掩码是本机 IP 的掩码。

    如果分别填写 IP 地址和子网掩码,比如局域网 IP 段是 192.168.1.0-256 ,大部分人很自然就会写出 192.168.1.1 和 255.255.255.0 ,转换成 CIDR 表示出来就是 192.168.1.1/24 ,不是/32 。分开写的时候人会很清楚这个掩码限制的是局域网网段范围,和本机 IP 地址没有关系。

    IPv6 也是同理,你拿到了一个 IP 地址,一个 IPv6 地址的掩码虽然是/128 ,但网卡上设置的掩码和你拿到的 IP 地址没有关系,掩码限制的是局域网网段的范围,你的 IPv6 局域网的范围是/64 ,所以要填/64 ,而不是填/128 。

    也有个别情况下需要填写/32 或者/128 ,比如运营商分配给你路由器 wan 口的公网 IPv4 地址,这时候上级没有什么局域网,相当于局域网里就你一个 IP 地址,自然填一个 IP 地址的掩码。

    按这么说,路由器 wan 口拿到的也应该是/128 的 IPv6 地址,因为上级没有局域网。但 IPv6 比较特殊,有些功能(例如 EUI-64 )不支持小于/64 的子网掩码,另外 IPv6 地址极其充裕,这可能是运营商会给路由器 wan 口分配/64 而不是/128 的原因?

    至于路由器的下级,也就是局域网里的设备,它们的地址来源是 IPv6-PD ,运营商会单独给你指定一个 IPv6 地址段,让路由器分配给它的 lan 口以及下级设备使用,和路由器 wan 口拿到的 IPv6 地址并不在一个段里。不过即便 PD 给了一段/48 ,路由器一般还是会给 lan 设置/64 的子网掩码,也就是从 IPv6-PD 提供的网段里取一小部分进行使用,个别系统里可以自行修改这个 lan 口子网掩码。

    你在上级有局域网的情况下设置/32 或者/128 也可以,但这个时候系统不会认为上面还有局域网,所以也不会添加到局域网的路由规则。不过因为会有一条 0.0.0.0 的默认路由,可能问题也不大?一般的单网口可以正常用,多网口的时候有可能会遇到点问题。
    tril
        9
    tril  
       346 天前
    @tril 订正:192.168.1.0-255
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   6127 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 02:24 · PVG 10:24 · LAX 18:24 · JFK 21:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.