在tcpdump中,如何捕获所有传入我的机器的传入IP流量?我不在乎我的本地流量。在tcpdump中捕获传入流量
如果我只是说:
tcpdump ip dst $MyIpAddress and not src net $myIpAddress/$myNetworkBytes
...还是我失去了一些东西?
在tcpdump中,如何捕获所有传入我的机器的传入IP流量?我不在乎我的本地流量。在tcpdump中捕获传入流量
如果我只是说:
tcpdump ip dst $MyIpAddress and not src net $myIpAddress/$myNetworkBytes
...还是我失去了一些东西?
在Bash shell中尝试这个办法:
tcpdump -i eth0 tcp and dst host $MyIpAddress and not src net $MyNetworkAddress/$myNetworkBytes
或此相应制剂:
tcpdump -i eth0 ip proto \\tcp and dst host $MyIpAddress and not src net $MyNetworkAddress/$myNetworkBytes
在我的系统解析为类似:
tcpdump -i eth0 tcp and dst host 10.0.0.35 and not src net 10.0.0.0/24
如果你想看到到达目标主机的所有流量,而不仅仅是TCP协议流量:
个tcpdump -i eth0 dst host $MyIpAddress and not src net $MyNetworkAddress/$myNetworkBytes
一些注意事项:
我改变$myIpAddress/$myNetworkBytes
到$MyNetworkAddress/$myNetworkBytes
。这是因为您规则的明显目的是从本地网络中排除流量,并且指定网络地址的correct way用于指定网络的最低IP地址(称为网络地址)/网络掩码。如果指定为以$ myNetworkBytes的网络掩码的网络范围内的最低地址以外的任何地址,那么你会得到错误信息:
tcpdump: non-network bits set in "10.0.0.3/24"
在第一个例子“TCP”是关键字(man pcap-filter)中的,而在第二个示例中,'tcp'用作的值的ip proto
。为了表明第二个实例中的'tcp'是一个值而不是另一个'tcp'关键字,我需要用双反斜杠来转义'tcp'。它必须是一个双反斜杠,以便Bash解释器将一个反斜杠传递给libpcap解释器(Bash吃第一个反斜杠,libpcap得到第二个反斜杠)。为了减少双重转义混淆,可能很适合进入双引用命令的整个表达式部分习惯:
tcpdump -i eth0 "ip proto \tcp and dst host $MyIpAddress and not src net $MyNetworkAddress/$myNetworkBytes"
为了避免警告和惊喜,这是更好地使用接口说明符-i eth0
或任何界面,你的愿望。并非所有接口都必须分配IP地址,并且没有特定的情况,您可能会看到您无意看到的流量。在运行网络管理器的系统上尤其如此,该系统似乎对于要添加什么接口以及何时添加接口有自己的想法。
嘿,谢谢你的回答。我对UDP流量也很感兴趣,这就是为什么我没有在上面的过滤器中加入'tcp'的原因。我相信这是微不足道的,但是你能否澄清为什么我需要放置我的网络地址而不是我的IP地址?一旦我指定了网络字节的数量,它不应该具有相同的效果吗? – 2012-04-25 11:44:06
编辑回答地址评论 – 2012-04-25 12:11:45
以上都不适用于具有多个ips的盒子。
这个工作对我非常好DNS服务器上绑定了多个IP:
tcpdump -l -n -i pub dst port 53 and inbound
可能无法在的tcpdump
所有版本的工作,虽然。
# tcpdump -V
tcpdump version 4.1-PRE-CVS_2012_03_26
libpcap version 1.4.0
欣赏“入站”关键字 – bbonev 2017-08-17 23:19:55
-Q方向 --direction =方向 选择发送/接收哪些数据包应该 捕获方向的方向。可能的值是in',
out和inout。在所有平台上均不可用 。
不错!我不知道这个选项。 – 2017-02-15 08:26:07
什么是“icoming IP流量”?包广播地址也进来了。 – harper 2014-11-13 15:10:00