数据包捕获:根据 RX 和 TX 进行过滤

数据包捕获:根据 RX 和 TX 进行过滤

我遇到了一个网络问题,其中源 MAC 与我的主机的某个源 MAC 相匹配的帧到达了主机 - 显然是重复的 MAC、循环或其他 L2 问题。

我相信这是因为,我的 Linux 桥的 MAC 表(CAM 表)将本地 MAC(用于托管的虚拟机)注册为上游端口,并且内核日志显示错误:

bridgename: received packet on bond0.2222 with own address as source address

我想获得有关这些“恶意”数据包/帧的更多详细信息,但我不知道如何锁定它们。使用 tcpdump,您可以过滤特定的源 MAC(“以太源 MAC”),但这是基于帧中的字节数 - 而不是帧是“发送”还是“接收”。我们通常假设带有源 MAC 的帧意味着我们正在将其发送出去,但如果收到了重复的帧,则内容在过滤器看来将完全相同。

在数据包捕获中,如何观察帧是被接收还是被传输?

答案1

使用--directiontcpdump 选项:

-Q direction
--direction=direction
       Choose send/receive direction direction for which packets should be
       captured. Possible values are `in', `out' and `inout'. Not available on
       all platforms.

答案2

使用 iptables,您可以为传入和传出的数据包设置不同的“链”。摘自 iptables(8) 手册页:

... the chains INPUT and OUTPUT are only traversed for packets coming into 
the local host and originating from the local host  respectively.   Hence 
every  packet  only  passes  through one of the three chains (except 
loopback traffic, which involves both INPUT and OUTPUT chains) ...

iptables 可以进行一些日志记录 (-l),这可能会显示您需要的内容。它大概还可以将数据包的副本转发到接口,以便使用其他工具进行日志记录,但我没有理由这样做。

相关内容