Linux抓包工具TCPdump,用过的网工,都说好用!                                   背景

tcpdump作为Linux常用的抓包工具,原理是它使用 libpcap 库来抓取网络数据包,这个库几乎在所有的 Linux/Unix 中都有,抓取到的数据包用来提供网络分析。工具支持针对网络层、协议、主机、网络或端口的过滤,并可使用and、or、not等逻辑指令来帮助使用者筛掉无用信息。

工具安装

一、tcpdump安装

1、云主机:CentOS 7.6

2、安装tcpdump

yum -y install tcpdump

Linux抓包工具TCPdump,用过的网工,都说好用!_数据

3. 版本查看

tcpdump --h

Linux抓包工具TCPdump,用过的网工,都说好用!_IP_02

可以看出tcpdump版本和libpcap库版本

二、tcpdump参数

该工具常用参数选项和作用:

参数

参数含义

-c

设置指定的数据包收取数;

-e

显示数据链路层信息;

-n

直接显示IP地址,不显示成域名;

-nn

显示查看 IP 和端口号,而且在抓取大量数据时非常高效

-s

tcpdump 默认只会截获前96字节的内容,要想截取指定字节的报文内容,可以使用-s number,number表示要截取的报文字节数,如果是 0 的话,表示截取报文全部内容;

-t

在输出的每一行不打印时间戳;

-v

输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息;

-vv

输出详细的报文信息;

-w

将抓获数据写入指定文件;

-i

选择要捕获的接口,通常是以太网卡或无线网卡;

proto

过滤指定协议协议的数据报文;

port

过滤指定端口的数据包报文;

host

过滤包含指定主机ip的数据报文;

三、命令选项操作演示及说明

1.首先先理解tcpdump指令的输出:

tcpdump

和普通指令终止的方式一样,Ctrl+C可终止执行tcpdump命令

Linux抓包工具TCPdump,用过的网工,都说好用!_IP_03

数据包格式为:

时间  源IP  端口/协议 > 目标IP  端口/协议  协议详细信息

PS:">"符号代表数据的方向

2. 指定抓包数量 -c

设定抓取6个数据包

tcpdump -c 6

信息展示如下:

Linux抓包工具TCPdump,用过的网工,都说好用!_抓包工具_04

3. 指定监听接口 -i

tcpdump -i eth0

Linux抓包工具TCPdump,用过的网工,都说好用!_抓包工具_05

4.打印更详细的数据包信息 -v和-vv

-v:

Linux抓包工具TCPdump,用过的网工,都说好用!_数据_06

-vv:

Linux抓包工具TCPdump,用过的网工,都说好用!_数据_07

可以看出-vv打印的信息更详细

5.不显示时间

tcpdump -t

Linux抓包工具TCPdump,用过的网工,都说好用!_IP_08

6.不显示域名-n -nn

-n:

Linux抓包工具TCPdump,用过的网工,都说好用!_抓包工具_09

-nn:

Linux抓包工具TCPdump,用过的网工,都说好用!_抓包工具_10

对比可以看出,-nn比-n显示的信息更详细,具体到ip和端口,更方便分析

7.增加过滤信息proto、port、host

tcpdump -n icmp
tcpdump port 22
tcpdump host x.x.x.x

协议:

Linux抓包工具TCPdump,用过的网工,都说好用!_IP_11

端口:

Linux抓包工具TCPdump,用过的网工,都说好用!_IP_12

主机ip:

Linux抓包工具TCPdump,用过的网工,都说好用!_IP_13

四、 逻辑表达式

逻辑表达式可以拼接出更复杂的过滤策略,更好的筛选数据包;

1. and(和)

tcpdump tcp and host 192.168.200.230
tcpdump tcp and src 192.168.200.230 and port 22 -nn

Linux抓包工具TCPdump,用过的网工,都说好用!_数据_14

Linux抓包工具TCPdump,用过的网工,都说好用!_IP_15

2. or(或)

tcpdump host 192.168.100.32 or 192.168.200.230

Linux抓包工具TCPdump,用过的网工,都说好用!_IP_16

可看到两个ip的包都有抓到

3. not(非)

有时候为了不让ssh远程端口影响到主要数据包的收集,所以一般需要禁止ssh数据包的输出。会用到以下两个方式:

tcpdump not tcp port 22


tcpdump ! tcp port 22

Linux抓包工具TCPdump,用过的网工,都说好用!_数据_17

4、and和!的结合使用

想要获取主机10.20.10.93除了和主机192.168.100.32之外所有主机通信的ip包,使用命令:
tcpdump ip host 10.20.10.93 and ! 192.168.100.32

Linux抓包工具TCPdump,用过的网工,都说好用!_IP_18