【数据库测试】tcpdump抓包


前言

tcpdump是一个常用的网络包分析工具,可以通过网络传输到本系统的TCP/IP以及其他网络的数据包。tcpdump使用libpcap库来抓取网络包,可以将网络中传输的数据包的头部完全截获进行分析,它支持针对网络层、协议层、主机、网络或端口的过滤,并提供and、or、not等逻辑语句进行过滤。


一、tcpdump基础语法

支持操作如下:
tcpdump option proto direction type
在这里插入图片描述

1)option过滤规则
[ -AbdDefhHIJKlLnNOpqStuUvxX# ] [ -B buffer_size ]
[ -c count ]
[ -C file_size ] [ -G rotate_seconds ] [ -F file ]
[ -i interface ] [ -j tstamp_type ] [ -m module ] [ -M secret ]
[ --number ] [ -Q|-P in|out|inout ]
[ -r file ] [ -V file ] [ -s snaplen ] [ -T type ] [ -w file ]
[ -W filecount ]
[ -E spi@ipaddr algo:secret,… ]
[ -y datalinktype ] [ -z postrotate-command ] [ -Z user ]
[ --time-stamp-precision=tstamp_precision ]
[ --immediate-mode ] [ --version ]
[ expression ]
2)proto过滤器
tcp/udp/icmp/ip/ip6/arp…
3)direction过滤器
src/dst/src or dst
4)type过滤器
host/net/port/portrage

二、常用过滤规则

1.基于ip地址过滤

1)使用host并指定ip进行过滤

tcpdump host 192.168.116.10

2)基于源ip和目标ip进行过滤

--基于源ip过滤
tcpdump src host 192.168.116.10
--基于目标ip过滤
tcpdump dst host 192.168.116.10

2.基于端口过滤

1)基于源端口和目标端口过滤

--基于源端口过滤
tcpdump src port 22
--基于两个端口过滤
tcpdump src port 22 or port 8080

2)基于端口协议过滤

--基于ssh协议过滤
tcpdump src port ssh
--基于tcp协议过滤
tcpdump port tcp

3.端口解析参数

1)-n:不把ip转换成域名,直接显示ip

tcpdump tcp -n

2)-nn:不把协议和端口号转换成名字

tcpdump tcp port ssh -nn

3)-N:不打印host的域名部分

tcpdump tcp port ssh -Q out -N

4.抓包结果文件处理

1)结果输出到文件
使用-w参数,文件格式为.pcap或.cap

tcpdump tcp -w tcp.pcap

2)读取结果文件
使用-w参数,文件格式为.pcap或.cap

tcpdump tcp -r tcp.pcap

5.组合过滤规则

and:逻辑并,同&&; or:逻辑或,同||; not 逻辑非,同!
1)抓取ip地址为192.168.116.10,并且端口为54321的包

tcpdump -i any host 192.168.116.10 and port 54321

2)抓取ip地址为192.168.116.10,并且端口为54321或者端口为51111的包

tcpdump -i any 'host 192.168.116.10 and (port 54321 && port 51111)'

三、tcpdump输出

01:16:16.272504 IP 192.168.116.10.49148 > 192.168.116.10.54321: Flags [P.], seq 3059446268:3059446310, ack 2760817304, win 354, options [nop,nop,TS val 20978756 ecr 20978756], length 42

在这里插入图片描述

01:16:16.272504:时间
IP:网络协议
192.168.116.10.49148:源端ip地址和端口
>:数据流向
192.168.116.10.54321:接收端ip地址和端口
Flags [P.], seq 3059446268:3059446310, ack 2760817304, win 354, options [nop,nop,TS val 20978756 ecr 20978756], length 42:数据包内容,Flags标识符,seq号,ack号,win窗口,数据长度length

Flags
[S]:SYN 开始连接
[P]:PSH 开始发送数据
[F]:FIN 结束连接
[R]:RST重置连接
[.]:没有Flags,除上面四种类型外其他情况,可能为ACK也可能是URG

四、使用wireshark工具解析tcpdump包

1)构造业务
使用jmeter进行创建50张表,并对表进行并发查询

--建表语句
create table if not exists tab${num}(id int,name varchar(40),age int,c text);
--插入数据
insert into tab${__Random(1,50,)} values(generate_series(1,1000),md5(random()::text),(random()*(30-10)+30)::int,now());
--查询语句
select * from tab${__Random(1,50,)};

2)使用tcpdump进行抓包

  • 直接抓包
    tcpdump -i ens33 -c30 -s0 -nn -A port 54321
![在这里插入图片描述](https://img-blog.csdnimg.cn/836b3c6892c34679a9c79abb68fba809.png#pic_center)

[root@localhost jp]# tcpdump  -i ens33 -c30 -s0 -nn -A  port 54321
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
00:16:19.087644 IP 192.168.116.1.57040 > 192.168.116.10.54321: Flags [S], seq 2575337855, win 64240, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
E..4..@....j..t...t
...1............4...............
00:16:19.087767 IP 192.168.116.10.54321 > 192.168.116.1.57040: Flags [S.], seq 1445376770, ack 2575337856, win 29200, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0
E..4..@.@..g..t
..t..1..V&........r.i...............
00:16:19.087994 IP 192.168.116.1.57040 > 192.168.116.10.54321: Flags [.], ack 1, win 4106, length 0
E..(..@....u..t...t
...1....V&..P..

  • 存储为离线文件
    tcp -i ens33 -s 0 -X -A port 54321 -w dbtest.cap
[root@localhost jp]# tcpdump tcp -i ens33 -s 0 -X -A  port 54321 -w dbtest.cap
tcpdump: listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
^C494479 packets captured
624628 packets received by filter
130149 packets dropped by kernel

3)使用wireshark解析报文
加载文件:“文件 -> 打开 -> dbtest.cap”
在这里插入图片描述
在这里插入图片描述

配置wireshark过滤条件:

  • “分析 -> 解码为 :TCP port -> 54321当前 -> PGSQL
  • “ip.addr == 192.168.116.1 and tcp.dstport > 54321”

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值