网络专家 – 2005 年 3 月

IPv6 疑难解答

发布日期: 2005年03月01日

网络专家

选自“网络专家”专栏

有关所有“网络专家”专栏文章的列表和其他信息,请单击此处

本页内容

简介
验证 IPv6 连接
验证 IPv6 地址的 DNS 名称解析
验证基于 IPv6 的 TCP 连接
更多信息

简介

本文介绍了一些技术和工具,旨在帮助您确定 Microsoft® Windows® XP Service Pack 1 (SP1)、Windows XP Service Pack 2 (SP2) 或 Windows Server™ 2003 中在使用 Internet 协议版本 6 (IPv6) Internet 层的传输控制协议/Internet 协议 (TCP/IP) 协议堆栈的连续层上出现的问题。请根据问题的类型,相应地执行以下操作之一:

  • 从堆栈底部开始向上移动。

  • 从堆栈顶部开始向下移动。

下面几节是从堆栈的顶部开始自上而下进行组织的,这几部分介绍:

  • 验证 IPv6 连接

  • 验证 IPv6 地址的域名系统 (DNS) 名称解析

  • 验证基于 IPv6 的 TCP 连接

虽然下面几节中没有说明,但是您可以使用网络监视器来捕获 IPv6 通信量以排查许多与基于 IPv6 的通信相关的问题。Microsoft Systems Management Server® 将网络监视器作为 Windows Server 2003 的可选网络组件提供。不过,要正确解释网络监视器中的 IPv6 数据包的显示,您必须对每个数据包中包括的协议有详尽的了解。若想深入了解 IPv6 协议和过程,请参见 Microsoft Press 出版的读物 Understanding IPv6(了解 IPv6)。

本文介绍在排查 Windows 中存在的有关 IPv6 的任意问题时用于收集信息和测试网络组件的任务和工具。有关常见 IPv6 问题的解决方案的信息,请参见 Troubleshooting(疑难解答)。

验证 IPv6 连接

您可以使用以下任务来排查 IPv6 连接问题:

  • 验证配置

  • 管理配置

  • 验证可访问性

  • 查看和管理 IPv6 路由表

  • 验证路由器可靠性

验证配置

要检查当前 IPv6 设置中的地址配置是否正确(当手动配置时)或地址配置是否合适(当自动配置时),您可以使用以下命令:

  • ipconfig /all

    ipconfig /all 命令显示的内容包括所有接口的 IPv6 地址、默认路由器和 DNS 服务器。Ipconfig 工具只能在本地计算机上使用。

  • netsh interface ipv6 show address

    此命令只显示分配给每个接口的 IPv6 地址。通过使用 –r RemoteComputerName 命令行选项,还可以使用 Netsh 显示远程计算机的配置。例如,要显示名为 FILESRV1 的远程计算机的配置,请使用 netsh –r filesrv1 interface ipv6 show address 命令。

管理配置

要手动配置 IPv6 地址,请使用 netsh interface ipv6 set address 命令。大多数情况下,您不需要手动配置 IPv6 地址,因为已通过 IPv6 地址自动配置功能为主机自动分配了 IPv6 地址。

要更改 IPv6 接口的配置,请使用 netsh interface ipv6 set interface 命令。要添加 DNS 服务器的 IPv6 地址,请使用 netsh interface ipv6 add dns 命令。

验证可访问性

要验证本地或远程目标的可访问性,请尝试以下方法:

  • 检查并刷新邻居缓存

    与地址解析协议 (ARP) 缓存类似,邻居缓存存储最近解析的链接层地址。要显示邻居缓存的当前内容,请使用 netsh interface ipv6 show neighbors 命令。要刷新邻居缓存,请使用 netsh interface ipv6 delete neighbors 命令。

  • 检查并刷新目标缓存

    目标缓存存储目标的下一跃点 IPv6 地址。要显示目标缓存的当前内容,请使用 netsh interface ipv6 show destinationcache 命令。要刷新目标缓存,请使用 netsh interface ipv6 delete destinationcache 命令。

  • Ping 默认路由器

    使用 Ping 工具,按照您的默认路由器的 IPv6 地址来 Ping 它。您可以从 ipconfignetsh interface ipv6 show routesroute printnbtstat -r 命令的显示中获取默认路由器的链路本地 IPv6 地址。通过 Ping 默认路由器,可以检测出您是否可以访问本地节点和默认路由器,默认路由器可用来将 IPv6 数据包转发到远程节点。

    当您 Ping 默认路由器时,必须指定您要在其上发送 ICMPv6 回显请求消息的接口的域标识符 (ID)。域 ID 是具有最低跃点数的默认路由 (::/0) 的接口索引,您可以从 netsh interface ipv6 show routesroute print 命令的显示中获得此接口索引。

  • 按照远程目标的 IPv6 地址来 Ping 它

    如果您能够 Ping 您的默认路由器,则按照远程目标的 IPv6 地址来 Ping 它。

  • 跟踪远程目标的路由

    如果您无法按照远程目标的 IPv6 地址来 Ping 它,则您的节点和目标节点之间可能存在路由问题。使用 tracert –d IPv6Address 命令来跟踪远程目标的路由路径。使用 –d 命令行选项可以阻止 Tracert 工具在路由路径的每个近端路由器接口上执行 DNS 反向查询,从而加快了路由路径的显示。

