tril
2024-01-12 02:52:57 +08:00
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 的默认路由,可能问题也不大?一般的单网口可以正常用,多网口的时候有可能会遇到点问题。