网络专家Windows Vista 中的 IPv6 自动配置功能

Joseph Davies

IPv6 不仅可以将地址空间从 IPv4 中的 32 位扩展到 128 位,还具有很多其他功能。即使在不使用地址配置协议(如 DHCP for IPv6,简称 DHCPv6)的情况下,IPv6 主机也可以自动进行自我配置。

根据 RFC 2462,所有 IPv6 节点都自动为每个接口配置一个链接本地地址。IPv6 主机还可以使用路由器发现(交换路由器请求和路由器公告消息)确定其他地址和配置设置。由路由器发送的路由器公告消息中包含托管地址配置 (M) 标记和其他有状态配置 (O) 标记,这些标记指示主机是否应使用 DHCPv6 获取其他地址或配置设置。

IPv6 自动配置的类型

除了链接本地地址,主机还可以使用无状态自动配置根据收到的路由器公告消息配置地址和其他设置。这些消息可以包含一个或多个前缀信息选项,接收主机可以使用这些选项派生无状态地址。

同样,有状态自动配置指通过使用 DHCPv6 获取地址来配置地址和其他设置。当主机收到的路由器公告消息的 M 标记设置为 1 时,该主机使用有状态自动配置。

最后,主机还可以同时使用无状态和有状态自动配置,也就是既使用路由器公告中包含的地址,也使用从 DHCPv6 服务器获取的地址。

自动配置地址的状态

如果自动配置地址处于暂定状态,则表示重复地址检测 (DAD) 正验证其唯一性。有关如何执行 DAD 的信息,请参阅侧栏的“RFC 2462 IPv6 自动配置过程”。处于有效状态的地址经过验证是唯一的,并且可以用于发送和接收单播通信。有效状态包括首选状态和已否决状态。如果处于首选状态,则地址可以用于进行无限制通信。如果处于已否决状态,则地址不能用于新通信,但是使用该地址的现有通信可以继续进行。

RFC 2462 IPv6 自动配置过程

以下步骤描述了 RFC 2462 中定义的 IPv6 主机的自动配置过程:

  • 通过扩展唯一标识符 (EUI)-64 接口标识符 (ID) 派生一个暂定链接本地地址。
  • 通过发送邻居请求消息对该暂定链接本地地址执行 DAD,邻居请求消息中的目标地址设置为该暂定链接本地地址。
  • 如果收到响应邻居请求消息而发送的邻居公告消息,则该暂定链接本地地址是重复地址。停止地址自动配置。此时,必须对主机执行手动配置。
  • 如果没有收到为响应邻居请求消息而发送的邻居公告消息,则该暂定链接本地地址是唯一的。将此接口上的地址状态更改为首选。
  • 发送路由器请求消息。
  • 如果没有收到路由器公告消息,则使用 DHCPv6 获取地址和其他配置参数。
  • 如果收到了路由器公告消息,则为包含的前缀配置暂定地址,并对每个暂定地址执行重复地址检测。如果地址是唯一的,则将此接口上的地址状态更改为首选。
  • 如果路由器公告消息中的 M 标记设置为 1,则使用 DHCPv6 获取其他有状态地址。
  • 如果路由器公告消息中的 M 标记设置为 0 并且 O 标记设置为 1,则使用 DHCPv6 获取其他配置参数。

公告路由器或 DHCPv6 服务器指定地址前缀的有效生命周期和首选生命周期。超出地址的首选生命周期后,地址进入已否决状态。自动配置地址的首选生命周期在收到路由器公告后会刷新,还可以通过更新 DHCPv6 地址配置刷新。图 1 显示了自动配置地址的状态以及它们与首选生命周期和有效生命周期的关系。

图 1 自动配置地址的状态

图 1** 自动配置地址的状态 **(单击该图像获得较大视图)

除了自动配置链接本地地址之外,只能对 IPv6 主机指定地址自动配置。IPv6 路由器必须通过其他方式获取地址和配置参数,例如通过手动配置。

侧栏中的“RFC 2462 IPv6 自动配置过程”描述了 RFC 2462 定义的详细的主机 IPv6 地址自动配置过程。

Windows Vista 中的 IPv6 自动配置行为

运行 Windows Vista® 或 Windows Server® 2008(以前代号为“Longhorn”)的计算机默认情况下会为非临时自动配置的 IPv6 地址(包括公用地址和链接本地地址)生成随机接口 ID,而不是基于 EUI-64 的接口 ID。公用 IPv6 地址是全局地址,它在 DNS 中注册,服务器应用程序(例如 Web 服务器)通常将其用于传入的连接。您可以通过以下命令禁用此默认行为:

