我有一台从交换机上的镜像端口接收流量的服务器。连接到此镜像端口的接口处于混杂模式。当我在界面上使用一个普通的 catch all 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 端口”、“dst 端口”和其他一些过滤器。我也尝试过按 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
这个界面已经看到了大量的流量。我的过滤器有效,对吗?为什么我什么都没看到?
一个可能的原因是 tcpdump 收到了一个数据包,该数据包要么被封装到另一个协议中,要么是一个帧,例如已经用 VLAN ID 标记。
您没有在
tcpdump
的输出中看到这一点,因为您没有指定任何详细参数,但您的过滤器与您port 443
基本上暗示的不匹配not vlan and (proto tcp or proto udp) and port 443
。-xx
您还可以通过使用和分析帧数据以十六进制转储帧来验证这一点。如果您知道有问题的 VID,只需添加and vlan <VID>
到您的过滤器即可捕获数据包。