2012-04-24 162 views
18

在tcpdump中,如何捕獲所有傳入我的機器的傳入IP流量?我不在乎我的本地流量。在tcpdump中捕獲傳入流量

如果我只是說:

tcpdump ip dst $MyIpAddress and not src net $myIpAddress/$myNetworkBytes 

...還是我失去了一些東西?

+0

什麼是「icoming IP流量」?包廣播地址也進來了。 – harper 2014-11-13 15:10:00

回答

20

在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 

一些注意事項:

  1. 我改變$myIpAddress/$myNetworkBytes$MyNetworkAddress/$myNetworkBytes。這是因爲您規則的明顯目的是從本地網絡中排除流量,並且指定網絡地址的correct way用於指定網絡的最低​​IP地址(稱爲網絡地址)/網絡掩碼。如果指定爲以$ myNetworkBytes的網絡掩碼的網絡範圍內的最低地址以外的任何地址,那麼你會得到錯誤信息:

    tcpdump: non-network bits set in "10.0.0.3/24" 
    
  2. 在第一個例子「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" 
    
  3. 爲了避免警告和驚喜,這是更好地使用接口說明符-i eth0或任何界面,你的願望。並非所有接口都必須分配IP地址,並且沒有特定的情況,您可能會看到您無意看到的流量。在運行網絡管理器的系統上尤其如此,該系統似乎對於要添加什麼接口以及何時添加接口有自己的想法。

+0

嘿,謝謝你的回答。我對UDP流量也很感興趣,這就是爲什麼我沒有在上面的過濾器中加入'tcp'的原因。我相信這是微不足道的,但是你能否澄清爲什麼我需要放置我的網絡地址而不是我的IP地址?一旦我指定了網絡字節的數量,它不應該具有相同的效果嗎? – 2012-04-25 11:44:06

+0

編輯回答地址評論 – 2012-04-25 12:11:45

10

以上都不適用於具有多個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 
+1

欣賞「入站」關鍵字 – bbonev 2017-08-17 23:19:55

0

-Q方向 --direction =方向 選擇發送/接收哪些數據包應該 捕獲方向的方向。可能的值是in', out和inout。在所有平臺上均不可用 。

+0

不錯!我不知道這個選項。 – 2017-02-15 08:26:07