ADC

如何在 NetScaler 上记录数据包跟踪

本故障排除文章介绍了管理员如何使用 NetScaler GUI 记录网络数据包跟踪。

需要记住的几个要点

  • Citrix 建议您使用以下网页“自动构建部分”中提供的最新Wireshark版本:http://www.wireshark.org/download/automated

  • 在 NetScaler 11.1 版或更高版本中,要解密捕获并确保从虚拟服务器禁用 ECC(椭圆曲线加密)、会话重用和 DH 参数。在捕获跟踪之前必须执行此操作。

在 NetScaler 版本 11.1 上记录数据包跟踪

  1. 导航到“系统”>“诊断”页面。
  2. 单击“诊断“页中的“启动新跟踪“链接, 如以下屏幕截图所示。

    访问“诊断”页面

  3. 将数据包大小字段中的 数据包大小 更新为 0。

    数据包大小

  4. 单击开始开始记录网络数据包跟踪。
  5. 单击停止并下载在测试完成后停止记录网络数据包跟踪。

    停止并下载跟踪

  6. 选择所需的文件,然后单击“选择”,然后单击“下载”。

    下载数据包跟踪

  7. 使用 Wireshark 实用程序打开网络数据包跟踪文件以显示该文件的内容。

    注意:选择已解密的 SSL 数据包 (SSLPLAIN) 可在没有私钥的情况下解密数据包跟踪。

    已解密的 SSL 数据包

捕获 SSL 主密钥

在 11.0、11.1 及更高版本中,有一个捕获会话密钥的选项,该选项仅对该特定会话/nstrace 有效,如果您不想共享私钥或使用 SSLPLAIN 模式,则可以使用此选项。有关详细信息,请参阅 https://support.citrix.com/article/CTX135889

导出会话密钥而不共享私钥

在大多数情况下,私钥不可用或不可共享。在这种情况下,我们可以建议导出 SSL 会话密钥而不是私钥。阅读, [如何在不共享 SSL 私钥的情况下导出和使用 SSL 会话密钥解密 SSL 跟踪,请参阅 https://support.citrix.com/article/CTX135889

过滤器

此外,始终建议在跟踪时添加基于 IP 的过滤器。该过程可确保您仅捕获感兴趣的流量,从而简化故障排除。添加过滤器还可以在追踪时减轻设备上的负载。

筛选器部分

简单的基于 IP 的过滤器足以获得正确的捕获。有关 nstrace 过滤器和示例的更多信息,请参阅 NetScaler 文档页面

使用虚拟服务器 IP 过滤器(前端和后端)捕获数据包跟踪的使用案例

使用虚拟服务器 IP 地址的筛选器并在 CLI 中启用“—link”选项,或者在 GUI 中选择“跟踪过滤的连接对等流量”选项(可用 10.1 及更高版本),您可以捕获该 IP 地址的前端和后端流量。

start nstrace -size 0 -filter "CONNECTION.IP.EQ(1.1.1.1)" -link ENABLED

show nstrace
        State:  RUNNING          Scope:  LOCAL            TraceLocation:  "/var/nstrace/24Mar2017_16_00_19/..." Nf:  24                  Time:  3600              Size:  0                 Mode:  TXB NEW_RX
        Traceformat:  NSCAP      PerNIC:  DISABLED        FileName:  24Mar2017_16_00_19 Filter:  "CONNECTION.IP.EQ(1.1.1.1)" Link:  ENABLED           Merge:  ONSTOP           Doruntimecleanup:  ENABLED
        TraceBuffers:  5000      SkipRPC:  DISABLED       Capsslkeys:  DISABLED    InMemoryTrace:  DISABLED
<!--NeedCopy-->

Merge

捕获循环轨迹

对间歇性问题进行故障排除总是具有挑战性的。循环跟踪最适合间歇性问题。跟踪可以在问题出现之前的几个小时或几天内运行。此外,您还可以使用特定的筛选器,并在长时间运行之前评估生成的跟踪文件的大小。

从 CLI 运行以下命令:

start nstrace -nf 60 -time 30 -size 0
This particular trace will create 60 files each of them for 30 sec. This means the files will start getting overwritten after 60 trace files or 30 mins
Show nstrace à To check the status of the nstrace
Stop nstrace à To stop the nstrace.

<!--NeedCopy-->

最佳做法

在每秒处理 GB 流量的单位上,捕获流量是一个非常耗费资源的过程。对资源的影响主要体现在 CPU 和磁盘空间方面。使用筛选表达式可以减少对磁盘空间的影响。但是,对CPU的影响仍然存在,有时会导致轻微增加,因为设备现在需要在捕获数据包之前根据过滤器处理数据包。

关于跟踪的最佳做法是:

  1. 当您仍然确保捕获感兴趣的数据包时,必须尽可能限制运行跟踪的持续时间。
  2. 将跟踪活动安排在用户数量(从而减少流量)的时间进行,例如在非工作时间。

更多资源

从 GUI 禁用虚拟服务器上的会话重用

捕获跟踪以在跟踪中完成 SSL 握手时,会话重用处于禁用状态。启用后,您可以在跟踪中捕获部分握手。确保在跟踪收集后启用该选项。 当持久性方法为 sslsession 时,请勿禁用 SSL 会话重用,因为这会破坏现有连接的持久性。有关详细信息,请参阅 https://support.citrix.com/article/CTX121925

  1. 打开虚拟服务器并导航到 SSL 参数。
  2. 禁用“启用会话重用”(如果启用)。

    启用会话重用

从 CLI 禁用虚拟服务器上的会话重用

  1. 通过 SSH 连接到设备控制台。
  2. 运行以下命令从虚拟服务器禁用 DH Param:

    set ssl vserver "vServer_Name" -sessReuse DISABLED

从 GUI 禁用虚拟服务器上的 DH 参数

请参阅 https://support.citrix.com/article/CTX213335 以了解 DH 参数。

  1. 打开虚拟服务器并导航到 SSL 参数。
  2. 如果启用 DH 参数,则禁用。

    SSL 参数

从 CLI 禁用虚拟服务器上的 DH 参数

  1. 通过 SSH 连接到设备控制台。
  2. 运行以下命令从虚拟服务器禁用 DH Param:

    set ssl vserver "vServer_Name" -dh DISABLED

从 GUI 禁用虚拟服务器上的 ECC 曲线

禁用 ECC 曲线以使用私钥解密捕获的 SSL 跟踪。如果使用了相关的 SSL 密码,则不得禁用密钥。有关 ECC 曲线的详细信息,请参阅 https://support.citrix.com/article/CTX205289

  1. 打开虚拟服务器并导航到 ECC 曲线。

    ECC 曲线

  2. 如果没有绑定到虚拟服务器的 ECC 曲线,则无需执行其他操作。

    没有 CC 曲线

  3. 如果有任何 ECC 曲线绑定到虚拟服务器,请单击 ECC 曲线并将其与虚拟服务器解除绑定。

从 CLI 禁用虚拟服务器上的 ECC 曲线

  1. 通过 SSH 连接到设备控制台。
  2. 对绑定到虚拟服务器的每个 ECC 曲线运行以下命令:

    unbind ssl vserver "vServer_Name" -eccCurveName "ECC_Curve_Name"

如何在 NetScaler 上记录数据包跟踪