2012-03-22 50 views
2

我想檢查我的連接池庫創建到特定主機的連接數。我得到了tcpdump,從這個如何獲得使用wireshark建立連接的數量。我可以使用tcptrace工具來獲得它,但我想知道如何使用wireshark來完成它。如何使用wireshark從tcpdump獲取特定主機的連接數(計數)

+0

爲什麼選擇Wireshark? [Bro](http://www.bro-ids.org)更適合面向連接的跟蹤分析。您想要的信息可以從默認連接日誌中隨時獲得。 – mavam 2012-04-07 18:36:46

回答

2

有多少可能是多少併發會有點困難,但有多少數據包捕獲的過程要容易得多,而且由於您正在關閉tcpdump,因此我會假設這就是你正在尋找。

如果你的源IP 192.168.1.1是與目標主機爲192.168.1.2然後應用過濾器這樣的:

ip.src_host == 192.168.1.1 & & ip.dst_host == DESTADDRESS & & TCP .flags.syn == 1

如果您的問題中的目標主機也可能建立了與源主機的連接,則源主機也將發回SYN,ACK以接受這些連接,所以將其過濾掉,將其添加到最後:

& & tcp.flags.ack == 0

當應用該過濾器,只有新的連接將被顯示出來,然後你可以看看在狀態欄下的Wireshark的底部。它會顯示你有很多數據包,總共有多少個正在顯示。顯示的數據包數量將是捕獲期間建立的連接數量。

如果您在任何給定時間都在尋找併發連接,那麼Wireshark可能不是您的最佳選擇,因爲在這種情況下,您需要查找發生在相應FIN或RST之前的連接數(SYN)的連接),這更多的是統計功能。

另外值得注意的是,如果捕獲源位於源主機上,則該捕獲中的SYN /連接不保證被接受/成功。您還需要驗證是否爲每個連接執行了完整的三方握手,即SYN,SYN-ACK,ACK。

+0

謝謝@ D.J. – Rabi 2012-09-10 15:57:41

0

試試這個 - 它可能不是100% - 因爲它只能看到連接上他們的一些數據 - 並假設一些理想主義的東西 - 但它足以應付大多數情況良好:

tcpdump -tt -n -r __file__ \ 
    | grep '\.10011' \ 
    | sed -e 's/^.*IP [^>]\+\.\([^ ]\+\) > 10.0.10.1.13000:.*$/\1:&/g' \ 
     -e 's/^.*IP 10.0.10.1.13000 > [^:]\+\.\([^ ]\+\): .*$/\1:&/g' \ 
    | sed -e 's/ IP .* > .*: Flags \[[^]]*S[^]]*\].*/:open/g' \ 
     -e 's/ IP .* > .*: Flags \[[^]]*[RF][^]]*\].*/:close/g' \ 
    | grep -v 'length 0' \ 
    | sed 's/ IP .* > .*: Flags .*/:isopen/g' \ 
    | gawk -F: 'BEGIN{ cons["x"]=1; }{ 
     if ($3 == "open" || $3 == "isopen") { cons[$1] = 1; } 
     if ($3 == "close") { delete cons[$1]; }; 
     printf("%s %s %s\n", strftime("%Y%m%dT%H%M%S",int($2)), $2, (length(cons) - 1)); }' \ 
    | uniq -f 2 

欣賞的意見,修復或更正。注 - 這將檢查特定的端口和IP(10.0.10.1.13000) - 您可以調整它以使其適用於任何端口和IP

相關問題