在多个接口上的Tcpdump

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

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

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

根据tcpdump手册页:

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

所以你应该可以运行: tcpdump -i any ,以便将所有接口上的数据同时捕获到一个捕获文件中。

我会这样做的方式是转储到每个接口到一个单独的文件,然后合并它们。 任何界面还包括可能污染捕获的lostream量。

这也允许在没有复杂的过滤的情况下分析每个接口的分组stream。

我会捕获3个terminal或通过背景命令&

标志-nnclosuresDNS速度parsing,-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 

然后,我会将这些文件与wireshark中的mergecap命令合并:

 mergecap -w merged.dump wan0.dump wan1.dump lan0.dump