目录
tcpdump
是一款在 Unix 和类 Unix 系统上广泛使用的网络分析工具,它能够捕获网络接口上传输的数据包,并提供多种选项来过滤和展现这些数据包的详细信息。这里是 tcpdump
的一些基本用法和选项的详解.
基本命令格式:
tcpdump [options] [filter-expression]
常用选项:
-i
: 指定要监听的网卡接口。如果不指定,tcpdump
通常会选择一个默认的接口。-n
: 不解析主机名(即不进行 DNS 反向解析),直接显示 IP 地址。-nn
: 不解析主机名和端口名。-X
: 以十六进制和 ASCII 显示数据包的内容。对于调试或分析非常有用。-XX
: 与-X
类似,但还会显示以太网头。-v
,-vv
,-vvv
: 增加输出的详细程度。-c
: 捕获指定数量的数据包后停止。-s
: 设置捕获数据包的长度。默认情况下,tcpdump
只捕获每个数据包的前 68 字节。设置-s0
可以捕获整个数据包。-w
: 将捕获的数据包写入文件而不是直接显示在屏幕上。-r
: 读取并显示之前用-w
选项保存的数据包文件。
过滤表达式:
过滤表达式用于定义捕获数据包时使用的规则,例如根据协议、端口、主机地址等来过滤。一些常用的表达式如下:
host
: 只捕获所有发送到或从指定主机传出的 IP 数据包。src
: 只捕获从指定源主机传出的数据包。dst
: 只捕获发送到指定目的主机的数据包。port
: 只捕获指定端口的数据包。src port
: 只捕获指定源端口的数据包。dst port
: 只捕获指定目的端口的数据包。net
: 只捕获特定网络上的数据包。proto
: 只捕获指定协议的数据包,如icmp
、udp
、tcp
等。
示例:
tcpdump -i eth0 -nn -X -vv tcp port 443 and ip host 192.168.1.1
#捕获所有经过eth0网卡,源或目的端口443,源或目的IP为192.168.1.1的数据包
tcpdump -i eth0 tcp
#捕获所有经过 eth0 接口的 TCP 数据包
tcpdump -n host 192.168.1.1
#捕获所有到达或离开主机 192.168.1.1 的数据包,且不进行主机名解析
tcpdump port 80 -w capture_file.pcap
#捕获所有目标或源端口为 80 的数据包,并将其保存到文件中:
tcpdump -r capture_file.pcap
#读取并显示保存的数据包文件内容:
tcpdump net 192.168.1.0/24 -vv
#捕获指定网络上的所有数据包,并显示更多的协议信息:
tcpdump -i eth0 -X 'host 192.168.1.1 and port 22'
#实时查看经过 eth0 端口,来源或目的为 192.168.1.1 端口 22 的数据包内容: