网络专家使用 ISATAP 将您的 Intranet 迁移到 IPv6

Joseph Davies

这篇文章基于 Windows Server 2008 的预发布版。文中的所有信息均可能发生变更。

对 Internet 协议版本 6 (IPv6) 的一个常见误解是:为了使用 IPv6,必须部署本机 IPv6 寻址和路由,而这需要对 IPv6 寻址方案、路由器更新和配置以及实施时间表进行深入的分析。虽然最终应针对本机

IPv6 连接完成这一操作,但您可以使用站内自动隧道寻址协议 (ISATAP) 轻松地部署隧道 IPv6 连接。通过隧道 IPv6 连接,支持 ISATAP 的主机可以使用由 IPv4 报头封装的 IPv6 通信进行沟通(IPv4 协议字段设为 41)。ISATAP 通信可遍历仅使用 IPv4 的 Intranet,因此您可以立即测试具有 IPv6 功能的应用程序,而无需等待本机 IPv6 基础结构的完成。

ISATAP 是在 RFC 4214 中定义的地址分配和自动隧道技术,它能够在仅使用 IPv4 的 Intranet 中提供 IPv6/IPv4 主机间的单播 IPv6 连接。ISATAP 主机使用分配了 ISATAP 地址的逻辑隧道接口,这些地址的格式为 UnicastPrefix:0:5EFE:w.x.y.z(当 w.x.y.z 是分配给 ISATAP 主机的私有 IPv4 地址时)或 UnicastPrefix:200:5EFE:w.x.y.z(当 w.x. y.z 是分配给 ISATAP 主机的公共 IPv4 地址时)。UnicastPrefix 为任意 64 位单播地址前缀,包括链接本地、全局和唯一的本地前缀。ISATAP 地址的示例如 2001:DB8::98CA:200:131.107.28.9 和 2001:DB8::98CA:0:10.91.211.17。

使用 ISATAP 将 Intranet 迁移到 IPv6

ISATAP 部署包含一个或多个逻辑 ISATAP 子网,这些子网是分配了 64 位 IPv6 子网前缀的仅使用 IPv4 的网络。在逻辑 ISATAP 子网上有 ISATAP 主机和 ISATAP 路由器。ISATAP 主机使用 ISATAP 隧道接口来封装 IPv6 通信。此通信可直接发送到同一逻辑 ISATAP 子网上的其他 ISATAP 主机。要到达位于其他 ISATAP 子网或本机 IPv6 子网上的其他目的地,必须将通信发送到 ISATAP 路由器。ISATAP 路由器是一个 IPv6 路由器,它将子网前缀播发给 ISATAP 主机,并在 ISATAP 主机和其他 IPv6 子网上的主机之间转发 IPv6 通信。图 1 显示了在一个简单的 Intranet 上 ISATAP 的组成部分。

图 1 仅使用 IPv4 和具有 IPv6 功能的 Intranet 部分

图 1** 仅使用 IPv4 和具有 IPv6 功能的 Intranet 部分 **(单击该图像获得较大视图)

ISATAP 允许您分三个阶段在 Intranet 上部署本机 IPv6 寻址和路由功能。

第一阶段:仅使用 IPv4 的 Intranet 在此阶段,您的整个 Intranet 可以是单个逻辑 ISATAP 子网。图 2 显示了具有 ISATAP 路由器的仅使用 IPv4 的 Intranet 示例,该路由器仅将全局或唯一的本地地址前缀播发给 ISATAP 主机。

图 2 仅使用 IPv4 的 Intranet

图 2** 仅使用 IPv4 的 Intranet **(单击该图像获得较大视图)

第二阶段:仅使用 IPv4 和具有 IPv6 功能的 Intranet 部分 在此中间阶段,您的 Intranet 同时具有仅使用 IPv4 的部分(逻辑 ISATAP 子网)和具有 IPv6 功能的部分。具有 IPv6 功能的 Intranet 部分支持 IPv4,而且已更新为支持本机 IPv6 寻址和路由。您可在图 1 中看到此配置。

第三阶段:具有 IPv6 功能的 Intranet 在此最终阶段,您的整个 Intranet 同时支持 IPv4 及本机 IPv6 寻址和路由。请注意,此时不再需要 ISATAP。图 3 就是一个示例。

图 3 具有 IPv6 功能的 Intranet

图 3** 具有 IPv6 功能的 Intranet **(单击该图像获得较大视图)

使用 ISATAP,可在 Intranet 从仅使用 IPv4 过渡到具有 IPv6 功能的前两个阶段期间提供主机和应用程序之间的 IPv6 连接。

Windows Server 2008 和 Windows Vista

Windows Server® 2008 和 Windows Vista® 使用的 IPv6 协议支持将 ISATAP 作为 ISATAP 主机和 ISATAP 路由器。对于安装在具有不同 DNS 后缀的计算机中的每个 LAN 接口,均有单独的 ISATAP 隧道接口。例如,如果运行 Windows Vista 的计算机具有两个 LAN 接口,而且它们都连接到相同的 Intranet 并且分配相同的 DNS 后缀,则只会有一个 ISATAP 隧道接口。如果这两个 LAN 接口连接到两个 DNS 后缀不同的网络,则将有两个 ISATAP 隧道接口。对于运行 Windows Server 2008 或 Windows Vista SP1 的计算机而言,除非名称“ISATAP”可以进行解析,否则 ISATAP 隧道接口将被置于媒体断开状态。

