tcpdump无法正常过滤vlan报文

当我使用tcpdump不带任何过滤条件的时候结果正常

img

但是当我使用过滤条件vlan的时候就抓取不到任何东西

img

网上主流的说法是linux内核将vlan的tag剔除掉了,这也可以理解,但是当我对含有vlan的报文进行host过滤的时候结果也不正常,这是为什么呢?对不含有vlan的报文过滤的时候是正常的。

img

我把tcpdump抓取到的文件使用wireshark过滤的时候也是正常的。

img

img

这是什么问题呢?不适用grep有没有别的办法可以解决?

过滤条件 vlan and host 192.168.0.4

我不信我帮不了你再试一试这个:【tcpdump: 我来帮你过滤和分析系统中的网络数据 - 云+社区 - 腾讯云】https://cloud.tencent.com/developer/article/1753179

你首先要确定你的网卡是哪个通过ip a或者ipconfig查看,然后看一下是什么协议的,网卡选错了是抓不到包的

tcpdump -i eth1 -w
首先使用tcpdump抓取所有报文往管道中写入,再使用tcpdump从管道中过滤vlan报文。
tcpdump -e - vlan

我看朋友没有使用grep,倒是使用的filter
看上面评论Host 过滤器有什么问题嘛?
Host 过滤器是用来过滤某个主机的数据报文。
下面有个简单的用法
$ tcpdump host 1.2.3.4
该命令会抓取所有发往主机 1.2.3.4 或者从主机 1.2.3.4 发出的流量。如果想只抓取从该主机发出的流量,可以使用下面的命令:
$ tcpdump src host 1.2.3.4
然后协议那块怎么会有问题?难道是命令不小心敲少了什么?
抓取特定协议的数据
后面可以跟上协议名称来过滤特定协议的流量,以 UDP 为例,可以加上参数 udp 或 protocol 17,这两个命令意思相同。
$ tcpdump -i eth0 udp
$ tcpdump -i eth0 proto 17
同理,tcp 与 protocol 6 意思相同。

1、你是如何确认你的报文中含有vlan tag的?vlan信息,如果是access端口,在离开交换机的时候就取消vlan标签了,在进入交换机access端口的时候会加上vlan标签;所以到达终端的报文是没有vlan标记的;
2、tcpdump也没有过滤vlan标记的参数,你截图中的-e指的是打印链路层信息,即加上-e参数会打印mac地址信息;
3、提问的时候如果是拍照记得拍清楚一点,你这个图片自己看看有多模糊,尤其是后面2张。