tcpdump命令--详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tcpdump命令--详解相关的知识,希望对你有一定的参考价值。

tcpdump是工作中必用的一道指令,如果熟悉掌握,将会很快的帮你解决问题!文章写的有点多,但是我认为都很有用!

先看看tcpdump的具体参数及意义:

-i:指定tcpdump监听的网络接口

-s:指定要监听数据包的长度

-c:指定要监听的数据包数量,达到指定数量后自动停止抓包

-w:指定将监听到的数据包写入文件中保存

-A:指定将每个监听到的数据包以ACSII可见字符打印

-n:指定将每个监听到数据包中的域名转换成IP地址后显示

-nn:指定将每个监听到的数据包中的域名转换成IP、端口从应用名称转换成端口号后显示

-e:指定将监听到的数据包链路层的信息打印出来,包括源mac和目的mac,以及网络层的协议

-p:将网卡设置为非混杂模式,不能与hostbroadcast一起使用

-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主要包括三种类型的关键字,第一种是关于类型的关键字,主要包括hostnetport,如上面的例(1)(2)(3),第二种是确定传输方向的关键字,主要包括srcdstsrc or dstsrc and dst,这些关键字指明了传输的方向,如上面的例(4)。第三种是协议关键字,包括fddiiparprarptcpudpimcp等,如上面的例(5)。


除了这三种类型的关键字外,还有其他重要的关键字,如:gatewaybroadcastlessgreater,还有三种逻辑运算,取非运算是‘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命令--详解的主要内容,如果未能解决你的问题,请参考以下文章

Linux tcpdump 命令详解

tcpdump命令详解

tcpdump 命令详解

tcpdump命令详解

Tcpdump命令参数详解

Linux tcpdump 命令详解