tcpdump命令--詳解
阿新 • • 發佈:2017-06-12
tcpdump命令詳解 1)(2)(3),第二種是確定傳輸方向的關鍵字,主要包括src,dst,src or dst,src and dst,這些關鍵字指明了傳輸的方向,如上面的例(4)。第三種是協議關鍵字,包括fddi,ip,arp,rarp,tcp,udp,imcp等,如上面的例(5)。
tcpdump是工作中必用的一道指令,如果熟悉掌握,將會很快的幫你解決問題!文章寫的有點多,但是我認為都很有用!
先看看tcpdump的具體參數及意義:
-i:指定tcpdump監聽的網絡接口
-s:指定要監聽數據包的長度
-c:指定要監聽的數據包數量,達到指定數量後自動停止抓包
-w:指定將監聽到的數據包寫入文件中保存
-A:指定將每個監聽到的數據包以ACSII可見字符打印
-n:指定將每個監聽到數據包中的域名轉換成IP地址後顯示
-nn:指定將每個監聽到的數據包中的域名轉換成IP、端口從應用名稱轉換成端口號後顯示
-e:指定將監聽到的數據包鏈路層的信息打印出來,包括源mac和目的mac,以及網絡層的協議
-p :將網卡設置為非混雜模式,不能與host或broadcast一起使用
-r:指定從某個文件中讀取數據包
-S:指定打印每個監聽到的數據包的TCP絕對序列號而非相對序列號
OK,參數介紹先到這裏,下面看幾個具體例子
先來看一個比較基本的用法:
#tcpdump -i eth0 @eth0為參數值,表示需要抓包的網口,這是個必需參數哦。
tcpdump支持很多的關鍵字,下面先看幾個例子:
#tcpdump -i eth0 host 192.168.0.250 @在網口eth0上抓取主機地址為192.168.0.250的所有數據包。
#tcpdump -i eth0 net 192.168.0.0/24 @在網口eth0上抓取網絡地址為192.168.0.0/24的所有數據包
#tcpdump -i eth0 port 80 @在網口eth0上抓取端口為80的所有數據包(註意,這裏不區分是源端口還是目的端口) 當然,我們也可以指定源端口或目的端口
#tcpdump -i eth0 src port 80 and dst port 6100 @在網口eth0上抓取源端口為80且目的端口為6100的數據包,這裏用到了and邏輯運算符,後面再介紹
#tcpdump -i eth0 icmp @在網口eth0上抓取所有icmp協議的數據包 以上幾個例子,可以大致體現出tcpdump的基本用法。
實際上,tcpdump主要包括三種類型的關鍵字,第一種是關於類型的關鍵字,主要包括host,net,port,如上面的例(
除了這三種類型的關鍵字外,還有其他重要的關鍵字,如:gateway,broadcast,less,greater,還有三種邏輯運算,取非運算是‘not‘、‘!‘,與運算符是‘and‘、‘&&‘、
或運算符是‘or‘、‘||‘,這些關鍵字可以組合起來構成強大的組合條件來滿足我們的需求。
#tcpdump -i eth0 -s 1400 -nn host 192.168.0.250 and ! 192.168.0.74 and icmp -e @抓取網口eth0上192.168.0.250與除192.168.0.74外的其他主機之間的icmp報文
#tcpdump -i eth0 -s 1400 -nn tcp and \(host 192.168.0.250 and ! 192.168.0.74\) @抓取網口eth0上192.168.0.250與除192.168.0.74外的所有tcp數據包, 這裏用到了括號,註意,在tcpdump中使用括號時必須用轉義
#tcpdump -i eth0 ether src or dst 00:21:85:6C:D9:A3 @抓取網口eth0上源mac地址或目的mac地址為00:21:85:6C:D9:A3的所有數據包, 註意,這裏的mac地址格式必須以‘:‘分隔。
本文出自 “老七Linux運維管理” 博客,請務必保留此出處http://asd9577.blog.51cto.com/4291946/1934251
tcpdump命令--詳解