检查数据包筛选

如果访问目标节点时出现问题,则可能是由于源节点、中间路由器或目标节点上的 Internet 协议安全性 (IPsec) 配置或数据包筛选配置不当,阻止了数据包的发送、转发或接收。

在源节点上,检查是否有使用 Ipsec6 工具配置的 IPsec for IPv6 策略。有关 Ipsec6 工具的信息,请参见 IPv6 utilities(IPv6 实用工具)。

在运行 Windows XP 或 Windows Server 2003 的中间 IPv6 路由器上,检查是否有以下几项:

  • 使用 Ipsec6 工具配置的 IPsec for IPv6 策略

  • 简单的 IPv6 防火墙

    IPv6 for Windows Server 2003 在接口上提供了对一个简单防火墙的支持。启用后,IPv6 丢弃传入的 TCP 同步 (SYN) 段,并丢弃所有不请自来的传入 UDP 消息。您可以使用 netsh interface ipv6 set interface interface=NameOrIndex firewall=enabled disabled 命令配置简单的防火墙。

  • IPv6 Internet 连接防火墙

    Advanced Networking Pack for Windows XP 是一个为 Windows XP SP1 提供的免费下载文件,其中附带了 IPv6 Internet 连接防火墙。有关更多信息,请参见 Internet Protocol version 6 (IPv6) Internet Connection Firewall(Internet 协议版本 6 (IPv6) Internet 连接防火墙)。

  • Windows 防火墙

    Windows XP Service Pack 2 和 Windows Server 2003 Service Pack 1(目前正在进行 beta 测试)均附带 Windows 防火墙。有关更多信息,请参见 2004 年 5 月份的“网络专家”文章在 Windows XP Service Pack 2 中手动配置 Windows 防火墙

在第三方中间 IPv6 路由器或防火墙上,检查是否配置了基于 IPv6 的数据包筛选器以及是否配置了 IPsec 策略。

在目标节点上,检查是否有以下几项:

  • 使用 Ipsec6 工具配置的 IPsec for IPv6 策略

  • 简单的 IPv6 防火墙

  • IPv6 Internet 连接防火墙

  • Windows 防火墙

查看和管理 IPv6 路由表

无法访问本地或远程目标可能是由于本地 IPv6 路由表中的路由不正确或缺少路由。要查看本地 IPv6 路由表,请使用 route print, netstat –rnetsh interface ipv6 show routes 命令。验证您是否有对应于您的本地子网的路由;如果是使用默认路由器自动配置的,请验证您是否有对应于您的本地子网的默认路由。如果您有多个具有相同最低跃点数的默认路由,则您可能需要修改您的 IPv6 路由器配置,使拥有最少跃点数的默认路由可以使用一个连接着子网数最多的网络的接口。

要向 IPv6 路由表添加路由,请使用 netsh interface ipv6 add route 命令。要修改现有的路由,请使用 netsh interface ipv6 set route 命令。要删除现有的路由,请使用 netsh interface ipv6 delete route 命令。

验证路由器可靠性

如果您怀疑路由器性能存在问题,请使用 pathping –d IPv6Address 命令跟踪目标路径并显示有关路径中各个路由器的数据包丢失信息。使用 –d 命令行选项可以阻止 Pathping 工具在路由路径中的每个近端路由器接口上执行 DNS 反向查询,从而可加速路由路径的显示。

验证 IPv6 地址的 DNS 名称解析

如果可以使用 IPv6 地址访问,但不可以使用主机名访问,则主机名称解析可能存在问题,通常是 DNS 客户端的 DNS 配置出现了问题或 DNS 注册出现了问题。

您可以使用以下任务来排查 DNS 名称解析问题:

  • 验证 DNS 配置

  • 显示并刷新 DNS 客户端解析器缓存

  • 使用 Ping 工具测试 DNS 名称解析

  • 使用 Nslookup 工具查看 DNS 服务器响应

验证 DNS 配置

在有 DNS 名称解析问题的节点上,验证以下几项:

  • 主机名

  • 主 DNS 后缀

  • DNS 后缀搜索列表

  • 特定于连接的 DNS 后缀

  • DNS 服务器