netsh interface ipv6 set global randomize­identifiers=disabled 

禁用后,IPv6 使用基于 EUI-64 的接口 ID。

利用随机派生的接口 ID,重复链接本地地址的机会很小。因此,运行 Windows Vista 或 Windows Server 2008 的计算机不用等待 DAD 完成即可使用其派生的链接本地地址发送路由器请求消息。这称为乐观 DAD;路由器发现和 DAD 同时执行,从而节省了接口初始化过程的时间。

如果没有收到路由器公告,运行 Windows Vista 或 Windows Server 2008 的计算机不会尝试通过 DHCPv6 执行有状态地址自动配置。

Windows Vista 中的 IPv6 自动配置过程

以下步骤描述运行 Windows Vista 的 IPv6 主机的自动配置过程:

  • 通过随机派生的接口 ID(默认设置)为 LAN 接口派生暂定链接本地地址。
  • 对派生的 LAN 接口链接本地地址执行 DAD(发送邻居请求消息,邻居请求消息的目标地址字段设置为该暂定链接本地地址)。
  • 对 LAN 接口执行路由器发现(以该暂定链接本地地址为源地址发送路由器请求消息)。
  • 如果收到了为响应步骤 2 中发送的邻居请求消息而发送的邻居公告消息,则将该链接本地地址标记为重复地址。
  • 如果没有收到为响应邻居请求消息而发送的邻居公告消息,则将该 LAN 接口上的链接本地地址的状态更改为首选。
  • 如果没有收到路由器公告消息,则停止对该 LAN 接口执行 IPv6 地址自动配置。转至步骤 13。
  • 如果收到路由器公告消息,则根据步骤 1 中派生的随机接口 ID 创建与消息中的全局或唯一的本地地址前缀相对应的暂定公用地址,并执行 DAD。
  • 使用随机派生的新随机接口 ID 创建与消息中的全局或唯一的本地地址前缀相对应的暂定公用地址,并执行 DAD。
  • 对于每个新地址,如果没有收到响应邻居请求消息的邻居公告消息,则将该 LAN 接口上的地址的状态更改为首选。
  • 如果路由器公告的 M 标记和 O 标记都设置为 0,则停止对 LAN 接口执行 IPv6 自动配置。转至步骤 13。
  • 如果路由器公告的 M 标记设置为 1,则使用 DHCPv6 获取有状态 IPv6 地址和其他配置设置。
  • 如果路由器公告消息中的 M 标记设置为 0 并且 O 标记设置为 1,则使用 DHCPv6 获取其他配置设置。
  • 根据 LAN 接口的 IPv4 地址派生链接本地 ISATAP 地址,并将其分配给 ISATAP 隧道接口。
  • 尝试将主机名称“ISATAP”解析为 IPv4 地址。
  • 如果无法解析主机名称“ISATAP”,则停止 IPv6 配置。
  • 如果可以将主机名称“ISATAP”解析为 IPv4 地址,则向 ISATAP 路由器发送 IPv4 封装的路由器请求。
  • 如果从该 ISATAP 路由器收到了路由器公告,则创建与已播发的全局或唯一本地地址前缀相对应的其他 ISATAP 地址,并将其分配给 ISATAP 隧道接口。

自动对 Windows Vista 配置地址

如前所述,Windows Vista 和 Windows Server 2008 的 IPv6 协议自动使用随机派生的接口标识符对所有 LAN 接口配置链接本地地址。

如果收到的路由器公告包含一个全局或唯一本地前缀,则 IPv6 会使用相同的随机派生接口 ID 配置全局或唯一本地地址,并将其分配给收到路由器公告的 LAN 接口。此类地址称为公用地址。

默认情况下,Windows Vista 中的 IPv6 还会使用不同的随机派生接口 ID 配置临时全局或唯一本地地址,并将其分配给收到路由器公告的 LAN 接口。临时地址在 RFC 3041 中定义,在一定程度上使客户端发起的通信成为匿名通信。而 Windows Server 2008 中的 IPv6 默认情况下不创建临时地址。您可以使用以下命令启用临时地址:

netsh interface ipv6 set privacy-enabled

如果收到的路由器公告消息中的 M 标记设置为 1,则 IPv6 使用 DHCPv6 对 LAN 接口配置其他全局或唯一本地地址。

