Linux命令--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 ,如上面的例( 1 )( 2 )( 3 ),第二种 是确定传输方向的关键字,主要包括 src dst src or dst src and dst ,这些关键字指明了传输的方向,如上面的例( 4 )。第三种是协议关键字,包括 fddi ip arp rarp tcp udp imcp 等,如上面的例( 5 )。 除了这三种类型的关键字外,还有其他重要的关键字,如: 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地址格式必须以':'分隔。

2017-06-20更新
#tcpdump -nn -c 100          
-c:指定抓包数量为100
#tcpdump -nn -i eth1         
-i:指定网卡为eth1
#tcpdump -nn port 80          
port:指定端口为80
#tcpdump -nn tcp and port 80          
:指定抓取类型为tcp且端口为80
#tcpdump -nn tcp and port 80 and host 221.212.212.24          
:指定抓取类型为tcp且端口为80 且来源ip为221.212.212.24的包
#tcpdump -nn tcp and port 80 and host 221.212.212.24 -w 1.cap          
:指定抓取类型为tcp且端口为80 且来源ip为221.212.212.24的包并保存在1.cap
#tcpdump -r 1.cap            
:查看数据包的流向(但是不可以使用cat直接查看
#tcpdump -nn tcp and port 80 and host 221.212.212.24 > 2.cap          
:指定抓取类型为tcp且端口为80 且来源ip为221.212.212.24的包并重定向到2.cap
#cat 2.cap                  
:即可查看
#tshark -n -t a -R http.request -T fields -e "frame.time" -e "ip.src" -e "http.host" -e "http.request.method" -e "http.request.uri"​ 
@首先要启动80端口,nginx或者httpd都可以,然后你还要一边抓包一边在浏览器里访问它。
(如上命令,即可显示实时的网页浏览状况,) 

转载于:https://my.oschina.net/zhdya/blog/1502656

你可能感兴趣的:(操作系统,运维,网络)