我有一台服务器正在接收来自交换机上的镜像端口的stream量。 连接到此镜像端口的接口处于promisc模式。 当我只使用一个普通的接口上的所有tcpdump,就像
tcpdump -nn -i eth1
我看到大量的stream量。 我甚至可以用这种方式来处理某些事情,比如443端口。
tcpdump -nn -i eth1 | grep 443
显然这显示了其中有443个,而不仅仅是端口443的任何东西。我已经通过视觉检查了它,并且看到类似这样的东西:
15:08:08.112550 IP 12.34.56.78.1430 > 87.65.43.21.443: . ack 35124 win 32768
但是我只想要443端口
tcpdump -nn -i eth1 port 443 ... 0 packets captured
奇怪的。 当我使用filter时,我看不到任何stream量。 我曾尝试“IP端口”,“DST端口”,和其他一些filter。 我也试着过滤IP而不是端口。 没有。
eth1 Link encap:Ethernet HWaddr 00:24:81:A5:AD:7A inet6 addr: fe80::224:81ff:fea5:ad7a/64 Scope:Link UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1 RX packets:4114781478 errors:0 dropped:1 overruns:0 frame:0 TX packets:17 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:2240970313430 (2.0 TiB) TX bytes:15155497 (14.4 MiB) Interrupt:98 Memory:fa000000-fa012800
这个接口看到了大量的stream量。 而我的filter是有效的,对吗? 为什么我什么都看不见?
一个可能的原因是tcpdump已经接收到一个封装到另一个协议中的数据包,或者一个例如已经被标记了VLAN ID的帧。
你没有看到tcpdump的输出,因为你没有指定任何详细的参数,但是你的filter不匹配,因为你的port 443基本上not vlan and (proto tcp or proto udp) and port 443 。
您也可以通过使用-xx转储hex帧并分析帧数据来validation这一点。 如果您知道有问题的VID,只需添加and vlan <VID>到您的filter来获取捕获的数据包。