Red Hat Training

A Red Hat training course is available for RHEL 8

第 43 章 捕获网络数据包

要调试网络问题和通讯,您可以捕获网络数据包。以下部分提供有关捕获网络数据包的步骤和附加信息。

43.1. 使用 xdpdump 捕获包括 XDP 程序丢弃的数据包在内的网络数据包

xdpdump 工具捕获网络数据包。与 tcpdump 实用程序不同,xdpdump 为这个任务使用扩展的 Berkeley Packet Filter(eBPF)程序。这可让 xdpdump 同时捕获由 Express Data Path(XDP)程序丢弃的数据包。用户空间工具(如 tcpdump)无法捕获这些被丢弃的软件包,以及 XDP 程序修改的原始数据包。

您可以使用 xdpdump 来调试已经附加到接口中的 XDP 程序。因此,实用程序可以在 XDP 程序启动和完成后捕获数据包。在后者的情况下,xdpdump 也捕获了 XDP 操作。默认情况下,xdpdump 会在 XDP 程序条目中捕获传入的数据包。

重要

在 AMD 和 Intel 64 位以外的其它构架中, xdpdump 工具仅作为技术预览提供。红帽产品服务级别协议(SLA)不支持技术预览功能,且其功能可能并不完善,因此红帽不建议在生产环境中使用它们。这些预览可让用户早期访问将来的产品功能,让用户在开发过程中测试并提供反馈意见。

如需有关 技术预览功能支持范围 的信息,请参阅红帽客户门户网站中的技术预览功能支持范围。

请注意,xdpdump 没有数据包过滤或解码功能。但是您可以将它与 tcpdump 结合使用来解码数据包。

这个步骤描述了如何捕获 enp1s0 接口中的所有数据包并将其写入 /root/capture.pcap 文件中。

先决条件

  • 支持 XDP 程序的网络驱动程序。
  • XDP 程序被加载到 enp1s0 接口。如果没有载入程序,xdpdump 会以类似 tcpdump 的方式捕获数据包,以向后兼容。

流程

  1. 要捕获 enp1s0 接口上的数据包并将其写入 /root/capture.pcap 文件,请输入:

    # xdpdump -i enp1s0 -w /root/capture.pcap
  2. 要停止捕获数据包,请按 Ctrl+C

其它资源

  • 有关 xdpdump 的详情,请查看 xdpdump(8) man page。
  • 如果您是开发人员,并且您对 xdpdump 的源代码有兴趣,请从红帽客户门户网站下载并安装相应的源 RPM(SRPM)。

43.2. 其它资源