Linux生产服务器优化日记

tcpdump生产应用

2020-01-19  本文已影响0人  Saxon_323e

<<来自生产运维笔记>>

1,抓包HTTP(GET)请求:
sudo tcpdump -i eth0 -s 0 -A 'tcp dst port 80 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420'
2,抓包HTTP(POST)请求:
sudo tcpdump -i eth0 -s 0 -A 'tcp dst port 80 and (tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354)'
3,查看HTTP(ALL)请求和响应头以及数据:
sudo tcpdump -i eth1 -A -s 0 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
4,查看HTTP(ALL)请求和响应头以及数据(16进制显示):
sudo tcpdump -i eth1 -X -s 0 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
5.1,出口数据抓包(只看输出包):
tcpdump -i eth0 -s 0 -A '((tcp) and (port 80) and (dst host 10.111.178.77))'
5.2,出口数据抓包(看输出和输入包):
tcpdump -i eth0 -s 0 -A '((tcp) and (port 80) and (host 10.111.178.77))'
6,参数详情:
 tcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ]
                           [ -i 网络接口 ] [ -r 文件名] [ -s snaplen ]
                           [ -T 类型 ] [ -w 文件名 ] [表达式 ]
tcpdump的选项介绍
     -a     将网络地址和广播地址转变成名字;
     -d     将匹配信息包的代码以人们能够理解的汇编格式给出;
     -dd     将匹配信息包的代码以c语言程序段的格式给出;
     -ddd     将匹配信息包的代码以十进制的形式给出;
     -e      在输出行打印出数据链路层的头部信息,包括源mac和目的mac,以及网络层的协议;
     -f     将外部的Internet地址以数字的形式打印出来;
     -l     使标准输出变为缓冲行形式;
     -n     指定将每个监听到数据包中的域名转换成IP地址后显示,不把网络地址转换成名字;
      -nn     指定将每个监听到的数据包中的域名转换成IP、端口从应用名称转换成端口号后显示
     -t     在输出的每一行不打印时间戳;
     -v     输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息;
     -vv     输出详细的报文信息;
     -c     在收到指定的包的数目后,tcpdump就会停止;
     -F     从指定的文件中读取表达式,忽略其它的表达式;
     -i      指定监听的网络接口;
     -p     将网卡设置为非混杂模式,不能与host或broadcast一起使用
     -r     从指定的文件中读取包(这些包一般通过-w选项产生);
     -w     直接将包写入文件中,并不分析和打印出来;
     -s     snaplen 表示从一个包中截取的字节数。0表示包不截断,抓完整的数据包。默认的话 tcpdump 只显示部分数据包,默认68字节。
     -T     将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程调用)和snmp(简单网络管理协议;)
     -A     以ascii的方式显示数据包,抓取web数据时很有用。
    -X     告诉tcpdump命令,需要把协议头和包内容都原原本本的显示出来(tcpdump会以16进制和ASCII的形式显示),这在进行协议分析时是绝对的利器
上一篇下一篇

猜你喜欢

热点阅读