IPv6 还会为该主机的每个 LAN 接口创建一个站内自动隧道寻址协议 (ISATAP) 隧道接口。RFC 4214 描述了 ISATAP IPv6 转换技术。利用 ISATAP,IPv6 主机可以通过使用 IPv4 头封装 IPv6 包在仅支持 IPv4 的 Intranet 内进行通信。有关 ISATAP 的详细信息,请参阅“IPv6 转换技术”。

对于每个 ISATAP 隧道接口,IPv6 都会为分配给其相应 LAN 端口的 IPV4 地址配置链接本地 ISATAP 地址。例如,如果一个 LAN 接口分配的 IPv4 地址为 192.168.91.211,则对于与之相对应的 ISATAP 隧道接口,IPv6 会为其分配链接本地 ISATAP 地址 FE80::0:5EFE:192.168.91.211。

ISATAP 主机还执行 ISATAP 路由器发现。为了从 ISATAP 路由器接收路由器公告,IPv6 默认情况下必须能够将主机名称“ISATAP”解析为 IPv4 地址。这是通过基于 Windows 的主机名称解析方法(如 DNS)完成的。解析该名称后,主机向 ISATAP 路由器发送 IPv4 封装的路由器请求。然后,ISATAP 路由器会向该主机发送 IPv4 封装的路由器公告。根据收到的路由器公告内容,IPv6 还对 ISATAP 隧道接口配置全局或唯一本地 ISATAP 地址。

Windows Vista 还支持 6to4 和 Teredo 转换技术。但是,为了简化问题,在此我不讨论基于 Windows Vista 的 IPv6 主机如何自动配置 6to4 和 Teredo 隧道接口。

侧栏的“Windows Vista IPv6 自动配置过程”描述了基于 Windows Vista 的 IPv6 主机的地址自动配置过程,该主机的一个 LAN 接口是通过对其 LAN 或 ISATAP 隧道接口添加全局或唯一本地地址前缀配置的。

例如,一个运行 Windows Vista 的主机具有一个 LAN 接口。在该主机的 LAN 接口收到的路由器公告中,M 和 O 标记设置为 0,并且包含前缀 2001:DB8:D005:F282::/64 和 FD4A:3A9:27A1:F282::/64。该主机没有收到来自 ISATAP 路由器的路由器公告消息。图 2 是对该示例主机运行命令

Figure 2 netsh interface ipv6 show address 的输出

Interface 1: Loopback Pseudo-Interface 1

Addr Type DAD State Valid Life Pref. Life Address
--------- ----------- ---------- ---------- ------------------------
Other   Preferred  infinite infinite ::1

Interface 8: Local Area Connection

Addr Type DAD State Valid Life Pref. Life Address
--------- ----------- ---------- ---------- ------------------------
Temporary Preferred 6d19h37m21s 6d19h37m21s 2001:db8:d005:f282:ed46:5dd4:5439:2e1c
Public  Preferred  infinite infinite 2001:db8:d005:f282:3521:12fa:2c44:87d1
Temporary Preferred 6d19h37m21s 6d19h37m21s fd4a:3a9:27a1:f282:ed46:5dd4:5439:2e1c
Public   Preferred  infinite infinite fd4a:3a9:27a1:f282:3521:12fa:2c44:87d1
Other   Preferred  infinite infinite fe80::3521:12fa:2c44:87d1%8

Interface 17: Local Area Connection* 9

Addr Type DAD State Valid Life Pref. Life Address
--------- ----------- ---------- ---------- ------------------------
Other   Preferred  infinite infinite fe80::5efe:10.47.181.92%17

netsh interface ipv6 show address

后得到的输出结果示例。在该图中,与名为“本地连接”的 LAN 接口对应的 ISATAP 隧道接口名为“本地连接* 9”。

除了自动配置地址外,Windows Server 2008 和 Windows Vista 的 IPv6 协议还支持使用以下命令

netsh interface ipv6 add address

或通过“网络连接”文件夹中连接属性的 Internet 协议版本 6 (TCP/IPv6) 组件手动配置静态 IPv6 地址。

在本月的专栏中,我假设您已经对 IPv6 寻址和协议操作有了大致了解。如果您需要有关此主题的更多信息,我建议您从“IPv6 简介”白皮书开始,该白皮书可以从以下位置找到:microsoft.com/technet/ network/ipv6/introipv6.mspx

Joseph Davies是 Microsoft 的一位技术撰稿人,从 1992 年起一直从事 Windows 网络主题的培训和编写工作。他曾为 Microsoft Press 编写了五本著作,是每月的在线 TechNe 网络专家专栏的作者。

© 2008 Microsoft Corporation 与 CMP Media, LLC.保留所有权利;不得对全文或部分内容进行复制.