如何同时通过eth0和lo捕获包?

时间:2017-02-02 08:57:57

标签: tcpdump

我的电脑上有两个网络接口。

netstat -i
Kernel Interface table
Iface   MTU Met   RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0       1500 0     27186      0      0 0         20784      0      0      0 BMRU
lo        65536 0     42025      0      0 0         42025      0      0      0 LRU

通过lo的包可以通过。

捕获
sudo tcpdump  -i lo 

通过eth0的包可以通过。

捕获
sudo tcpdump  -i eth0 

如何同时通过eth0和lo捕获包裹?
sudo tcpdump -i eth0 -i lo 无法正常工作 sudo tcpdump -i eth0 -i lo = sudo tcpdump -i eth0 = sudo tcpdump

3 个答案:

答案 0 :(得分:1)

假设您的内核支持它,您可以运行tcpdump -i any,但这会捕获 所有 接口,而不仅仅是loeth0接口。此外,根据tcpdump man page" ...捕获''任何''设备不会以混杂模式完成。" ,因此如果您需要将NIC置于混杂模式以捕获您感兴趣的流量,此解决方案可能不适合您。在这种情况下,您可以:

  • 启动2个tcpdump的单独实例,一个捕获lo,另一个捕获eth0。如果将数据包写入单独的文件,则可以使用mergecap之类的工具将其合并到一起。
  • 请改用dumpcaptshark,其中任何一个都可以在多个界面上捕获。

答案 1 :(得分:1)

您可以尝试的另一种选择是在两个接口并行运行tcpdump进程,例如

sudo tcpdump -i lo& 须藤tcpdump -i eth0&

&将使其在后台运行

由此也可以消除由“ any”选项引起的数据包泛滥的问题,您可以达到仅捕获两个接口的捕获目的

答案 2 :(得分:0)

来自https://serverfault.com/questions/805006/tcpdump-on-multiple-interfaces

<块引用>

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

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

我会在 3 个终端中捕获或通过使用 &

后台命令来捕获

标志 -nn 关闭 dns 分辨率以提高速度,-s 0 保存完整 packet 和 -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 merge.dump wan0.dump wan1.dump lan0.dump