如何在主机上实现IPv6地址

主机上的IPv6寻址在许多方面都类似于IPv4主机寻址,使用相似的思想,相似的协议,甚至相似或相同的命令。同时,IPv6有时会采用与IPv4截然不同的方法,使用带有新协议或命令的截然不同的解决方案。例如:

  • IPv6使用一种协议来动态学习同一子网中其他主机的MAC地址。
  • 与IPv4相似,IPv6主机可以使用DHCP来学习四个主要的IPv6设置。
  • 与IPv4不同,IPv6使用邻居发现协议(NDP)来实现许多功能,甚至还可以使用ARP在IPv4中实现的更多功能。
  • 与IPv4不同,IPv6支持除DHCP之外的动态地址分配过程,称为无状态地址自动配置(SLAAC)。

本文重点介绍四个主要的IPv6主机寻址:地址,前缀长度,
默认路由器地址和DNS服务器地址。但是,为了了解主机如何动态学习这些地址,本文的第一部分专门介绍NDP,NDP在多个IPv6进程中起着关键作用。 

然后,第二部分重点介绍主机如何通过DHCP和SLAAC动态学习其IPv6设置。

邻居发现协议(NDP)

IPv6主机需要了解一些重要的IPv6设置,这些设置可以反映IPv4主机上所需的设置:地址,关联的前缀长度(等效掩码),默认路由器地址和DNS服务器地址。下图显示了左侧计算机1的这四个概念。

IPv6主机地址

PC的IPv6地址通常是全局单播或唯一的本地单播,以及PC对DNS服务器的引用。但是,由于默认路由器必须是本地可访问的,因此默认路由器的设置通常是指路由器的本地链接地址。

邻居发现协议(NDP)定义了与IPv6寻址相关的几种不同功能,如下所示:

  • SLAAC:当使用无状态地址自动配置(SLAAC)时,主机使用NDP消息来了解其地址的第一部分以及前缀长度。
  • 路由器发现:主机使用NDP消息了解同一子网中可用IPv6路由器的IPv6地址。
  • 重复地址检测(DAD):无论主机如何设置或学习其IPv6地址,在使用该地址之前,它都会等待直到确保没有其他主机使用相同的地址。
  • 邻居MAC发现:主机通过DAD进程并使用其IPv6地址后,该主机将需要学习同一子网中其他主机的MAC地址。NDP替换了IPv4的ARP,提供了替换ARP的请求和答复功能的消息。

本节的其余部分不同程度地介绍了这四个功能。

使用NDP RS和RA发现路由器

NDP定义了一对匹配的消息,使主机可以动态发现位于同一数据链路上的所有潜在默认路由器。基本上,该过程适用于以下消息:

  • 路由器征询(RS):发送到FF02 :: 2的“所有IPv6-路由器”本地范围的多播地址,以便该消息要求仅位于本地链路上的所有路由器进行标识。
  • 路由器广告(RA):路由器发送的此消息列出了许多事实,包括路由器的本地链路IPv6地址。未经请求时,它将被发送到FF02 :: 1的本地范围多播地址中的所有IPv6主机。当响应RS消息而发送时,它流回到发送了邻居请求(NS)的主机的单播地址,或者流回到 全IPv6主机的地址FF02 :: 1。

下图显示了主机PC1如何学习R1的链接本地地址。这个过程确实很简单,首先需要PC1进行询问,然后R1进行答复。

IPv6 RS和RA消息2

请注意,虽然上图显示了主机如何要求了解任何路由器,但路由器也定期发送未经请求的RA消息,即使没有传入的RS。当路由器发送这些周期性的RA消息时,它们基本上在链路上通告有关IPv6的详细信息。

使用NDP NS和NA查找邻居链接地址

NDP定义了第二对匹配的请求和通告消息:邻居
请求(NS)和邻居通告(NA)消息。基本上,NS就像IPv4 ARP请求一样,要求具有特定单播IPv6地址的主机发回回复。NA消息的作用类似于IPv4 ARP答复,列出了主机的MAC地址。

