博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux网络问题分析工具之tcpdump
阅读量:5954 次
发布时间:2019-06-19

本文共 2513 字,大约阅读时间需要 8 分钟。

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


抓443的内容:

 tcpdump -i eth0 -nnA 'port 443' >1.cap


抓指定源主机和端口:

tcpdump -i eth0 -nnA 'port 443 and src host xx.xx.xx.xx'

指定目标主机和端口:

tcpdump -i eth0 -nnA 'port 443 and dst  host xx.xx.xx.xx'

二、格式:

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。


四、怎么测试post内容:

curl -d "param2=nickwolfe&param2=12345" 

然后抓包:

tcpdump -i eth0 -n -A  src host 192.168.1.100 and port 80

本文转自chenzudao51CTO博客,原文链接:http://blog.51cto.com/victor2016/1879025 ,如需转载请自行联系原作者

你可能感兴趣的文章
利用WCF改进文件流传输的三种方式
查看>>
程序员的素养
查看>>
Spring学习总结(2)——Spring的常用注解
查看>>
关于IT行业人员吃的都是青春饭?[透彻讲解]
查看>>
钱到用时方恨少(随记)
查看>>
mybatis主键返回的实现
查看>>
org.openqa.selenium.StaleElementReferenceException
查看>>
Android Intent传递对象为什么要序列化?
查看>>
数论之 莫比乌斯函数
查看>>
linux下查找某个文件位置的方法
查看>>
python之MySQL学习——数据操作
查看>>
Harmonic Number (II)
查看>>
长连接、短连接、长轮询和WebSocket
查看>>
day30 模拟ssh远程执行命令
查看>>
做错的题目——给Array附加属性
查看>>
Url.Action取消字符转义
查看>>
JQuery选择器大全
查看>>
Gamma阶段第三次scrum meeting
查看>>
python3之装饰器修复技术@wraps
查看>>
[考试]20150606
查看>>