安装 系统版本
1 2 q @q:~$ cat /proc/versionLinux version 4 .15 .0 -112 -generic (buildd@lcy01 -amd64 -027 ) (gcc version 7 .5 .0 (Ubuntu 7 .5 .0 -3 ubuntu1 ~18 .04 )) #113 -Ubuntu SMP Thu Jul 9 23 :41 :39 UTC 2020
查看是否安装tcpdump
1 2 3 4 q @q:~$ tcpdump --vtcpdump version 4 .9 .0 libpcap version 1 .7 .4 OpenSSL 1 .0 .2 g 1 Mar 2016
捕获数据 获取网络适配器列表 1 2 3 4 5 6 7 8 9 10 11 12 q @q:~$ tcpdump -D1 .veth9 fbecfe [Up, Running] 2 .veth93 b2 d8 d [Up, Running] 3 .br-012 dfa3 c9 d33 [Up, Running] 4 .ens160 [Up, Running] 5 .any (Pseudo-device that captures on all interfaces) [Up, Running] 6 .lo [Up, Running, Loopback] 7 .docker0 [Up] 8 .nflog (Linux netfilter log (NFLOG) interface)9 .nfqueue (Linux netfilter queue (NFQUEUE) interface)10 .usbmon1 (USB bus number 1 )11 .usbmon2 (USB bus number 2 )
查看对应的ip
,主要关注ens
开头的和lo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 qz @qz:~$ ifconfigbr -012 dfa3 c9 d33 Link encap:Ethernet HWaddr 02 :42 :be:92 :c9 :ab inet addr:172.18.0.1 Bcast:172.18.255.255 Mask:255.255.0.0 inet6 addr: fe80 ::42 :beff:fe92 :c9 ab/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:266448880 errors:0 dropped:0 overruns:0 frame:0 TX packets:204891553 errors:0 dropped:0 overruns:0 carrier:0 collisions :0 txqueuelen:0 RX bytes:30218396039 (30 .2 GB) TX bytes:18753198765 (18 .7 GB) docker0 Link encap:Ethernet HWaddr 02 :42 :ac:18 :d0 :43 inet addr:172.17.0.1 Bcast:172.17.255.255 Mask:255.255.0.0 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions :0 txqueuelen:0 RX bytes:0 (0 .0 B) TX bytes:0 (0 .0 B) ens160 Link encap:Ethernet HWaddr 00 :50 :56 :9 e:04 :94 inet addr:192.168.4.119 Bcast:192.168.4.255 Mask:255.255.255.0 inet6 addr: fe80 ::250 :56 ff:fe9 e:494 /64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:7821246 errors:0 dropped:46269 overruns:0 frame:0 TX packets:1777370 errors:0 dropped:0 overruns:0 carrier:0 collisions :0 txqueuelen:1000 RX bytes:3617971239 (3 .6 GB) TX bytes:1557020128 (1 .5 GB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1 /128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:12824082898 errors:0 dropped:0 overruns:0 frame:0 TX packets:12824082898 errors:0 dropped:0 overruns:0 carrier:0 collisions :0 txqueuelen:1 RX bytes:24765414028745 (24 .7 TB) TX bytes:24765414028745 (24 .7 TB) veth93b2d8d Link encap:Ethernet HWaddr 32 :29 :2 c:5 f:48 :94 inet6 addr: fe80 ::3029 :2 cff:fe5 f:4894 /64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:244481243 errors:0 dropped:0 overruns:0 frame:0 TX packets:174711583 errors:0 dropped:0 overruns:0 carrier:0 collisions :0 txqueuelen:0 RX bytes:30367433549 (30 .3 GB) TX bytes:16031703102 (16 .0 GB) veth9fbecfe Link encap:Ethernet HWaddr 3 e:96 :14 :e7 :5 d:e7 inet6 addr: fe80 ::3 c96 :14 ff:fee7 :5 de7 /64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:21967637 errors:0 dropped:0 overruns:0 frame:0 TX packets:30183816 errors:0 dropped:0 overruns:0 carrier:0 collisions :0 txqueuelen:0 RX bytes:3581246810 (3 .5 GB) TX bytes:2722494237 (2 .7 GB)
抓取外部请求 1 2 3 4 q@q:~$ sudo tcpdump -X -s 0 port 8083 -w test.pcap [sudo] password for q: tcpdump: listening on veth9fbecfe, link-type EN10MB (Ethernet), capture size 262144 bytes
此时正在抓取8083端口的请求。因为为指定网络是配器,默认选择了第一个, 即veth9fbecfe
,但是请求是发往192.168.4.119
,即网络适配器ens160
, 所以还需参数 -i ens160
.
其他参数:
-w :保存结果为文件,后面跟文件名,为指定路径则保存在执行tcpdump
命令的当前目录下。
-X :把协议头和包内容都原原本本的显示出来
-s 0 :snaplen
的简写,snaplen
表示从一个包中截取的字节数。0表示包不截断,抓完整的数据包。默认的话 tcpdump
只显示部分数据包,默认68字节
1 2 q@q:~$ sudo tcpdump -i ens160 -X -s 0 port 8083 -w test.pcap tcpdump: listening on ens160, link-type EN10MB (Ethernet), capture size 262144 bytes
还有非常多使用的参数,但是日常使用记住自己常用的就好了。
等待请求完成,按ctrl + c
终止抓包,在当前目录下生成了test.pcap
文件。拷贝到windows机器下用wireshark
软件打开。
抓取同一主机内的数据 如果是在一台主机内部署了两个服务,互相调用,此时监听 ens160
是抓取不到的,应该改为 lo
即ip
为127.0.0.1
的网络适配.
查看数据 wireshark
打开test.pcap
之后如下:
通过接口url查找 比如有一个请求http://192.168.4.119:8083/api/server/time
,
ctrl+f
打开搜索界面。
第一个红框内是搜索范围,可选 分组列表 分组详情 分组字节流,第二个红框内是搜索方式,可选 显示过滤器 十六进制值 字符串 正则表达式。
如果是查询接口路径,选分组列表+字符串。可理解为Info下面的内容都可搜索。
查看请求内容 右键 -> 追踪流 -> Tcp流
右下角可修改字符格式UTF-8.
通过消息体查找 选分组详情 + 字符串。可直接搜索接口消息中的数据。
其他搜索方式 3种搜索范围都可选字符串和正则表达式,搜索方式选择了显示过滤器和十六进制值时搜索范围不可选,而且显示过滤器和十六进制值需要特殊的语法,有兴趣可自行研究。
全文完。