Citrix ADC

如何在 Citrix ADC 上记录数据包跟踪

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

需要记住的几个要点

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

  • 在 Citrix ADC 10.5 或更高版本中,要解密捕获并确保从虚拟服务器禁用 ECC(椭圆曲线加密学)、会话重用和 DH 参数。在捕获跟踪之前,你必须先这样做。

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

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

    访问诊断页面

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

    数据包大小

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

    停止和下载跟踪

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

    下载数据包跟踪

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

在 NetScaler 10.5 设备上记录数据包跟踪

  1. 导航到“系统”>“诊断”页面。

    访问诊断页

  2. 单击“技术支持工具”下的“开始新跟踪”链接,如下面的屏幕截图所示。
  3. 在“数据包大小”字段中将数据包大小更新为 0。

    数据包大小

    注意:如果不需要设备标头,请选择 .pcap 格式的捕获跟踪。

  4. 单击 开始 以开始记录网络数据包跟踪。
  5. 单击确定停止记录测试完成后的网络数据包跟踪。

    停止跟踪记录

    生成一个 nstrace.cap 文件,其中包含网络数据包跟踪。

  6. 突出显示所需文件,然后单击“下载”。

    下载文件

  7. 指定目标并保存数据包跟踪。
  8. 使用 Wireshark 实用程序打开网络数据包跟踪文件以显示文件的内容。

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

    解密 SSL 数据包

捕获 SSL 主密钥

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

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

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

过滤器

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

筛选器部分

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

使用虚拟服务器 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 握手时,会话重用将被禁用。启用后,您可以在跟踪中捕获部分握手。确保在跟踪收集之后启用该选项。 当持久性方法为 sslsion 时,请勿禁用 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 Curve 绑定到虚拟服务器,则不需要执行其他操作。

    无抄送曲线

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

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

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

    unbind ssl vserver "vServer_Name" -eccCurveName "ECC_Curve_Name"

如何在 Citrix ADC 上记录数据包跟踪