tcpdump 命令详解
1、抓取回環(huán)網(wǎng)口的包:tcpdump -i lo
2、防止包截?cái)?#xff1a;tcpdump -s0
3、以數(shù)字顯示主機(jī)及端口:tcpdump -n
關(guān)鍵字說(shuō)明
?第一種是關(guān)于類型的關(guān)鍵字,主要包括host,net,port, 例如 host 210.27.48.2,指明 210.27.48.2是一臺(tái)主機(jī),net 202.0.0.0 指明 202.0.0.0是一個(gè)網(wǎng)絡(luò)地址,port 23 指明端口號(hào)是23。如果沒有指定類型,缺省的類型是host.
 第二種是確定傳輸方向的關(guān)鍵字,主要包括src , dst ,dst or src, dst and src ,這些關(guān)鍵字指明了傳輸?shù)姆较颉Ee例說(shuō)明,src 210.27.48.2 ,指明ip包中源地址是210.27.48.2 , dst net 202.0.0.0 指明目的網(wǎng)絡(luò)地址是202.0.0.0 。如果沒有指明方向關(guān)鍵字,則缺省是src or dst關(guān)鍵字。
如果我們只需要列出送到80端口的數(shù)據(jù)包,用dst port;如果我們只希望看到返回80端口的數(shù)據(jù)包,用src port。?
#tcpdump –i eth0 host hostname and dst port 80? //目的端口是80
 或者
 如果條件很多的話? 要在條件之前加and 或 or 或 not
 如果在ethernet 使用混雜模式 系統(tǒng)的日志將會(huì)記錄
 May? 7 20:03:46 localhost kernel: eth0: Promiscuous mode enabled.
 May? 7 20:03:46 localhost kernel: device eth0 entered promiscuous mode
 May? 7 20:03:57 localhost kernel: device eth0 left promiscuous mode
 tcpdump對(duì)截獲的數(shù)據(jù)并沒有進(jìn)行徹底解碼,數(shù)據(jù)包內(nèi)的大部分內(nèi)容是使用十六進(jìn)制的形式直接打印輸出的。顯然這不利于分析網(wǎng)絡(luò)故障,通常的解決辦法是先使用帶-w參數(shù)的tcpdump 截獲數(shù)據(jù)并保存到文件中,然后再使用其他程序進(jìn)行解碼分析。當(dāng)然也應(yīng)該定義過(guò)濾規(guī)則,以避免捕獲的數(shù)據(jù)包填滿整個(gè)硬盤。
 第三種是協(xié)議的關(guān)鍵字,主要包括fddi,ip,arp,rarp,tcp,udp等類型。Fddi指明是在FDDI(分布式光纖數(shù)據(jù)接口網(wǎng)絡(luò))上的特定 的網(wǎng)絡(luò)協(xié)議,實(shí)際上它是"ether"的別名,fddi和ether具有類似的源地址和目的地址,所以可以將fddi協(xié)議包當(dāng)作ether的包進(jìn)行處理和 分析。其他的幾個(gè)關(guān)鍵字就是指明了監(jiān)聽的包的協(xié)議內(nèi)容。如果沒有指定任何協(xié)議,則tcpdump將會(huì)監(jiān)聽所有協(xié)議的信息包。
?
? 除了這三種類型的關(guān)鍵字之外,其他重要的關(guān)鍵字如下:gateway, broadcast,less,greater,還有三種邏輯運(yùn)算,取非運(yùn)算是 'not ' '! ', 與運(yùn)算是'and','&&;或運(yùn)算 是'or' ,'||';這些關(guān)鍵字可以組合起來(lái)構(gòu)成強(qiáng)大的組合條件來(lái)滿足人們的需要,下面舉幾個(gè)例子來(lái)說(shuō)明。
 ? 普通情況下,直接啟動(dòng)tcpdump將監(jiān)視第一個(gè)網(wǎng)絡(luò)界面上所有流過(guò)的數(shù)據(jù)包。
使用-i參數(shù)指定tcpdump監(jiān)聽的網(wǎng)絡(luò)界面,這在計(jì)算機(jī)具有多個(gè)網(wǎng)卡時(shí)非常有用,
 使用-c參數(shù)指定要監(jiān)聽的數(shù)據(jù)包數(shù)量,
 使用-w參數(shù)指定將監(jiān)聽到的數(shù)據(jù)包寫入文件中保存
以下是示例:
 A 想要截獲所有210.27.48.1 的主機(jī)收到的和發(fā)出的所有的數(shù)據(jù)包:
 B 想要截獲主機(jī)210.27.48.1 和主機(jī)210.27.48.2 或210.27.48.3的通信,使用命令:(在命令行中使用括號(hào)時(shí),要加轉(zhuǎn)義)
 C 如果想要獲取主機(jī)210.27.48.1除了和主機(jī)210.27.48.2之外所有主機(jī)通信的ip包,使用命令:
 D 如果想要獲取主機(jī)210.27.48.1接收或發(fā)出的telnet包,使用如下命令:
 E 對(duì)本機(jī)的udp 123 端口進(jìn)行監(jiān)視 123 為ntp的服務(wù)端口
?
F 系統(tǒng)將只對(duì)名為hostname的主機(jī)的通信數(shù)據(jù)包進(jìn)行監(jiān)視。主機(jī)名可以是本地主機(jī),也可以是網(wǎng)絡(luò)上的任何一臺(tái)計(jì)算機(jī)。下面的命令可以讀取主機(jī)hostname發(fā)送的所有數(shù)據(jù):?
#tcpdump -i eth0 src host hostnameG 下面的命令可以監(jiān)視所有送到主機(jī)hostname的數(shù)據(jù)包:?
#tcpdump -i eth0 dst host hostname
 H? 我們還可以監(jiān)視通過(guò)指定網(wǎng)關(guān)的數(shù)據(jù)包:?
 I 如果你還想監(jiān)視編址到指定端口的TCP或UDP數(shù)據(jù)包,那么執(zhí)行以下命令:?
 J 如果想要獲取主機(jī)210.27.48.1除了和主機(jī)210.27.48.2之外所有主機(jī)通信的ip包,使用命令:
 K 想要截獲主機(jī)210.27.48.1 和主機(jī)210.27.48.2 或210.27.48.3的通信,使用命令:(在命令行中使用括號(hào)時(shí),要加轉(zhuǎn)義)
?
表明在00:02:03點(diǎn)的時(shí)候,211.167.237.199通過(guò)ssh源端口連接到221.216.165.189的1467端口
#tcpdump -i eth1 src host 211.167.237.199 and dst port 1467 00:09:27.603075 IP 211.167.237.199.ssh > 221.216.165.189.1467: P 180400:180544(144) ack 2833 win 8576 00:09:27.605631 IP 211.167.237.199.ssh > 221.216.165.189.1467: P 180544:180688(144) ack 2881 win 8576
 觀看網(wǎng)卡傳送、接收數(shù)據(jù)包的狀態(tài)
?
總結(jié)
以上是生活随笔為你收集整理的tcpdump 命令详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
 
                            
                        - 上一篇: C++设计模式之模板模式(templat
- 下一篇: 如何使用freeMarker生成doc、
