我有一台服务器正在从交换机上的镜像端口接收流量。连接到此镜像端口的接口处于混杂模式。当我在接口上使用普通的捕获所有 tcpdump 时,例如
tcpdump -nn -i eth1
我看到了大量流量。我甚至可以在其中 grep 某些内容,例如端口 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
很奇怪。当我使用过滤器时,我没有看到任何流量。我尝试过“ip port”、“dst port”和其他一些过滤器。我还尝试过按 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
这个接口的流量很大。我的过滤器是有效的,对吧?为什么我什么都没看到?
答案1
一个可能的原因是 tcpdump 收到了一个被封装到另一个协议中的数据包或者一个例如被标记了 VLAN ID 的帧。
由于您没有指定任何详细程度参数,因此您不会在tcpdump
的输出中看到这一点,但是您的过滤器并不匹配,正如您port 443
基本上暗示的那样not vlan and (proto tcp or proto udp) and port 443
。
您还可以通过转储十六进制帧-xx
并分析帧数据来验证这一点。如果您知道有问题的 VID,只需将其添加and vlan <VID>
到过滤器即可捕获数据包。