linux网络问题分析工具之tcpdump

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux网络问题分析工具之tcpdump相关的知识,希望对你有一定的参考价值。

tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析,用于网络分析和问题排查。

一、举例:

 1.如果想要获取主机192.168.228.246接收或发出的ssh包,并且不转换主机名使用如下命令: 
#tcpdump -nn -n src host 192.168.228.246 and port 22 and tcp


2.获取主机192.168.228.246接收或发出的ssh包,并把mac地址也一同显示:
# tcpdump -e src host 192.168.228.246 and port 22 and tcp -n -nn


3.过滤的是源主机为192.168.0.1与目的网络为192.168.0.0的报头:
tcpdump src host 192.168.0.1 and dst net 192.168.0.0/24 


4.过滤源主机物理地址为XXX的报头:
tcpdump ether src 00:50:04:BA:9B and dst


5.过滤源主机192.168.0.1和目的端口不是telnet的报头,并导入到tes.t.txt文件中:
Tcpdump src host 192.168.0.1 and dst port not telnet -l > test.txt


6.以 IP 与 Port Number 捉下 eth0 这个网卡上的数据包:

 tcpdump -i eth0 -nn


7.只取21的数据包:

tcpdump -i eth0 -nn port 21


8.如果我们只需要列出送到80端口的数据包,用dst port;如果我们只希望看到返回80端口的数据包,用src port。
#tcpdump –i eth0 host hostname and dst port 80 目的端口是80
或者
#tcpdump –i eth0 host hostname and src port 80 源端口是80 一般是提供http的服务的主机


9. and/or/not的使用:

and 或 or 或 not
#tcpdump -i eth0 host ! 211.161.223.70 and ! 211.161.223.71 and dst port 80


10.可以把结果放在一个cap文件中:

tcpdump -i eth0 -c 10 tcp and port 22 -w 1.cap

这里如果需要截取完整的内容最好加上s0:tcpdump -nn -s0 -i eth0 -c 10 tcp and port 22 -w 1.cap

查看cap文件内容:tcpdump -r 1.cap这个cap文件里面是一些数据文件内容而不是数据流向

如果要抓包的流向:tcpdump -i eth0 -c 10 tcp and port 22 >1.cap

二、格式:

tcpdump [-nn] [-i 接口] [-w 储存档名] [-c 次数] [-Ae]
                        [-qX] [-r 文件] [所欲捕获的数据内容]

三、参数:

-nn,直接以 IP 及 Port Number 显示,而非主机名与服务名称。
-i,后面接要「监听」的网络接口,例如 eth0, lo, ppp0 等等的接口。
-w,如果你要将监听所得的数据包数据储存下来,用这个参数就对了。后面接文件名。
-c,监听的数据包数,如果没有这个参数, tcpdump 会持续不断的监听
     直到用户输入 [ctrl]-c 为止。比如,我只抓100个包:tcpdump -c 100 -nn
-A,数据包的内容以 ASCII 显示,通常用来捉取 WWW 的网页数据包资料。
-e,使用资料连接层 (OSI 第二层) 的 MAC 数据包数据来显示。
-q,仅列出较为简短的数据包信息,每一行的内容比较精简。
-X,可以列出十六进制 (hex) 以及 ASCII 的数据包内容,对于监听数据包内容很有用。
-r,从后面接的文件将数据包数据读出来。那个「文件」是已经存在的文件,
     并且这个「文件」是由 -w 所制作出来的。
所欲捕获的数据内容:我们可以专门针对某些通信协议或者是 IP 来源进行数据包捕获。
     那就可以简化输出的结果,并取得最有用的信息。常见的表示方法有。
    ‘host foo‘, ‘host 127.0.0.1‘ :针对单台主机来进行数据包捕获。
     ‘net 192.168‘ :针对某个网段来进行数据包的捕获。
     ‘src host 127.0.0.1‘ ‘dst net 192.168‘:同时加上来源(src)或目标(dst)限制。
     ‘tcp port 21‘:还可以针对通信协议检测,如tcp、udp、arp、ether 等。
     除了这三种类型的关键字之外,其他重要的关键字如下:gateway, broadcast,less,
greater,还有三种逻辑运算,取非运算是 ‘not ‘ ‘! ‘, 与运算是‘and‘,‘&&‘;或运算 是‘o
r‘ ,‘||‘;

-s截取报文的字节。snaplen参数值为0,即是设置为默认值65535。



本文出自 “Victor的奋斗历程” 博客,请务必保留此出处http://victor2016.blog.51cto.com/6768693/1879025

以上是关于linux网络问题分析工具之tcpdump的主要内容,如果未能解决你的问题,请参考以下文章

linux 抓包工具之Tcpdump

linux命令之tcpdump

Linux命令之tcpdump

Linux系统诊断必备技能之二:tcpdump抓包工具详解

LINUX之TCPdump使用总结

tcpdump抓包分析详解