捕获tcpdump中的传入流量

Ric*_*son 25 packet-capture traffic tcpdump capture packet

在tcpdump中,如何捕获发往我机器的所有传入IP流量?我不关心我的本地交通.

我应该说:

tcpdump ip dst $MyIpAddress and not src net $myIpAddress/$myNetworkBytes
Run Code Online (Sandbox Code Playgroud)

......或者我错过了什么?

Eli*_*uft 23

在Bash shell中试试这个:

tcpdump -i eth0 tcp and dst host $MyIpAddress and not src net $MyNetworkAddress/$myNetworkBytes
Run Code Online (Sandbox Code Playgroud)

或等效配方:

tcpdump -i eth0 ip proto \\tcp and dst host $MyIpAddress and not src net $MyNetworkAddress/$myNetworkBytes
Run Code Online (Sandbox Code Playgroud)

在我的系统上,这解析为:

tcpdump -i eth0 tcp and dst host 10.0.0.35 and not src net 10.0.0.0/24
Run Code Online (Sandbox Code Playgroud)

如果要查看到目标主机的所有流量,而不仅仅是TCP协议流量,您可以执行以下操作:

tcpdump -i eth0 dst host $MyIpAddress and not src net $MyNetworkAddress/$myNetworkBytes
Run Code Online (Sandbox Code Playgroud)

一些说明:

  1. 我换$myIpAddress/$myNetworkBytes$MyNetworkAddress/$myNetworkBytes.这是因为规则的明显意图是排除来自本地网络的流量,指定网络地址的正确方法是指定网络的最低​​IP地址(称为网络地址)/ netmask.如果您指定网络掩码为$ myNetworkBytes的网络范围内的最低地址以外的任何地址,那么您将收到错误消息:

    tcpdump: non-network bits set in "10.0.0.3/24"
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在第一个例子"TCP"是一个关键字在libpcap的表达式语言(人PCAP滤波器),而在第二个例子中,"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"
    
    Run Code Online (Sandbox Code Playgroud)
  3. 为了避免警告和意外,最好使用接口说明符-i eth0或任何你想要的接口.并非所有接口都必须分配IP地址,并且不具体,您可能会看到您不打算看到的流量.在运行网络管理器的系统上尤其如此,它似乎对要添加的接口和何时接口有自己的想法.


kra*_*rad 15

以上都不适用于具有多个ips的盒子.

这在我的DNS服务器上运行得非常好,其中有许多ips绑定到它:

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
Run Code Online (Sandbox Code Playgroud)

  • 欣赏`inbound`关键字 (4认同)

小智 10

-Q direction --direction=direction 选择应捕获数据包的发送/接收方向。可能的值为in',out' 和 `inout'。并非在所有平台上都可用。