文章目录
tcpdump
是一个强大的命令行工具,用于捕获和分析网络流量。以下是 tcpdump 的详细使用说明,包括安装、基本命令、高级用法和过滤示例。
tcpdump_6">1. 安装tcpdump
在Debian/Ubuntu系统
sudo apt-get update
sudo apt-get install tcpdump
在Red Hat/CentOS系统
sudo yum install tcpdump
验证安装
tcpdump --version
2. 基本用法
查看可用网络接口
tcpdump -D
输出示例:
1. eth0
2. wlan0
3. any (pseudo-device that captures on all interfaces)
捕获所有流量
tcpdump -i eth0
说明:
-i eth0
:监听接口eth0
的流量。如果不指定接口,默认使用第一个可用接口。- 需要
sudo
权限。
保存捕获的数据
将捕获的数据保存到文件:
tcpdump -i eth0 -w capture.pcap
保存的数据可用 Wireshark 等工具进行分析。
从文件读取数据
tcpdump -r capture.pcap
3. 高级用法
显示更多详细信息
tcpdump -i eth0 -v
tcpdump -i eth0 -vv
tcpdump -i eth0 -vvv
说明:
-v
:显示更详细的协议信息。-vv
:显示额外的详细信息,例如TTL、选项等。-vvv
:最详细模式,显示完整数据包信息。
限制捕获数据包数量
tcpdump -i eth0 -c 10
捕获10个数据包后停止。
指定数据包大小
tcpdump -i eth0 -s 0
说明:
-s 0
:捕获整个数据包(默认只捕获前96字节)。
实时输出时间戳
tcpdump -i eth0 -tt
4. 过滤流量
过滤特定协议
tcpdump -i eth0 tcp
tcpdump -i eth0 udp
tcpdump -i eth0 icmp
过滤IP地址
捕获来自指定IP地址的数据包:
tcpdump -i eth0 src 192.168.1.1
捕获发往指定IP地址的数据包:
tcpdump -i eth0 dst 192.168.1.1
捕获任一方向:
tcpdump -i eth0 host 192.168.1.1
过滤端口
捕获特定端口的流量:
tcpdump -i eth0 port 80
捕获源端口:
tcpdump -i eth0 src port 22
捕获目的端口:
tcpdump -i eth0 dst port 443
组合条件
使用逻辑运算符 and
、or
、not
组合过滤条件:
tcpdump -i eth0 src 192.168.1.1 and tcp
tcpdump -i eth0 port 80 or port 443
tcpdump -i eth0 not icmp
5. 常见场景示例
捕获HTTP流量
tcpdump -i eth0 tcp port 80
捕获HTTPS流量
tcpdump -i eth0 tcp port 443
捕获Ping流量
tcpdump -i eth0 icmp
捕获ARP流量
tcpdump -i eth0 arp
只显示IP和端口
tcpdump -i eth0 -nn
说明:
-n
:不解析主机名。-nn
:不解析主机名和端口号。
保存流量并限制文件大小
tcpdump -i eth0 -w capture.pcap -C 10
说明:
-C 10
:每个文件大小限制为10MB。
6. 捕获结果解析
示例输出
12:34:56.789123 IP 192.168.1.2.12345 > 192.168.1.3.80: Flags [S], seq 123456789, win 65535, options [mss 1460], length 0
字段说明:
12:34:56.789123
:捕获时间。IP
:协议类型(IP)。192.168.1.2.12345
:源IP和源端口。192.168.1.3.80
:目标IP和目标端口。Flags [S]
:TCP标志位(SYN)。seq
:序列号。win
:窗口大小。length
:数据长度。