您的位置:首页 > 理论基础 > 计算机网络

linux网络问题分析工具之tcpdump

2016-12-02 22:33 609 查看
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¶m2=12345" http://192.168.3.152
然后抓包:
tcpdump -i eth0 -n -A src host 192.168.1.100 and port 80
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  tcp dump