发送NS和NA消息的过程遵循与RS和RA相同的一般过程。NS消息要求提供信息,NA提供信息。最明显的区别是,尽管RS / RA专注于路由器所拥有的信息,但是NS / NA却专注于任何IPv6主机所拥有的信息。

下图显示了一个主机(PC1)如何使用NS消息来学习另一台主机使用的MAC地址的示例。NDP NS和NA消息取代了IPv4 ARP协议,因为它使主机可以发现同一数据链路上其他IPv6主机的链路层地址。

IPv6 NS和NA消息

在此特定示例的步骤1,PC1发送请求以查找PC2的MAC地址。
PC1首先在其NDP邻居表中查找IPv4 ARP高速缓存的等效表,但未
找到IPv6地址2001:DB8:1111:1 :: 22的MAC地址。

因此,在步骤1,PC1将NDP NS消息发送到匹配的2001:DB8:1111:1 :: 22的被请求节点多播地址。仅地址以00:0022结尾的IPv6主机将侦听​​此请求的节点多播地址。结果,此链接上只有一小部分主机会处理收到的NDP NS消息。 

在步骤2,PC2对收到的NS消息做出反应。PC2发送回一个NA消息作为答复,列出PC2的MAC地址。PC1在PC1的NDP邻居表中记录PC2的MAC地址。

使用NDP NS和NA发现重复的地址

NDP NS / NA消息还要求主机进行重要检查,以避免使用重复的IPv6地址。在使用单播地址之前,IPv6使用重复地址检测(DAD)过程来确保该链接上没有其他节点正在使用该地址。

如果另一个主机已经使用了该地址,则第一个主机根本不会使用该地址,直到问题解决。DAD是指功能,但该功能使用NDP NS和NA消息。基本上,主机会发送一条NS消息,但会列出该主机要用作目标地址的地址。

如果不存在重复项,则任何其他主机都不应以NA进行答复。但是,如果另一主机已经使用该地址,则该主机将以NA答复,标识该地址的重复使用。下图显示了一个检测到重复的示例。

IPv6 DHCP进程2

上图显示了一个示例,其中PC1和PC2都尝试使用相同的IPv6
地址。PC2已经在使用该地址,并且PC1在使用该地址之前先使用DAD。该图显示了以下步骤:

  1. 在使用地址2001:DB8:1111:1 :: 11之前,PC1必须使用DAD。
  2. PC1发送一条NS消息,列出PC1现在要使用的地址(2001:DB8:1111:1 :: 11)作为目标。
  3. PC2接收到NS,查看PC2已经用作自己的地址,然后发回NA。
  4. PC1收到自己的IPv6地址的NA消息后,便意识到存在重复地址。

主机在首次使用该地址时以及主机接口每次出现时都会对其每个单播地址以及链接本地地址进行DAD检查。

NDP摘要

在本文的第一部分中,我们解释了NDP执行的一些更重要的功能。NDP的功能比这里列出的要多,但现在,请使用下表作为此处讨论的四个NDP功能的参考。

IPv6 NDP摘要

为主机分配动态IPv6地址

用于IPv6的DHCP(DHCPv6)
使用与用于IPv4的DHCP相同的一般概念,为IPv6主机提供了一种学习主机IPv6配置设置的方法。主机与DHCP服务器交换消息,并且服务器向主机提供配置信息,包括IPv6地址的租约,前缀长度和DNS服务器地址信息。

DHCPv6有两种主要使用方式:有状态DHCPv6无状态DHCPv6。有状态DHCPv6的工作方式类似于DHCPv4模型,尤其与列表中的最后一项有关。它跟踪有关哪个客户端为哪个IPv6地址租用的信息;服务器知道有关特定客户端的信息的事实称为状态信息,从而使DHCP服务器成为有状态DHCP服务器。

无状态DHCP服务器不会跟踪任何每个客户端信息。即将到来的“使用
无状态地址自动配置”部分讨论了当公司决定使用SLAAC时无状态DHCPv6服务器如何发挥重要作用。

DHCPv6和DHCPv4之间的差异

