手动配置 IPv6
在大多数情况下,运行 Windows XP 或 Windows Server 2003 家族成员之一的 IPv6 主机不必采用手动配置。然而在某些情况下,您必须对计算机手动配置 IPv6 地址。此外,有时某台计算机在网络上还具有特殊的作用。
下面几节将描述如何手动为以下对象配置 IPv6 :
• |
手动配置 IPv6 地址。 |
• |
IPv6 路由器。 |
• |
6to4 路由器。 |
• |
站点内自动隧道寻址协议(ISATAP)路由器。 |
• |
6over4 路由器。 |
手动配置 IPv6 地址
Windows XP 和 Windows Server 2003 家族的 IPv6 协议支持无状态的地址自动配置,使用该协议,地址、路由和其它配置参数将基于接收到的 Router Advertisement(路由器通告)消息来自动配置。然而,如果您想配置 IPv6 地址(不使用路由器通告)或任何 cast 地址,比如 DNS 的任何 cast 地址,您可以使用netsh interface IPv6 add address命令来手动配置 IPv6 地址。这个命令的语法如下:
netsh interface ipv6 add address InterfaceNameOrIndex IPv6Address [[type=]unicast|anycast] [[validlifetime=]Minutes|infinite] [[preferredlifetime=]Minutes|infinite] [[store=]active|persistent]
默认情况下,地址类型是单播的(unicast),有效和首选的生存期是无限的(infinite),并且地址是持久的(persistent)。为了获得接口名称或其索引,您可以使用netsh interface IPv6 show interface命令的显示。
例如,要在名为 Local Area Connection 的接口上配置站点局部地址 FEC0::1A49:2AA:FF:FE34:CA8F,相应的命令为:
netsh interface ipv6 add address "Local Area Connection" fec0::1a49:2aa:ff:fe34:ca8f
要改变某个现有地址,可使用netsh interface IPv6 set address命令。要删除一个地址,可使用netsh interface IPv6 delete address命令。
IPv6 路由器
IPv6 路由器不仅在接口之间转发 IPv6 包,而且同时通告它的存在性和位于直接连接的子网上的主机的无状态自动配置信息。这是通过发送 Router Advertisement 消息来实现的。运行Windows XP或Windows Server 2003家族成员之一的计算机可以配置为一个静态路由器和一个通告路由器。静态路由器不使用路由协议来维护 IPv6 路由表中的路由。
为了创建一个静态 IPv6 路由器,您必须在必需的接口上启用转发和通告。IPv6 路由器不必安装两个LAN接口。 例如,对于一个ISATAP路由器,您可以仅有单个LAN接口,并在该LAN接口上启用转发,在自动隧道伪接口(Automatic Tunneling Pseudo-Interface)上同时启用转发和通告。有关ISATAP的更多信息,请参见本文的“ISATAP路由器”一节。
如要在某个接口上启用转发和通告,请使用以下命令:
netsh interface ipv6 set interface InterfaceNameOrIndex [forwarding=]enabled|disabled] [[advertise=]enabled|disabled] [[mtu=]MTUSize] [[store=]active|persistent]
默认禁用转发和路由,MTU 大小是接口所报告的链路 MTU,并且接口设置是持久的。
例如,假设正在将一台运行 Windows Server 2003 系列的成员之一的计算机配置为一个路由器。 它具有三个分别名为 Local Area Connection、Local Area Connection 2和Local Area Connection 3 的接口。 为了在 Local Area Connection 和 Local Area Connection 2 上启用转发和通告,以及在Local Area Connection 3 上启用转发,相应的命令为:
netsh interface ipv6 set interface "Local Area Connection" forwarding=enabled advertise=enabled netsh interface ipv6 set interface "Local Area Connection 2" forwarding=enabled advertise=enabled netsh interface ipv6 set interface "Local Area Connection 3" forwarding=enabled
Local Area Connection 3接口被连接到一个已经包含通告路由器的子网。
在这些命令运行之后,该路由器通过 Local Area Connection 和 Local Area Connection 2 接口发送 Router Advertisement 消息。 然而,它们没有包含任何 Prefix Information(前缀信息)或 Route Information(路由信息)选项,以供所连接子网上的主机自动配置地址和路由。 现在必须给路由器配置要发布的路由。
要添加一个路由,请使用以下命令:
netsh interface ipv6 add route IPv6Address/ PrefixLength InterfaceNameOrIndex [[nexthop=]IPv6Address] [[publish=]no|age|yes] [[validlifetime=]Minutes|infinite] [[preferredlifetime=]Minutes|infinite] [[store=]active|persistent]
默认情况下,不存在下一跳地址(前缀是“在链路上的[on-link]),路由不公布,有效和首选的生存期是无限的(infinite),并且路由是持久的。
例如,为了在 Local Area Connection 上添加路由并公布在链路上的站点局部前缀 FEC0:0:0:1::/64,然后在 Local Area Connection 2 上添加在链路上的站点局部前缀 FEC0:0:0:2::/64,相应的命令为:
netsh interface ipv6 add route fec0:0:0:1::/64 "Local Area Connection" publish=yes netsh interface ipv6 add route fec0:0:0:2::/64 "Local Area Connection 2" publish=yes
对于这个配置,路由器将不把它自己作为默认路由器来通告。 FEC0:0:0:1::/64和FEC0:0:0:2::/64 子网上的主机自动配置适当的地址,并向它们的路由表添加必需的路由,但是它们不会配置一个默认路由(::/0)。运行 Windows Server 2003 系列或 Windows XP 的 IPv6 协议的计算机不会把它自己作为默认路由器来通告,除非存在一个配置为要公布的默认路由。
为了将 FEC0:0:0:1::/64 和 FEC0:0:0:2::/64 子网上的路由器配置为默认路由器,您必须向路由器添加一个默认路由并公布它。例如,如果 Local Area Connection 3 上的子网包含一个链路局部地址为 FE80::2AA:FF:FE98:2AB1 的路由器,下面的命令将向该静态路由器添加一个默认路由并公布它:
netsh interface ipv6 add route ::/0 "Local Area Connection 3" nexthop=fe80::2aa:ff:fe98:2ab1 publish=yes
6to4 路由器
6to4 是一种地址分配和自动隧道技术,用于通过 IPv4 Internet 提供 IPv6 站点和主机之间的单播 IPv6 连接。有关 6to4 的更多信息,请参见IPv6 入门(Cable Guy,2001 年 7 月文章)和 RFC 3056。
运行 Windows XP 和 Windows Server 2003 家族成员之一的计算机可以用作 6to4 路由器,它是在您启用连接到 Internet 的接口上的 “Internet 连接共享(ICS)” 时自动配置的。然而,如果您不希望启用 ICS,但是又想让该计算机充当 6to4 路由器,那么您必须手动配置 6to4 路由器功能。
要将运行 Windows Server 2003 家族成员之一或 Windows XP 的计算机手动配置为 6to4 路由器,您必需完成以下步骤:
• |
确保 6to4 路由器计算机给它的 Internet 接口分配一个公共地址,并且没有接收到来自连接的子网上的 IPv6 路由器或者 ISATAP 路由器的 Router Advertisement 消息。如果事实就是这样,6to4 组件将自动创建一个名为 6to4 Pseudo-Interface 的接口,并向使用 6to4 Pseudo-Interface 的路由表添加一个 2002::/16 路由,然后添加一个指向 IPv4 Internet 上的 6to4 中继路由器的默认路由。 |
• |
在连接到 intranet 的接口上启用转发和通告。这可以通过以下命令来完成: netsh interface ipv6 set interface InterfaceNameOrIndex forwarding=enabled advertise=enabled |
• |
在 6to4 Pseudo-Interface上启用转发。这可以通过以下命令来完成: netsh interface ipv6 set interface "6to4 Pseudo-Interface" forwarding=enabled |
• |
向连接到 intranet 的接口添加 6to4 前缀的路由,并配置其进行公布。这可以通过以下命令来完成: netsh interface ipv6 add route 2002:WWXX:YYZZ: SubnetID::/64 InterfaceNameOrIndex publish=yes |
WWXX:YYZZ是w.x.y.z的冒号分隔的十六进制表示形式,它是分配给连接到 Internet 的接口的公共 IPv4 地址。 SubnetID用于识别 6to4 站点中单独的子网。
例如,某台计算机有三个 LAN 接口,这些接口具有如下配置:
• |
Local Area Connection(局域网连接)连接到 Internet,并被赋予公共 IPv4 地址:131.107.0.1。 |
• |
Local Area Connection 2是一个正在使用接口索引 5 的 intranet 接口。 |
• |
Local Area Connection 3 是一个正在使用接口索引 6 的 intranet 接口。 |
要将这台计算机配置为一个 6to4 路由器(假设它还没有接收到路由器通告),请运行以下命令:
netsh interface ipv6 set interface "Local Area Connection 2" forwarding=enabled advertise=enabled netsh interface ipv6 set interface "Local Area Connection 3" forwarding=enabled netsh interface ipv6 set interface "6to4 Pseudo-Interface" forwarding=enabled netsh interface ipv6 add route 2002:836b:1:5::/64 "Local Area Connection 2" publish=yes netsh interface ipv6 add route 2002:836b:1:6::/64 "Local Area Connection 3" publish=yes
对于这个例子,前缀 2002:836B:1:5::/64 通过 Local Area Connection 2 来通告,前缀 2002:836B:1:6::/64 通过 Local Area Connection 3 来通告(836B:1 是公共 IPv4 地址 131.107.0.1 的十六进制冒号分隔表示形式)。根据约定,子网 ID 被设置为用于通告前缀的接口的接口索引。 您可以指定自己想要的任何子网 ID(从 0 到 0xFFFF)。
ISATAP 路由器
ISATAP 是一种地址分配和自动隧道技术,它用于提供 IPv4 intranet 上的 IPv6 主机之间的单播 IPv6 连接。ISATAP 是在标题为“站点内自动隧道寻址协议(ISATAP)”(draft-ietf-ngtrans-isatap-0x)的 Internet 草案中描述的。默认情况下,Windows XP 和 Windows Server 2003 的 IPv6 协议在自动隧道伪接口(Automatic Tunneling Pseudo-Interface)上为分配给计算机的每个 IPv4 地址配置链路局部 ISATAP 地址。
为了配置站点局部或全局 ISATAP 地址,或者跨越 IPv4 intranet 所定义的逻辑子网之外进行通信,您需要一个 ISATAP 路由器。ISATAP 路由器执行以下功能:
• |
在 IPv4 intranet 上的 ISATAP 主机和 IPv4 intranet 之外的 IPv6 主机之间转发 IPv6 包。 |
• |
通告它的存在和地址前缀,以便配置站点局部或全局 ISATAP 地址。 |
ISATAP 路由器能够执行其中任何一种功能,不过通常将它配置为同时执行这两种功能。 绝大多数情况下,ISATAP 路由器充当 IPv4 intranet 上的 ISATAP 主机和某个 intranet 上支持 IPv6 的部分网段上的 IPv6 主机之间的转发器。
例如,ISATAP 路由器能够连接到两个在物理上分离的网络:一个IPv4 intranet 和一个 IPv6 intranet。 对于这种情况,ISATAP 路由器至少要有两个 LAN 接口,其中至少要有一个连接到 IPv4 intranet,至少要有一个连接到支持 IPv6 的 intranet。 为了使这台计算机能够成为一个 ISATAP 路由器,您必须完成以下步骤:
• |
在连接到支持 IPv6 的 intranet 的LAN接口上启用转发功能。这可以通过以下命令来完成: netsh interface ipv6 set interface InterfaceNameOrIndex forwarding=enabled |
• |
在自动隧道伪接口(Automatic Tunneling Pseudo-Interface)上启用转发和通告。这可以通过以下命令来完成: netsh interface ipv6 set interface "Automatic Tunneling Pseudo- Interface" forwarding=enabled advertise=enabled |
• |
将 IPv4 intranet 的逻辑子网的子网 ID 的路由添加到自动隧道伪接口(Automatic Tunneling Pseudo-Interface),并设定对其进行通告。这可以通过以下命令来完成: netsh interface ipv6 add route IPv6Address/PrefixLength "Automatic Tunneling Pseudo-Interface" publish=yes |
• |
添加一个默认路由(使用连接到 IPv6 intranet 的 LAN 接口),并设定对其进行通告。这可以通过以下命令来完成: netsh interface ipv6 add route ::/0 InterfaceNameOrIndex nexthop=IPv6Address publish=yes |
例如,某台计算机具有两个 LAN 接口,一个连接到名为 Local Area Connection 的 IPv4 intranet,另一个连接到名为 Local Area Connection 2 的支持 IPv6 的 intranet。 分配给 IPv4 intranet 的逻辑子网的子网 ID 是 3FFE:FFFF:0:10::/64 和 FEC0:0:0:10::/64。该计算机使用名为 Local Area Connection 2 的接口所连接到的 IPv6 intranet上的一个默认路由器,并且这个路由器的下一跳地址为 FE80::2AA:FF:FE98:2AB1。 为了将这台计算机配置为一个 ISATAP 路由器,请运行以下命令:
netsh interface ipv6 set interface "Local Area Connection 2" forwarding=enabled netsh interface ipv6 set interface "Automatic Tunneling Pseudo-Interface" forwarding=enabled advertise=enabled netsh interface ipv6 add route 3ffe:ffff:0:10::/64 "Automatic Tunneling Pseudo-Interface" publish=yes netsh interface ipv6 add route fec0:0:0:10::/64 "Automatic Tunneling Pseudo-Interface" publish=yes netsh interface ipv6 add route ::/0 "Local Area Connection 2" nexthop=fe80::2aa:ff:fe98:2ab1 publish=yes
IPv4 intranet 上运行 Windows XP Service Pack 1 或运行 Windows Server 2003 家族成员之一的 ISATAP 主机通过尝试解析名称 “ISATAP” 来发现该 ISATAP 路由器。为确保成功解析这个名称,您可以将该路由器计算机命名为“ISATAP”,或者向您的 DNS 基础结构添加适当的主机地址(A)或规范名称(canonical name,CNAME)记录。所使用的资源记录必须将名称“ISATAP” 解析为该 ISATAP 路由器的 intranet 接口的IPv4地址。
如果该ISATAP路由器的名称不是 “ISATAP”,或者名称 “ISATAP” 没有被解析为 IPv4 intranet 接口的 IPv4 地址,您需要在该ISATAP路由器和所有 ISATAP 主机上运行以下命令:
netsh interface ipv6 isatap set state router=AddressOrName
AddressOrName或者是路由器 intranet 接口的 IPv4 地址,或者是解析出这个地址的路由器的名称。
注意:IPv4 intranet 上的 ISATAP 主机通过尝试解析名称“_ISATAP”而不是解析“ISATAP”来发现 ISATAP 路由器。
6over4 路由器
6to4 也称为 IPv4 多播隧道,这是一种自动隧道技术,用于通过站点中支持多播的IPv4 intranet 提供 IPv6 节点之间的单播或多播连接。6over4 在 RFC 2529 中有所描述。默认禁用 Windows XP 和 Windows Server 2003 家族中可用于 IPv6 协议的 6over4。如要启用 6over4 并创建一个 6over4 接口,您可以运行以下命令:
netsh interface ipv6 add 6over4tunnel 6over4InterfaceName IPv4Address [[store=]active|persistent]
6over4 InterfaceName是 6over4 接口的名称,IPv4Address是用于基于 6over4 的接口 ID 的 IPv4 公共或专用地址。默认情况下,6over4 接口是持久的。
例如,为了创建一个名为 6over4 Tunnel Interface 的 6over4 接口(它使用一个基于被分配的 IPv4 地址 10.60.90.21 的一个接口ID),您可以运行以下命令:
netsh interface ipv6 add 6over4tunnel "6over4 Tunnel Interface" 10.60.90.21
在启用之后,6over4 就类似于 ISATAP,只不过它还支持多播 IPv6 流量。然而, 6over4 需要一个支持多播的 IPv4 intranet。
为了配置站点局部或全局 6over4 地址,或者跨越 IPv4 intranet 所定义的逻辑子网之外进行通信,您需要一个 6over4 路由器。6over4 路由器执行以下功能:
• |
在IPv4 intranet 上的 6over4 主机和该 IPv4 intranet 之外的 IPv6 主机之间转发 IPv6 数据包。 |
• |
通告它的存在性和地址前缀,以便配置站点局部或全局 6over4 地址。 |
绝大多数情况下,6over4 路由器充当 IPv4 intranet 上的 6over4 主机和某个 intranet 上支持 IPv6 的部分网段上的 IPv6 主机之间的转发器。
例如, 6over4 路由器能够连接到两个物理上分离的网络:一个支持多播的IPv4 intranet 和一个 IPv6 intranet。对于这种情况,6over4 路由器至少要有两个 LAN 接口,其中至少要有一个连接到 IPv4 intranet,同时至少要有一个连接到支持 IPv6 的 intranet。为了使这台计算机能够成为一个 6over4 路由器,您必须完成以下步骤:
• |
在连接到支持 IPv6 的 intranet 的 LAN 接口上启用转发。这可以通过以下命令来完成: netsh interface ipv6 set interface InterfaceNameOrIndex forwarding=enabled |
• |
在 6over4 接口上启用转发和通告。这可以通过以下命令来完成: netsh interface ipv6 set interface 6over4InterfaceName forwarding=enabled advertise=enabled |
• |
将 IPv4 intranet 的逻辑子网的子网ID的路由添加到 6over4 接口,并设定对其进行通告。 这可以通过以下命令来完成: netsh interface ipv6 add route IPv6Address/ PrefixLength 6over4InterfaceName publish=yes |
• |
添加一个默认路由(使用连接到 IPv6 intranet 的 LAN 接口),并设定对其进行通告。 这可以通过以下命令来完成: netsh interface ipv6 add route ::/0 InterfaceNameOrIndex nexthop=IPv6Address publish=yes |
例如,某台计算机具有两个LAN接口,一个连接到名为 Local Area Connection 的 IPv4 intranet,另一个连接到名为 Local Area Connection 2 的支持 IPv6 的intranet。这样将创建一个名为 6over4 Tunnel Interface 的 6over4 接口。分配给IPv4 intranet 的逻辑子网的子网ID是:3FFE:FFFF:0:2A1C::/64 和 FEC0:0:0:2A1C::/64。该计算机使用名为 Local Area Connection 2 的接口所连接到的 IPv6 intranet 上的一个默认路由器,并且这个路由器的下一跳地址为 FE80::2AA:FF:FE98:2AB1。 为了将这台计算机配置为一个 6over4 路由器,请运行以下 netsh 命令:
netsh interface ipv6 set interface "Local Area Connection 2" forwarding=enabled netsh interface ipv6 set interface "6over4 Tunnel Interface" forwarding=enabled advertise=enabled netsh interface ipv6 add route 3ffe:ffff:0:2a1c::/64 "6over4 Tunnel Interface" publish=yes netsh interface ipv6 add route fec0:0:0:2a1c::/64 "6over4 Tunnel Interface" publish=yes netsh interface ipv6 add route ::/0 "Local Area Connection 2" nexthop=fe80::2aa:ff:fea7:412e publish=yes