原创

使用tcpdump命令在Linux系统对网络流量抓包分析

因为需要对服务器流量进行抓包分析,抓包工具为tcpdump,记录一下该工具使用方法。

tcpdump是一款运行在Linux 系统上的命令行网络数据采集抓包工具,该工具通过抓取流经网络接口的数据包,对整个TCP/IP协议族进行协议解析和流量监控,是Linux系统常用的抓包工具。

一、tcpdump安装

官网地址:https://www.tcpdump.org/

gitHub地址:https://github.com/the-tcpdump-group/tcpdump

1.源码安装

通过官网地址下载最新版本tcpdump与libpcap安装包:

解压后进入对应的源码目录,先安装libpcap包,安装成功后再安装tcpdump包,编译安装命令如下:

./configure
make
make install

注意:源码安装的时候需要依赖flex、bison之类的工具,可以根据./configure配置脚本执行时候的提示进行对应工具安装。

2.命令安装

一般情况下,我们可以使用命令进行安装。

Centos7使用yum包管理器安装:

yum install tcpdump

Centos8及以上版本使用dnf包管理器安装:

dnf install tcpdump

安装完成后可以通过tcpdump -h命令查看工具使用说明:

二、常用参数说明

  • -i:监听指定的网络接口。
  • -c:限制抓包的数量,抓够指定的数据包量自动停止。
  • -C:限制文件大小,单位MB,到达指定大小后会新增一个文件继续保存,避免单个文件过大。
  • -G:限制抓包的时长,单位为秒,到达指定时长自动停止。
  • -n:禁用DNS解析,提高抓包效率。
  • -s:指定抓取数据包长度,默认只截取前96字节,可以通过-s 0抓取完整数据包,避免数据包被截断。
  • -w:将抓到的数据包保存到文件中。

三、过滤器说明

一般情况服务器上的网络流量都会很大,全部抓取可能会导致文件太大,我们可以通过过滤器仅抓取我们需要的数据包进行分析。

1.协议过滤

可以直接指定需要抓取协议的名称,可选的协议包括tcpudpicmparp等整个TCP/IP协议族内的协议都可以单独抓取。

2.传输方向过滤

传输方向一般与主机、端口过滤组合使用,可选的传输方向包括:

src:指定源地址(比如源主机、源端口等)

dst:指定目的地址(如目的主机、目的端口等)

默认的传输方向为src or dst,抓取所有方向的流量。

3.主机与网络端口过滤

主机过滤使用host关键字,比如过滤主机为192.168.1.1的数据包:

tcpdump host 192.168.1.1

或者省略host关键字,直接使用方向过滤限制主机,比如过滤源地址为192.168.1.1的数据包:

tcpdump src 192.168.1.1

端口过滤使用port关键字,比如过滤端口为80的数据包:

tcpdump port 80

过滤目的端口为80的数据包:

tcpdump dst port 80

网段过滤使用net关键字,比如过滤192.168.1.0/24网段:

tcpdump net 192.168.1.0/24

MAC地址过滤使用ether关键字,比如过滤源MAC地址为52:54:00:8d:f3:54的数据包:

tcpdump src ether 52:54:00:8d:f3:54

四、常用抓包命令

抓取经过eth0网卡全部流量:

tcpdump -i eth0

抓取经过eth0网卡,主机ip为192.168.1.1的全部数据:

tcpdump -i eth0 host 192.168.1.1

抓取经过eth0网卡,主机ip为192.168.1.1,端口为443的全部数据:

tcpdump -i eth0 host 192.168.1.1 and port 443

抓取经过eth0网卡,源地址ip为192.168.1.1,目的地址ip不是10.0.8.1的数据:

tcpdump -i eth0 'src host 192.168.1.1 and (not dst host 10.0.8.1)'

抓取所有网卡数据,抓取时长300秒,并将其保存在文件中:

tcpdump -i any -G 300 -w aaaa.pcap

抓取本地lo网卡,端口为8443的数据,并将其保存在文件中:

tcpdump -i lo port 8443 -w aaaa.pcap

抓包完成后,就可以将保存的文件下载下来,使用Wireshark进行分析啦。


扩展说明:

1.tcpdump命令需要root权限才可以正常运行。

正文到此结束
本文目录