默认情况下,对于分配到相应 LAN 接口的 IPv4 地址,未安装服务包的 Windows Vista 所使用的 IPv6 协议会自动在 ISATAP 隧道接口上为其配置本地链接 ISATAP 地址(FE80::5EFE:w.x.y.z 或 FE80::200:5EFE:w.x.y.z)。

Windows Server 2008 和 Windows Vista SP1 所使用的 IPv6 协议仅当名称“ISATAP”可以解析时,才会在 ISATAP 隧道接口上配置本地链接 ISATAP 地址。

要接收来自 ISATAP 路由器的路由器播发消息,ISATAP 主机必须向 ISATAP 路由器发送路由器请求消息。在以太网子网上,本机 IPv6 主机发送多播路由器请求消息,随后该子网上的路由器将使用路由器播发消息进行响应。因为 ISATAP 不使用 IPv4 多播通信,也不需要具有 IPv4 多播功能的基础结构,所以 ISATAP 主机必须将路由器请求消息单播至 ISATAP 路由器。

要将路由器请求消息单播至 ISATAP 路由器,ISATAP 主机必须首先确定逻辑 ISATAP 子网上 ISATAP 路由器接口的单播 IPv4 地址。对于 Windows Server 2008 和 Windows Vista 所使用的 IPv6 协议,ISATAP 主机通过将主机名“ISATAP”成功解析为 IPv4 地址,或者使用 netsh interface isatap set router 命令来获取 ISATAP 路由器的单播 IPv4 地址。

迁移您的 Intranet:第一阶段

对于迁移至 IPv6 的第一阶段,为了在 Intranet 上部署 ISATAP,您需要执行以下步骤。

确定 ISATAP 子网前缀 必须确定要分配给 Intranet 相应逻辑 ISATAP 子网的 64 位子网前缀。可从 ISP 或 Internet 注册机构获取 48 位前缀,也可以派生您自己的 48 位唯一本地前缀(请参阅 tools.ietf.org/html/rfc4193 上的在线 RFC 4193)。

根据 48 位前缀为逻辑 ISATAP 子网选择一个 16 位子网 ID。48 位前缀和 16 位子网 ID 的组合为 64 位 ISATAP 子网前缀。例如,48 位唯一本地前缀 FD8A:219C:052A::/48 和子网 ID 1 形成 64 位子网前缀 FD8A:219C:052A:1::/64。

指定 ISATAP 路由器计算机 确定哪台计算机将成为 ISATAP 路由器。尽管许多商用路由器都支持 ISATAP 路由器功能,但此处所述的信息专门针对运行 Windows Server 2008 的计算机。

ISATAP 路由器计算机既不需要多个 LAN 接口,也不需要在第一阶段连接到具有 IPv6 功能的 Intranet 部分;但是,所选择的计算机应在今后能够使用附加 LAN 接口(连接到具有 IPv6 功能的 Intranet 部分)进行更新。

配置 ISATAP 路由器计算机 在 ISATAP 路由器计算机上,发出以下命令可将 ISATAP 路由器计算机上的 ISATAP 路由器隧道接口置于媒体连接状态:

netsh interface isatap set router IPv4Address 

IPv4Address 是分配给连接到逻辑 ISATAP 子网的 ISATAP 路由器计算机 LAN 接口的 IPv4 地址。

接下来,确定 ISATAP 隧道接口的名称或接口索引,该接口对应于连接到逻辑 ISATAP 子网的 ISATAP 路由器计算机的 LAN 接口,所有信息均来自以下命令的输出:

netsh interface ipv6 show interfaces

之后,使用以下命令启用 ISATAP 接口上的播发:

netsh interface ipv6 set interface ISATAPInterfaceNameOrIndex advertise=enabled

ISATAPInterfaceNameOrIndex 是 ISATAP 隧道接口的名称或接口索引。

下一步,使用以下命令将 ISATAP 路由器计算机配置为向 ISATAP 主机播发 ISATAP 子网前缀:

netsh interface ipv6 add route ISATAPSubnetPrefix ISATAPInterfaceNameOrIndex publish=yes

ISATAPSubnetPrefix 由 ISATAP 子网前缀确定

配置 DNS 在 DNS 中,将名称 ISATAP 的地址 (A) 记录添加到相应域,以便 Intranet 上的 ISATAP 主机能够成功地解析名称“ISATAP”。例如,如果您的 Intranet 主机使用 contoso.com DNS 后缀,则现在必须针对名称 isatap.contoso.com 将一条 A 记录添加到 contoso.com 域,该名称具有分配给 ISATAP 路由器的 LAN 接口(位于仅使用 IPv4 的 Intranet 上)的 IPv4 地址。

如果 DNS 服务器正在运行 Windows Server 2008,则在 DNS 服务器上使用注册表编辑器 (regedit.exe),以便从 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\DNS\Parameters\GlobalQueryBlockList 注册表值中删除 ISATAP 条目。

