👨🏻‍🎓博主介绍:大家好!我是李大白,一名运维容器运维工程师,热爱分享知识🌟 

🌈擅长领域:云原生、数据库、自动化运维

🙏🏻如果本文章对小伙伴们有帮助的话,🍭关注+👍🏻点赞+🗣评论+📦收藏!

🤝如果在文章描述时如有错,恳请各位大佬指正,在此感谢!!!

🍂 落叶而知秋,博闻而强识!

📕  精品专栏:Harbor进阶实战(企业级)



协议分析器概述


协议分析器是捕获网络数据包进行协议分析的工具。

常用的协议分析器:

Wireshark、Tcpdump


Tcpdump工具的用途


Tcpdump可以将网络中传输的数据包完全截取下来提供分析。

    Tcpdump支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来去掉无用。


数据包写入和读取

    一般情况下,在进行网络故障排查的最好方法是使用抓包工具进行抓包来分析网络状况,以此来分析网络故障的原因。抓包过程中将抓取的数据保存起来。

 

官方网站:http://www.tcpdump.org

 

Tcpdump工具安装


    Linux系统默认安装tcpdump。如果没有安装可执行以下命令安装(CentOS7):

$ yum install  -y tcpdump
$ tcpdump --version #查看版本
tcpdump version 4.9.2
libpcap version 1.5.3
OpenSSL 1.0.2k-fips 26 Jan 2017(发布时间)

 

Tcpdump工具使用


Tcpdump表达式

表达式用于筛选输了哪些类型的数据包,如果没有给定表达式,所有的数据包都会输,否则只输符合表达式的数据包。

停止抓包:CTRL + C

 

数据包状态

  • Captured:抓取到的数据包数量;
  • Received:接收的数据包数量;
  • Dropped:被丢弃的数据包数量;

 

数据包分类

  •  In流入;
  •  Out:流出;
  •  Inout:流入流出;


常用选项

-c: 指定抓取数据包的数量;

-D:查看tcpdump可以抓取流量的网卡名称;

-i:指定从哪张网卡进行抓包,-i any则抓取所有网卡上的数据包;

-w:  将抓包结果保存到指定文件

-r:  从一个保存的数据包文件中读取数据包;

-V: 读取一个列表文件中包含的数据包名称,从而读取多个数据包文件;

-i eth0: 只抓经过接口eth0的包,-i any,表示捕获所以interface的包

-s 0 : 抓取数据包时默认抓取长度为68字节。加上-s 0 后可以抓到完整的数据包

dst port ! 22 : 不抓取目标端口是22的数据包

-w ./net.pcap : 保存成pcap文件,方便用wireshark分析

 src net 192.168.171.0/24 : 数据包的源网络地址为192.168.171.0/24

src: IP包源地址;

dst: 目标网络地址

-t:在每行的输中不输时间

-tt:在每行的输中会输时间戳

 

 

指定数据包抓取方向:

-Q: 指定抓取数据包的方向;

 

 

输选项:

-e: 输数据链路层的头部;

-q: 快速打印输

-x: 输包发的头部;

-xx:

-v: 输;

-v: 输的;

 

$ tcpdump  -w test1.pcap
tcpdump: listening on docker0, link-type EN10MB (Ethernet), capture
size 44 bytes
^C0 packets captured #抓取到的包数量
0 packets received by filter
#接收数据包数量
0 packets dropped by kernel #被丢弃数据包数量

 

$ tcpdump host 192.168.2.22

 

抓取指定网卡流量

一台服务器可能拥有多张网卡来连接不同的网络。如果要分析不同的网络就需要针对单张网卡进行抓包分析。

查看网卡

$ tcpdump -i any host 134.194.16.8 -n -Q inout -s 0 -w tcpdump124-all.pcap

 

指定输格式

默认情况下,输本地主机名而非IP地址,使用-n输主机对应的IP地址和端口号;