联网

跟踪难以捉摸的网络问题

Christopher Stoneff

 

概览:

  • 网络问题的常见原因
  • 原因不明确
  • 故障排除工具不起作用时
  • 为何需要配置连接限制

您可能多次遇到这种情况 — 您的计算机不知为何无法与其他计算机进行通信。您的管理系统位于路由网络段上,该网络段通过路由器(如 Microsoft Internet

Security and Acceleration (ISA) Server 或其他硬件设备连接到其他网络段。当您尝试管理 10 个、20 个甚至 100 个系统时,未遇到任何问题。但当尝试管理 500 个系统时,您的计算机除了能与它已成功建立连接的计算机通信外,无法通过网络与其他计算机进行通信。您无法与任何其他系统通信,也无法连接到 Internet,但网络(包括您所在的网络段)上的其他人并没有出现这种现象。应该首先检查什么呢?

诊断问题

在这种情况下,一般都假设是管理软件出现了问题。许多主动管理工具可连接到系统并对其进行管理,但有时这些工具本身可能就会导致您正在尝试跟踪的问题。这是因为主动管理工具能以“更好的管理”的名义生成数千个到设备的连接。Windows® 默认情况下使这些连接保持两分钟的打开状态,即使没有使用这些连接时也是如此,除非工具、应用程序或服务使连接状态保持更长时间。这意味着即使管理系统在两分钟内未与任何计算机通信,您仍可能具有 1,000 多个打开的连接。 (您可以通过在命令提示符下运行 NETSTAT 查看打开的连接。 NETSTAT 命令为您显示连接到系统以及来自系统的所有打开、挂起和关闭的连接,并提供其状态。状态消息的描述可以在 tools.ietf.org/html/rfc793 中的 RFC 793 中找到。)

若要排除是管理软件出现了故障,可以创建一个批处理文件与远程系统建立连接。如果在运行批处理文件时出现了同样的问题,您就知道问题不在于管理软件及其线程。所需的批处理文件内容的示例如下:

Net use \\system01\ipc$ Net use \\system02\ipc$ Net use ...

如果恰巧被怀疑有问题的管理程序在实施它自己的联网和身份验证堆栈,则它可能就是罪魁祸首,但在无代理解决方案(如上述大多数管理程序包)中,该工具使用操作系统的联网和身份验证堆栈执行联网操作。如果使用批处理文件建立同样多的网络连接而没有导致失败,则表明该问题不是程序使用操作系统的联网和身份验证堆栈导致的,因为批处理文件也用到它们。

日志和错误消息不起作用

您可能已注意到,由于连接开始失败,您收到了不正确的失败信息:错误 53 — 未找到网络路径,错误 64 — 网络名已删除,以及错误 1203 — 无任何网络提供程序接受指定的网络路径。通常,上述所有消息都可能说明存在名称解析问题,除非所有其他计算机都没有出现解析名称和连接到同一系统的问题。若要确认您的计算机设置没有出错,只需运行 ipconfig 确认您的设置正确即可。

接下来,由于该现象看起来像是出现在管理系统中,因此应查看事件日志。搜索应用程序日志没有发现任何结果,但在系统日志中,您会在事件源 TCP/IP 中发现警告事件 4226,该事件指出已达到最大连接数(请参见图 1)。

Figure 1 TCP connection limit has been reached

Figure 1** TCP connection limit has been reached **

如果全面搜索 Microsoft® 知识库查找有关连接限制的内容,会发现未完成的连接存在连接限制,对完成的连接则没有任何限制。您可以在 HKLM\System\CurrentControlSet\Services\TCPIP\Parameters 下调整下列注册表项来控制上述因素:TcpNumConnections 用于设置 TCP 可同时打开的最大连接数(默认值为 10)。TCPTimedWaitDelay 用于设置连接关闭后保持处于 TIME_WAIT 状态的时间。默认的半衰期是 120 秒,这意味着连接实际上可使用 4 分钟。最后,MaxFreeTcbs 也对确定最大连接数起到一定作用。如果使用了所有 TCP 控制块,则即使 TCPTimedWaitDelay 尚未过期,TCP 也应释放列出的处于 TIME_WAIT 状态的连接以创建更多连接。TCPTimedWaitDelay 值的范围为 30-300 秒 (0x1E – 0x12C)。

根据您的具体情形,进行上述注册表改动后,您可能会发现整体性能得到了一些改进。您还可尝试修改 TCPIP.sys 文件以取消这些限制,但是这只能改进 P2P 应用程序。

网络捕获

在使用其他方法尝试解决连接问题失败后,还有希望通过相关计算机的网络捕获解决问题。运行 Microsoft 网络监视器 (Netmon) 时,会生成捕获,显示我在管理工具和测试脚本中见到的确切结果:开始时一切都正常运行,然后出现异常,也未显示其他任何错误指示。

图 2 显示了运行 Netmon 的结果,表明在前 n 个系统之间成功进行了通信。请注意,我将获得 RPC 请求的确认应答。这正是您希望看到的结果 — 成功的双向通信。

Figure 2 Successful communication in Netmon

Figure 2** Successful communication in Netmon **(单击该图像获得较大视图)

现在您需要看一下来自管理系统和远程计算机的捕获,它们显示了错误 53/1203。您可能已经预料到,没有捕获到任何内容,因为计算机没有进行通信。在图 3 所示的网络捕获中,管理系统已解析了 IP 地址并尝试通过端口 445(Microsoft SMB 端口)连接到系统,但一直收不到响应。

Figure 3 Attempts to connect to the system over port 445 yield no response

Figure 3** Attempts to connect to the system over port 445 yield no response **(单击该图像获得较大视图)

如果您拥有的线程比计算机当前可以连接的线程多,您收到的错误并不总是一致的。有些情况下,可能显示来自源系统的错误 53,指示收到了名称解析但找不到 IP 地址。这表明您无法连接到 DNS 提供的地址。您也可能收到错误 1203,指示没有计算机响应您请求的名称或 IP 地址。在这种情况下,错误 1203 表示您无法使用 DNS。如果运行 nslookup,您会发现的确无法使用 DNS。

此时,您可能会感到失望,但还有更多方法可供您选用。大多数人不会想到去查看连接的基础结构,因为该问题本身的呈现方式是:您的计算机是唯一无法连接到网络其余部分的计算机,并且事件日志显示您的计算机已达到允许的最大连接数,因此从本质来说不像是体系结构存在问题。

尽管管理解决方案生成的数千个连接不会同时启动,但活动的传输连接和连接超时可能意味着您在某个时间打开的连接数超出了您的预料。因此,您还必须检查连接网络其余部分的那些系统。

让我来解释一下。前面说过,网络通信经过网络时,会通过交换机、路由器,可能还通过防火墙。在上述任一位置(通常是路由器或防火墙),都可能遇到入侵检测系统。托管交换机和路由器可能还使用通讯筛选。您或控制这些设备的人员需要检查日志以查看错误或警告。通信问题很可能就出现在这些系统中。

由于您是从某一个内部系统连接到其他内部系统,因此您可能会发现没有生成警报,这要么是因为设备上未配置警报,要么是因为问题不足以构成入侵或拒绝服务 (DoS) 攻击。再次重申,您应该首先查看日志。以 ISA 服务器为例,这些日志可以在 ISA 服务器管理控制台中找到,具体位置是 Arrays\<ArrayName>\Monitoring\Logging。

如果某策略阻止了您的通信,您可能需要(在使用 ISA 服务器的情况下)查找下列结果代码,其中源 IP 是您的管理计算机:

  • 0xc0040037FWX_E_TCP_RATE_QUOTA_EXCEEDED_DROPPED
  • 0xc004000dFWX_E_POLICY_RULES_DENIED
  • 0xc0040017FWX_E_TXP_SYN_PACKET_DROPPED

如果发现这样的结果,则找到了连接问题的根源。

实施解决方案

确定问题之后,解决方案就很简单了,但部门策略可能会使解决方案难以实施。在进行任何更改之前,请确保您具有进行更改的适当权限,因为有时不允许在防火墙、路由器和/或入侵检测系统的安全配置中创建排除条目。

仍以 ISA 服务器为例,下列步骤显示了如何增加给定主机或网络中所有计算机的最大连接数(如图 4 所示)。打开 ISA 服务器管理控制台,导航到 Arrays\<ArrayName>\Configuration\General\Configure Flood Mitigation Settings。

Figure 4 Increase the maximum number of connections for one host or all machines using ISA Server

Figure 4** Increase the maximum number of connections for one host or all machines using ISA Server **

需要注意两个设置:每个 IP 地址的最大 TCP 并行连接数,以及每个 IP 地址每分钟的最大 TCP 连接请求数。通常情况下,设置的每个 IP 地址的最大 TCP 并行连接数不会导致主动管理,这意味着任何计算机都不会主动快速连接到数千台其他计算机。在 ISA 服务器中,最大 TCP 并行连接数的默认限制为 160。每个 IP 地址每分钟的最大 TCP 连接请求数旨在限制网络扫描的破坏性和可见性。默认情况下,每个 IP 每分钟的连接请求数限制为 600。

如上文所述,如果没有采取其他措施试图使连接长时间处于活动状态,默认情况下 Windows 会使连接保持处于活动状态两分钟,在该连接未被使用的情况下亦如此。这意味着即使您已成功对计算机进行了管理,并且不再需要与其通信,该连接仍会保持活动状态。此打开的连接将计入分配的总连接数中。在不删除连接的情况下重复该过程 160 次以上,您会发现所有连接尝试都将被路由器拒绝。即使管理程序主动终止会话,Windows 也会将连接置于 time_wait 状态,等待目标计算机同意断开会话连接。

调整最可能出现问题的位置:每个 IP 地址的最大 TCP 并行连接数。您应该对其进行设置,以便管理计算机能够创建管理系统所需的所有连接,而不会被拒绝访问。单击设置旁边的“编辑”按钮,并更改相应的值。

下一个提示(请参见图 5)中显示了提供默认限制的“限制”框,适用于所有客户端。“自定义”限制适用于在淹没缓解对话框的“IP 例外”选项卡上定义的所有计算机、网络等。如果希望允许每台计算机创建更多连接,可更改“限制”的值。若要仅为您的管理计算机配置例外,请调整“自定义”限制并将您的计算机添加到“IP 例外”选项卡。通常,最好仅允许您自己的计算机可以例外。

Figure 5 Default connection limit and custom connection limit

Figure 5** Default connection limit and custom connection limit **

如果仅希望使用自定义限制对特定系统修改此值,则可更改“自定义”限制字段中的值,并单击“确定”。然后,将您的计算机添加到淹没缓解对话框中的“IP 例外”选项卡。若只将您的计算机添加到例外列表,请单击“IP 例外”上的“添加”以显示“计算机集”对话框。如果尚不存在包含这些计算机的网络集,请单击“新建”创建新的网络集来包含您的系统。选择该网络集并单击“添加”以添加“内部网络”网络集,然后单击“关闭”。再次选择“内部网络”网络集,然后单击“编辑”。这将打开“内部网络”的属性(请参见图 6)。单击此对话框上的“添加”可显示一个子菜单,在其中可以选择添加计算机、地址范围或子网,以及选择计算机。键入用于标识条目的名称、计算机的 IP 地址和描述,以免此后查看该条目的人删除您的系统(请参见图 7)。单击“确定”添加您的系统,然后再次单击它以添加例外。现在您已完成了更改,可以应用这些设置了。

Figure 6 Internal networks properties settings

Figure 6** Internal networks properties settings **

Figure 7 Enter computer name, IP address, and description to ensure your system is not removed

Figure 7** Enter computer name, IP address, and description to ensure your system is not removed **

再次尝试使用主动管理工具,您应该发现性能大大改善并且连接没有失败,至少不会因网络通信导致失败。最后,事实证明,问题不是由软件启动的连接数导致的,而是缺少对这些连接的合理规划导致了中断。

经验教训

IT 中最令人头痛的事情之一是遇到确实非常难以捉摸的问题并解决这些问题。这些问题既不是最终用户造成的,也不是服务器团队导致的,同样也不是技术支持所了解的问题,但不幸的是,可能要您来负责解决此类问题。有许多工具可帮助您排除、隔离和解决问题,但有时这些工具远远不够;有时这些工具本身也会出现错误;有时您必须比这些工具更聪明。

下次您发现自己无法与网络上的许多计算机建立连接,又找不到明确的原因时,请尝试我在本文中介绍的步骤。按照这些步骤,仔细查看您的管理软件并合理设置允许的连接数,问题可能会迎刃而解。

Christopher Stoneff 是 Lieberman Software 公司 (liebsoft.com) 的产品经理,该公司致力于安全和系统管理软件开发。Chris 获得的技术认证多得惊人。他最大的动力在于不仅要了解事物的特定运作方式,而且要了解背后的原因。

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