运行 Windows Vistareg; 或 Windows Serverreg; 2008(以前代号为“Longhorn”)的计算机默认情况下会为非临时自动配置的 IPv6 地址(包括公用地址和链接本地地址)生成随机接口 ID,而不是基于 EUI-64 的接口 ID。公用 IPv6 地址是全局地址,它在 DNS 中注册,服务器应用程序(例如 Web 服务器)通常将其用于传入的连接。您可以通过以下命令禁用此默认行为:
netsh interface ipv6 set global randomizeshy;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(发送邻居请求消息,邻居请求消息的目标地址字段设置为该暂定链接本地地址)。
如前所述,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 接口配置其他全局或唯一本地地址。
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 是对该示例主机运行命令
netsh interface ipv6 show address
后得到的输出结果示例。在该图中,与名为“本地连接”的 LAN 接口对应的 ISATAP 隧道接口名为“本地连接* 9”。
除了自动配置地址外,Windows Server 2008 和 Windows Vista 的 IPv6 协议还支持使用以下命令
netsh interface ipv6 add address
或通过“网络连接”文件夹中连接属性的 Internet 协议版本 6 (TCP/IPv6) 组件手动配置静态 IPv6 地址。