多个接口上的 Tcpdump

Nah*_*lam 30 centos tcpdump centos5

我需要在 CentOS 5 服务器上捕获流量,该服务器充当具有 2 个 wan 接口和 1 个 LAN 的 Web 代理。为了解决一个奇怪的代理问题,我想捕获一个完整的对话。由于外部连接在两个WAN接口之间是平衡的,我想知道是否可以在所有接口上同时捕获。

我以前使用过 tcpdump,但它一次只允许一个接口。我可以启动 3 个并行进程以在所有接口上进行捕获,但最终会得到 3 个不同的捕获文件。

这样做的正确方法是什么?

Ada*_*had 41

根据 tcpdump 手册页:

在具有 2.2 或更高版本内核的 Linux 系统上,接口参数“any”可用于从所有接口捕获数据包。请注意,“任何”设备上的捕获不会在混杂模式下完成。

因此,您应该能够运行:tcpdump -i any以便将所有接口上的数据同时捕获到单个捕获文件中。

  • 如果我想捕获一些但不是全部的接口,那将不起作用 (6认同)

Tim*_*her 16

我处理这个问题的方法是在每个接口上转储到一个单独的文件,然后合并它们。any 接口还包括可能污染捕获的 lo 流量。

这也允许在没有复杂过滤的情况下分析每个接口的数据包流。

我会在 3 个终端中捕获或通过使用 & 将命令置于后台

标志 -nn 关闭 dns 分辨率以提高速度, -s 0 保存完整数据包, -w 写入文件。

tcpdump -i wan0 -nn -s 0 -w wan0.dump
tcpdump -i wan1 -nn -s 0 -w wan1.dump
tcpdump -i lan0 -nn -s 0 -w lan0.dump
Run Code Online (Sandbox Code Playgroud)

然后我将使用来自wireshark的mergecap命令合并文件:

mergecap -w merged.dump wan0.dump wan1.dump lan0.dump
Run Code Online (Sandbox Code Playgroud)


小智 5

要在所有接口上捕获 tcpdump 使用

tcpdump -i any
Run Code Online (Sandbox Code Playgroud)

  • 这已经在 2 年前在 Adam Rushad 的回答中给出了答案。 (3认同)