您可以从 ipconfig /all 命令的显示获得此信息。要获得有关在 DNS 中应注册哪些 DNS 名称的信息,请使用 netsh interface ip show dns 命令。

默认情况下,IPv6 在各个 LAN 接口的 FEC0:0:0:FFFF::1、FEC0:0:0:FFFF::2 和 FEC0:0:0:FFFF::3 上配置人们熟知的、DNS 服务器的站点本地地址。要添加其他 DNS 服务器的 IPv6 地址,请使用 netsh interface ipv6 add dns 命令。

要将适当的 DNS 名称注册为 IPv6 地址资源记录(又称为 AAAA 资源记录)并伴随着 DNS 动态更新,请使用 ipconfig /registerdns 命令。

显示并刷新 DNS 客户端解析器缓存

TCP/IP 在发送 DNS 名称查询之前先检查 DNS 客户端解析器缓存。如果存在某个已解析名称的条目,则使用相应的 IPv6 地址。如果名称缓存条目为负,则不发送 DNS 名称查询。

要显示 DNS 客户端解析器缓存的内容,请使用 ipconfig /displaydns 命令。要刷新 DNS 客户端解析器缓存的内容并使用主机文件中的条目重新加载它,请使用 ipconfig /flushdns 命令。

使用 Ping 工具测试 DNS 名称解析

要测试 DNS 名称解析,请使用 Ping 工具,按照目标的主机名或完全限定域名 (FQDN) 来 Ping 目标。Ping 工具屏幕会显示 FQDN 及其对应的 IPv6 地址。

使用 Nslookup 工具查看 DNS 服务器响应

如果 Ping 工具使用的是错误的 IPv6 地址,则刷新 DNS 客户端解析器缓存并使用 Nslookup 工具来确定 DNS 名称查询响应消息中返回的地址集。在 Nslookup > 提示符下,使用 set d2 命令来最大限度地显示有关 DNS 响应消息的信息。然后使用 Nslookup 查找所需的 FQDN。在 DNS 响应消息的详细信息屏幕中查找 AAAA 记录。

验证基于 IPv6 的 TCP 连接

如果可以访问和进行名称解析,但无法与目标主机建立 TCP 连接,请使用以下任务:

  • 检查是否有数据包筛选

  • 验证 TCP 连接的建立

检查是否有数据包筛选

正如上文的“验证 IPv6 通信”一节中所述,按照源节点、中间路由器和目标节点进行的数据包筛选可以阻止 TCP 连接的建立。使用本文的“验证 IPv6 通信”一节中的信息检查源节点、中间路由器和防火墙以及目标节点上是否有数据包筛选或 IPsec 策略。

在许多情况下,数据包筛选被配置为允许特定类型的通信量但丢弃所有其他的通信量,或者丢弃特定类型的通信量但接受所有其他通信量。举一个前一种情况的例子,防火墙或 Web 服务器可能被配置为只允许超文本传输协议 (HTTP) 通信量而丢弃所有其他发往 Web 服务器的通信量。这意味着您将能够查看 Web 服务器上的 Web 页,但不能够 Ping 它或访问它的共享文件夹和文件。

验证 TCP 连接的建立

要验证可以使用目标的应用程序的已知目标 TCP 端口号建立 TCP 连接,您可以使用 telnet IPv6Address TCPPort 命令。例如,要验证 IPv6 地址为 3FFE:FFFF::21AD:2AA:FF:FE31:AC89 的计算机上的 Web 服务器服务是否接受 TCP 端口 80 上的 TCP 连接,可使用 telnet 3ffe:ffff::21ad:2aa:ff:fe31:ac89 80 命令。

如果 Telnet 工具可以成功地创建 TCP 连接,命令提示符窗口将会清空,然后根据协议来显示一些文本。此窗口允许您对已连接的服务键入命令。键入 Control-C 退出 Telnet 工具。如果 Telnet 工具无法成功创建 TCP 连接,则它显示消息“Connecting To IPv6Address...Could not open connection to the host, on port TCPPort:Connect failed”。

另一种可用来测试 TCP 连接的建立的工具是 Test TCP (Ttcp)。使用 Ttcp,您可以同时启动 TCP 连接并侦听 TCP 连接。您还可以将 Ttcp 工具用于 UDP 通信量。使用 Ttcp,您可以将计算机配置为侦听特定 TCP 或 UDP 端口,而不必在计算机上安装应用程序或服务。这允许您在服务就绪之前测试特定通信量的网络连接。

有关 Ttcp 的更多信息,请参见测试常见通信量类型的网络路径

更多信息

有关 IPv6 的更多信息,请访问以下资源:

如对本专栏的内容有任何反馈意见,请写信给 Microsoft TechNet。请注意,这不是我们的支持别名,我们不保证一定会给您答复。

有关所有网络专家专栏文章的列表和其他信息,请单击此处