专业的编程技术博客社区

网站首页 > 博客文章 正文

tcpdump抓包实战(tcpdump抓包命令参数)

baijin 2024-11-05 09:27:38 博客文章 10 ℃ 0 评论

俗话说,工欲善其事,必先利其器。在Linux服务器网络运维中,经常会遇到需要获取网卡通讯报文分析的场景。在报文抓取方面,tcpdump是一款非常好用的工具,本文主要介绍tcpdump的实战应用,帮助大家快速定位和解决问题。

一、安装tcpdump

1、在线安装

直接通过yum安装即可

yum install tcpdump

2、离线安装

局域网环境下,无法通过yum安装,需要通过安装包离线安装。

步骤一、下载安装包

可从官网直接下载,依赖两个安装包libcap-1.5.3.tar.gz、tcpdump-4.5.1.tar.gz

libcap-1.5.3.tar.gz
https://www.tcpdump.org/release/libpcap-1.5.3.tar.gz

tcpdump-4.5.1.tar.gz
https://www.tcpdump.org/release/tcpdump-4.5.1.tar.gz

步骤二、解压并安装

1、安装libpcap
tar -zxvf libpcap-1.5.3.tar.gz 
cd libpcap-1.5.3 
./configure 
sudo make install 

2、安装tcpdump
tar -zxvf tcpdump-4.5.1.tar.gz 
cd tcpdump-4.5.1 
./configure sudo 
make install

3、常用参数

tcpdump支持针对网络层、协议、主机、网络或端口的过滤。以下是一些常用参数和使用案例。

-i 指定网卡
   任意网卡: tcpdump -i any 
   指定网卡: tcpdump -i eth1

-c 指定抓包数量,当流量比较大时,靠人工CTRL+C还是抓的太多,可能会导致服务器宕机,可以用-c参数指定抓多少个包
   tcpdump -c 1000 

-nn 单个 n 表示不解析域名,直接显示 IP;两个 n 表示不解析域名和端口,方便查看 IP 和端口号。

-w  将抓取的报文写入文件,为wireshark提供分析

host 指定主机(源地址、目的地址的包都会抓取)

案例1、抓取指定网卡报文,并写入tcpdump.pcap文件

tcpdump -i em3 -nn host 192.168.0.100 -c 10000 -w tcpdump.pcap

案例2、抓取任意网卡报文,并写入tcpdump.pcap文件

tcpdump -i any -nn host 192.168.0.100 -c 10000 -w tcpdump.pcap

二、常用命令

1、按主机过滤

抓取所有经过eth1,目的或源地址是192.168.1.1的网络数据

tcpdump -i eth1 host 192.168.1.1

指定源地址

tcpdump -i eth1 src host 192.168.1.1

指定目的地址

tcpdump -i eth1 dst host 192.168.1.1

2、按端口过滤

抓取所有经过eth1,目的或源端口是25的网络数据

tcpdump -i eth1 port 25

指定源端口

tcpdump -i eth1 src port 25

指定目的端口

tcpdump -i eth1 dst port 25

3、按网络过滤

所有发往网段 192.168.x.x 或从网段 192.168.x.x 发出的流量

tcpdump -i eth1 net 192.168

抓取所有从 192.168.x.x网段发出的流量

tcpdump -i eth1 src net 192.168

抓取所有发往 192.168.x.x网段的流量

tcpdump -i eth1 dst net 192.168

4、按协议过滤

tcpdump -i eth1 arp
tcpdump -i eth1 ip
tcpdump -i eth1 tcp
tcpdump -i eth1 udp
tcpdump -i eth1 icmp

5、按照dns过滤

tcpdump -i eth1 udp dst port 53

三、抓取实战

1、综合过滤

抓取所有经过eth1,目的地址是192.168.1.254或192.168.1.200端口是80的TCP数据

tcpdump -i eth1 '((tcp) and (port 80) and ((dst host 192.168.1.254) or (dst host 192.168.1.200)))'

抓取所有经过eth1,目标MAC地址是00:01:02:03:04:05的ICMP数据

tcpdump -i eth1 '((icmp) and ((ether dst host 00:01:02:03:04:05)))'

抓取所有经过eth1,目的网络是192.168,但目的主机不是192.168.1.200的TCP数据

tcpdump -i eth1 '((tcp) and ((dst net 192.168) and (not dst host 192.168.1.200)))'

2、抓取大于600字节的包

tcpdump -i eth1 'ip[2:2] > 600'

这些常用命令,可以解决实际运维过程中80%的问题,如果有定制的分析需求,可以通过man tcpdump查看更多参数说明和用法。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表