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 及更高版本中,有一个选项来捕获会话密钥,该会话密钥仅适用于该特定会话 /nstrace,如果您不想共享私钥或使用 SSLLAN 模式,则可以使用此选项。有关详细信息,请参阅https://support.citrix.com/article/CTX135889

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

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

过滤器

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

筛选器部分

简单的基于 IP 的过滤器足以获得正确的捕获。有关筛选器和示例的详细列表,请参阅 Citrix 文档-ns 跟踪。

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

使用虚拟服务器 IP 地址的筛选器并在 CLI 中启用“—link”选项,或在 GUI 中选择“跟踪过滤的连接对等流量”选项(可用 10.1 及更高版本),您可以捕获该特定 IP 地址的前端和后端流量。使用此选项,不建议提及源 IP 或目标 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

合并

捕获循环追踪

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

从 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.

最佳做法

在每秒处理 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 Curve,则不需要其他操作。

    无抄送曲线

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

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

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

    unbind ssl vserver "vServer_Name" -eccCurveName "ECC_Curve_Name"

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