测试 ISATAP 主机 在 Intranet 上的 ISATAP 主机中,使用 Ipconfig 工具查看所分配的地址。ISATAP 主机的地址形式应为 ISATAPSubnetPrefix::5EFE:w.x.y.z 或 ISATAPSubnetPrefix::200:5EFE:w.x.y.z。例如,如果您的 ISATAP 子网前缀为 FD8A:219C:052A:1::/64,并且 ISATAP 主机的 IPv4 地址为 10.1.31.97,则分配给 ISATAR 主机的 ISATAP 隧道接口地址应该是 FD8A:219C:052A:1::5FE:10.1.31.97。

如果 ISATAP 主机的地址不以 ISATAP 子网前缀的 ISATAP 地址为基础,则验证主机是否能够解析名称“ISATAP”。如果不能,则验证是否在相应域中创建了 A 记录;对于正在运行 Windows Server 2008 的 DNS 服务器,还需验证是否已修改了 GlobalQueryBlockList 注册表值,以便删除 ISATAP 条目。如果名称可以进行解析,则验证是否已正确配置了 ISATAP 路由器计算机。如果已配置正确,则验证 Intranet 上的路由器是否允许转发 IPv4 协议 41 通信。

当 ISATAP 主机能够使用基于 ISATAP 子网前缀的地址成功地配置自身时,它们将在 DNS 中把这些 ISATAP 地址注册为 AAAA 记录,并开始将它们用于基于 IPv6 的连接。

迁移您的 Intranet:第二阶段

在迁移到 IPv6 的第二阶段,您需要修改 ISATAP 路由器配置,以便在仅使用 IPv4 和具有 IPv6 功能的 Intranet 部分之间执行转发。

在 ISATAP 路由器计算机上,发出以下命令:

netsh interface ipv6 show interfaces

根据上述命令的输出,确定连接到具有 IPv6 功能的 Intranet 部分的 LAN 接口以及 ISATAP 隧道接口的名称或接口索引。

使用以下命令启用 ISATAP 接口上的转发:

netsh interface ipv6 set interface ISATAPInterfaceNameOrIndex forwarding=enabled

使用以下命令启用 LAN 接口上的转发:

netsh interface ipv6 set interface LANInterfaceNameOrIndex forwarding=enabled

LANInterfaceNameOrIndex 是 LAN 接口的名称或接口索引。

使用以下命令为 ISATAP 路由器添加默认路由:

netsh interface ipv6 add route ::/0 LANInterfaceNameOrIndex NextHopAddress publish=yes

NextHopAddress 是具有 IPv6 功能的 Intranet 部分上相邻本机 IPv6 路由器的 IPv6 地址。

为了能够从具有 IPv6 功能的 Intranet 部分访问逻辑 ISATAP 子网,使用指回到 ISATAP 路由器计算机的 ISATAP 子网前缀的路由来配置本机 IPv6 路由器非常重要。

为了针对具有 IPv6 功能的 Intranet 部分上的计算机有选择地禁用 ISATAP,请在 DNS 中处理名称 ISATAP 的 A 记录,以便具有 IPv6 功能的 Intranet 部分上的计算机无法解析名称 ISATAP。

可供选择的另一个选项是创建 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tcpip6\Parameters\DisabledComponents 注册表,并将其值设置为 0x4(DWORD 类型)。

迁移您的 Intranet:第三阶段

对于第三阶段,当整个 Intranet 都具有 IPv6 功能时,需要通过 DNS 删除 ISATAP 部署,然后重新配置 ISATAP 路由器计算机。对于 DNS,删除名称 ISATAP 的所有 A 记录。这将防止任何主机确定 ISATAP 路由器的 IPv4 地址。

对于 ISATAP 路由器计算机,运行以下命令:

netsh interface isatap set router default 

此命令将 ISATAP 组件重置回其默认状态。

根据以下命令的输出,确定 ISATAP 隧道接口的名称或接口索引:

netsh interface ipv6 show interfaces

使用以下命令禁用 ISATAP 接口上的转发和播发:

netsh interface ipv6 set interface ISATAPInterfaceNameOrIndex forwarding=disabled advertise=disabled

使用以下命令从 ISATAP 路由器计算机上删除 ISATAP 子网前缀路由:

netsh interface ipv6 delete route ISATAPSubnetPrefix ISATAPInterfaceNameOrIndex

ISATAPSubnetPrefix 为 ISATAP 子网前缀。

有关 ISATAP 部署的更多信息,包括冗余 ISATAP 路由器和防火墙注意事项的详细信息,请参阅 go.microsoft.com/fwlink/?LinkId=106926 处的“站内自动隧道寻址协议部署指南”。

Joseph Davies 是 Microsoft 的一位技术撰稿人,从 1992 年起一直从事 Windows 网络主题的培训和编写工作。他曾为 Microsoft Press 编写了八本著作,是每月在线 TechNet 网络专家专栏的作者。可从 microsoft.com/technet/community/columns/cableguy/about.mspx 阅读有关网络专家的详细信息。

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