Citrix ADC

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

这篇故障排除文章解释了管理员如何使用Citrix ADC GUI记录网络数据包跟踪。

记住要点

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

  • 在Citrix ADC 11.1及以后版本中,为了解密抓包并保证ECC (Elliptic Curve Cryptography),在虚拟服务器上关闭了Session Reuse和DH参数。在捕捉到踪迹之前,你必须这样做。

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

  1. 导航到系统>诊断页面。
  2. 单击开始新的跟踪的连结诊断页面,如下面的截图所示。

    进入诊断页面

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

    数据包大小

  4. 点击开始开始记录网络数据包跟踪。
  5. 点击停止下载测试结束后停止记录网络数据包跟踪。

    停止和下载跟踪

  6. 选择所需的文件并单击选择并点击下载

    下载包跟踪

  7. 使用Wireshark工具打开网络数据包跟踪文件,显示文件内容。

    请注意:选择“解密SSL报文(SSLPLAIN)”,不使用私钥对报文轨迹进行解密。

    解密SSL报文

捕获SSL主密钥

在11.0、11.1版本及更高版本中,有一个捕获会话密钥的选项,该选项仅对特定会话/序列有效,如果您不想共享私钥或使用SSLPLAIN模式,则可以使用该选项。有关更多信息,请参见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中选择“Trace过滤的连接对等流量”选项(10.1及以上版本可用),可以捕获该IP地址的前端和后端流量。

“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 

合并

捕获循环轨迹

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

在命令行窗口中执行如下命令:

start nstrace -nf 60 time 30 -size 0这个特定的跟踪将创建60个文件,每个文件30秒。这意味着文件将在60个跟踪文件或30分钟后开始被覆盖。Show nstrace 检查nstrace状态。<!——NeedCopy >

最佳实践

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

关于跟踪的最佳实践是:

  1. 在确保捕获感兴趣的数据包的情况下,必须尽可能限制跟踪运行的持续时间。
  2. 将跟踪活动安排在用户数量(以及流量)大大减少的时候进行,比如在非工作时间。

更多的资源

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

当捕获跟踪以完成跟踪中的SSL握手时,将禁用会话重用。当它被启用时,您可以在跟踪中捕获部分握手。确保在跟踪收集之后启用该选项。当持久性方法是sslsession时,不要禁用SSL会话重用,因为这会破坏现有连接的持久性。更多信息请参考https://support.citrix.com/article/CTX121925

  1. 打开虚拟服务器并导航到SSL Parameters。
  2. 禁用启用会话重用。

    启用会话重用

在命令行中禁用虚拟服务器上的会话重用

  1. SSH到设备控制台。
  2. 关闭虚拟服务器的DH参数:

    set ssl vserver "vServer_Name" -sessReuse DISABLED

在GUI中关闭虚拟服务器上的DH参数

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

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

    SSL参数

在命令行中关闭虚拟服务器的DH参数

  1. SSH到设备控制台。
  2. 关闭虚拟服务器的DH参数:

    set ssl vserver "vServer_Name" -dh DISABLED

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

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

  1. 打开虚拟服务器,导航到ECC Curve。

    ECC曲线

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

    无CC曲线

  3. 如果有ECC曲线与虚拟服务器绑定,则单击ECC曲线并解除与虚拟服务器的绑定。

通过命令行关闭虚拟服务器的ECC曲线

  1. SSH到设备控制台。
  2. 对每条绑定到虚拟服务器的ECC曲线执行如下命令:

    unbind ssl vserver "vServer_Name" -eccCurveName "ECC_Curve_Name"

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