有状态DHCPv6与DHCPv4有许多相似之处,但许多细节也有所不同。下图
显示了一个关键区别:有状态DHCPv6不
向客户端提供默认路由器信息。相反,客户端主机使用内置的NDP协议
直接从本地路由器学习路由器的IPv6地址。

DHCPv6和DHCPv4之间的差异

DHCPv6还使用
新消息和字段更新协议消息以使用IPv6数据包而不是IPv4数据包。例如,下图显示了DHCPv6
消息的名称,该名称取代了DHCPv4 发现,提供,请求和确认(DORA)
消息。而是,DHCPv6使用“请求”,“发布”,“请求”和“答复”消息。

四个DHCPv6消息以两对匹配的方式工作,它们的一般流程与DHCPv4消息相同。当客户端从DHCPv6服务器搜索IPv6地址时(客户端请求消息),征服消息和广告消息完成了该过程,并且服务器为要使用的客户端播发了地址以及其他配置设置(通告消息)。 。

请求和答复消息使客户端可以要求租用该地址,而服务器则在答复消息中确认租用。

DHCPv6中继代理

对于选择使用有状态DHCPv6的企业,DHCP服务器通常位于中央站点,远离许多使用DHCPv6服务器的客户端。在这种情况下,每个站点上的本地路由器必须充当DHCP中继代理。

客户端发送一条仅在本地LAN内部流动的消息。然后,路由器更改源IP地址和目标IP地址,将数据包转发到位于外部的DHCP服务器。服务器发送答复时,实际上到达了路由器的地址(中继代理)。路由器依次将IP地址更改回该数据包中的原始地址。

当您查看DHCPv6消息中使用的某些IPv6地址(例如用于引导DHCPv6流的请求消息)时,IPv6的差异变得更加明显。如下图所示,客户端在请求消息中使用以下地址:

IPv6 DHCP中继代理

本地链接的源:客户端使用自己的本地链接地址作为数据包的源地址。

“所有DHCP代理”的目标地址FF02 :: 1:2:
此链接本地作用域多播地址用于将数据包发送到两种类型的设备:DHCP服务器和充当DHCP中继代理的路由器。

使用链接本地作用域多播目标地址,主机发送的请求消息将仅在本地LAN上流动。在这种情况下,R1充当DHCPv6中继代理,可协助PC1之类的DHCPv6客户端将DHCPv6数据包传递到DHCPv6服务器。

使用无状态地址自动配置

IPv6的无状态地址自动配置(SLAAC)提供了一种动态IPv6地址分配的替代方法,而无需有状态服务器。换句话说,SLAAC不需要服务器分配或租用IPv6地址,不需要IT人员预先配置每个子网的数据,也不需要服务器跟踪哪个设备使用哪个IPv6地址。

SLAAC术语既指主机如何学习一个IPv6设置(其IPv6
地址)的特定部分,也指学习所有四个关键主机IPv6设置(地址,前缀
长度,默认路由器和DNS服务器地址)的总体过程。 

下一个主题从研究SLAAC与IPv6地址有关的任务开始。然后,本文介绍了使用SLAAC查找所有四个主机设置的整个过程-使用NDP以及无状态DHCP的过程。

使用SLAAC构建IPv6地址

使用SLAAC时,主机不会租用其IPv6地址,甚至不会学习其IPv6地址。相反,主机将学习地址的一部分(即前缀),然后组成其自己的IPv6地址的其余部分。具体地说,使用SLAAC选择自己的IPv6地址的主机使用以下步骤:

  1. 使用NDP RS / RA消息从任何路由器获悉在链路上使用的IPv6前缀。
  2. 通过组成接口ID值来选择自己的IPv6地址,以遵循刚刚学习的IPv6前缀。
  3. 在使用该地址之前,首先使用重复地址检测(DAD)来确保没有其他主机已经在使用相同的地址。

前面的图总结了前两个步骤,同时显示了主机完成地址的两种最常见的方式。 

主机可以使用EUI-64规则交替选择一个随机数。

无状态DHCP流程

下表总结了无状态DHCP和有状态DHCP之间的关键比较点。

IPv6 DHCP差异

觉得文章有用?

点个广告表达一下你的爱意吧 !😁