问题:使用命令【tcpdump -i eth0 vlan】无法抓取网口的vlan报文。
原因:vlan报文在被tcpdump捕获前,linux内核已经剔除了vlan部分。所以通过"tcpdump -i eth0 vlan"的方式是无法抓取到vlan报文的,vlan被编译成bpf字节码,而内核已经剔除了vlan部分,所以无法匹配到vlan报文。
解决方案:将上述命令修改为【tcpdump -i eth0 -w - | tcpdump -r - vlan】。首先使用tcpdump抓取所有报文往管道中写入,再使用tcpdump从管道中读取并指定vlan报文。