关于IPv6子网划分,首先要提到的是需要一种不同的思维方式。在IPv4中,您通常会考虑可用的地址数量以及如何为每个最终用户分配足够的地址。在IPv6中,通常会考虑可用的子网数(/ 64),以及如何将其分配给最终用户。您几乎不必担心给定子网中将使用多少个IP地址。除了点对点链接之类的特殊情况外,每个子网都只是拥有比其所需的更多地址可用的地址,因此,您不必担心分配子网,而不必担心它们内部的主机。
IPv6子网通常为/ 64,因为这是SLAAC(无状态地址自动配置)正常工作所必需的。即使未使用SLAAC,也可能有其他原因使用/ 64。例如,可能有一些最终用户设备仅假设/ 64,否则在某些路由器上,比/ 64长的路由子网可能效率低下,因为路由器实施者已对/ 64或更短的路由进行了优化,以节省时间。路由表内存。
为什么建议将/ 127用于点对点链接
对于点对点链接的特定情况,建议使用/ 127而不是/ 64,以避免出现这样的漏洞:子网上到达未使用地址的四分之一地址的数据包地址会导致不必要的邻居请求和表条目,可能会淹没路由器。此类地址错误的数据包可能是恶意的或偶然的。但是,即使您实际上将点对点链接配置为/ 127,也有人主张无论如何都要分配整个/ 64以便保持一致。
为什么要为虚拟机配置小于/ 64的子网?
我不知道为什么要为虚拟机配置小于/ 64的子网。也许是因为托管服务提供商假设服务器就像最终用户,并且只需要一个(/ 64)子网,却没有想到该服务器实际上是需要内部路由拓扑的VM的集合?也可以仅通过使寻址计划更易于记忆来完成:主机获取PREFIX::/64
,然后每个VM获取PREFIX:0:NNNN::/96
NNNN唯一的VM,VM可以随意分配PREFIX:0:NNNN:XXXX:YYYY
。
我可以直接从IPv4子网映射到IPv6子网吗?例如,IPv4 / 24是否直接对应于IPv6 / 56或/ 120?
从寻址和路由工作原理的低级角度来看,前缀长度在IPv6和IPv4中具有相同的含义。在该级别上,您可以进行类比,例如“ IPv4 / 16将一半的位用于网络地址,一半的位用于主机地址,这类似于IPv6中的/ 64”。但是这种比较并不是很恰当。IPv6中出现了强大的约定,这些约定使网络大小的划分看起来更像是IPv4中有类网络的旧世界。可以肯定的是,IPv6不会重新引入分类寻址,在该分类寻址中,地址的最高有效位会强制使用特定的网络掩码,但是IPv6 确实具有某些[事实上/传统上]的标准网络大小:
- / 64:单个子网的基本大小:LAN,WAN,Web虚拟主机的地址块等...永远不要期望“普通”子网比/ 64小(更长的前缀)。绝不会期望子网比/ 64更大(前缀更短),因为/ 64的主机地址值远远超出了我们的想象。
- / 56:256个基本子网的块。即使当前的策略允许ISP向每个最终用户分发最大为/ 48的数据块,并且仍然认为其地址利用率是合理的,但某些ISP可能(并且已经这样做)选择将/ 56分配给消费级客户,以作为一种折衷方案。为它们分配大量子网并解决经济问题。
- / 48:65535个基本子网的块,以及每个ISP客户端站点应接收的建议大小的块。
- / 32:大多数ISP每次从区域地址注册中心请求更多地址时将接收的默认块大小。
在服务提供商和企业网络内部,可以看到比这4个更多的前缀长度。查看这些网络内部路由器的路由表时,IPv4和IPv6有很多共通之处,包括路由工作的大多数方式:较长前缀的路由会覆盖较短前缀的路由,因此可以进行汇总(缩短)并进行钻取向下(延长)路线。像在IPv4中一样,可以将路由聚合或汇总为具有较短前缀的较大块,以最小化路由表的大小。
IPv4和IPv6之间映射的另一个问题是如何协调双堆栈计算机上的IPv4和IPv6分配,以便可以轻松理解寻址计划。到目前为止,确实有一些通用的约定可以做到这一点:将IPv4“子网号”嵌入到IPv6前缀的一部分中,可以使用BCD(例如,10.0.234.0/24
变成2001:db8:abcd:234::/64
)或二进制(10.0.234.0/24
变成2001:db8:abcd:ea::/64
)。
我的接口有几个IPv6地址。所有子网的子网都必须相同吗?
绝对不!与IPv4一样,通过同时具有来自不同子网的多个IP地址,有望使IPv6主机成为多宿主。如果使用SLAAC对它们进行自动配置,则不同的子网可能来自不同路由器的路由器通告。
为什么有时在IPv6地址中看到%而不是/,这是什么意思?
您不会看到一个而不是另一个。它们具有不同的含义。斜杠表示前缀(子网),表示所有以相同n
位开头的地址块。没有斜杠的地址是主机地址。您可能会认为该地址的末尾有一个隐含的“ / 128”,这意味着指定了所有128位。
百分号随附链接本地地址。在IPv6中,每个接口除了可能具有的任何其他IP地址之外,还具有链路本地地址。但问题是,链接本地地址始终无一例外地位于该fe80::/10
块中。但是,如果我们尝试使用链接本地地址与对等方通信,并且本地主机具有多个接口,我们如何知道要使用哪个接口与该对等方通信?通常,路由表会告诉我们用于特定前缀的接口,但是在这里,它将告诉我们fe80::/10
通过每个接口可访问的接口。
答案是我们必须使用语法告诉它使用哪个接口address%interface
。例如,fe80::1234:5678:8765:4321%eth0
。
我在浪费太多子网吗?我们不只是要再次耗尽吗?
没人知道。谁能告诉未来?
但是考虑一下。在IPv6中,可用子网的数量是IPv4 中可用单个地址的数量的平方。确实很多。不,我的意思是真的很多!
但是,仍然:我们会自动将/ 32分发给任何请求它的ISP,而我们会向每个ISP客户分发/ 48。也许我们夸张了,毕竟我们将浪费IPv6。但是有一个规定:到目前为止,只有IPv8空间的八分之一可供使用:2000::/3
。这个想法是,如果我们把前八名搞得一团糟,而我们不得不大刀阔斧地修改自由派分配政策,那么在陷入麻烦之前,我们必须再尝试七次。
最后:IPv6不必永远持续下去。也许它的寿命比IPv4更长(已经是一个令人印象深刻的寿命,并且还没有结束),但是像每种技术一样,它总有一天将不再重要。我们只需要做到这一点。