tcpdump 抓包参数速查
September 28, 2024About 2 min
tcpdump 抓包参数速查
tcpdump 就是 dump the traffic on a network——按你给的过滤条件把网络上的数据包截下来分析的命令行工具。它能把包头完整抓下来,支持按网络层、协议、主机、网段、端口过滤,还能用 and / or / not 逻辑组合,去掉无关流量。
命令格式:
tcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ]
[ -i 网络接口 ] [ -r 文件名 ] [ -s snaplen ]
[ -T 类型 ] [ -w 文件名 ] [ 表达式 ]
常用选项
| 选项 | 含义 |
|---|---|
-a | 将网络地址和广播地址转成名字 |
-d | 将匹配信息包的代码以可读的汇编格式给出 |
-dd | 以 C 语言程序段格式给出 |
-ddd | 以十进制形式给出 |
-e | 输出数据链路层头部信息,含源/目的 MAC 及网络层协议 |
-f | 将外部 Internet 地址以数字形式打印 |
-l | 使标准输出变为行缓冲 |
-n | 不把网络地址转换成名字(域名转 IP 后显示) |
-nn | 在 -n 基础上,端口也用端口号而非应用名显示 |
-t | 输出每行不打印时间戳 |
-v | 输出稍详细信息,如 IP 包的 TTL 和服务类型 |
-vv | 输出详细的报文信息 |
-c | 收到指定数目的包后停止 |
-F | 从指定文件读取表达式,忽略其它表达式 |
-i | 指定监听的网络接口 |
-p | 将网卡设为非混杂模式,不能与 host 或 broadcast 一起用 |
-r | 从文件读取包(一般是 -w 产生的) |
-w | 直接将包写入文件,不分析打印 |
-s snaplen | 从一个包截取的字节数;0 表示不截断抓完整包。默认只抓部分,68 字节 |
-T | 把监听到的包解释为指定类型,常见 rpc、snmp |
-X | 把协议头和包内容都以 16 进制和 ASCII 显示,协议分析利器 |
实际排查时最常用的组合是 tcpdump -i eth0 -nn -X host <ip> and port <port>:指定网卡、不做名字解析、显示完整内容、只看某主机某端口的流量。抓量大的时候先 -w out.pcap 落盘,再用 Wireshark 慢慢看,比在终端里刷屏靠谱。