1. 简介
linux系统上常用tcpdump抓包来分析网络问题。本文基于网络文章整理,主要介绍tcpdump抓包的常用命令及参数。
以下是数据包在操作系统层面的流程:
网卡nic
-> tcpdump
-> iptables(netfilter)
-> app
-> iptables(netfilter)
-> tcpdump
-> 网卡nic
2. tcpdump常用参数及命令
2.1. 指定网卡(-i)和主机(host)
tcpdump默认会将IP反向解析为域名,可以用-nn
禁止反向解析。
-
-i
:指定网卡 -
host
:指定主机 -
-nn
:禁止反向解析域名 -
-v或-vv
:显示抓包的详细信息 -
-w:
写入文件(.pcap或.cap),供wireshark分析。
1 | tcpdump -i any host 192.168.1.1 #-i指定网卡为所有 |
2.2. 指定来源IP或目的IP、网段
-
src
:指定来源IP -
dst
: 指定目标IP -
net
: 指定网段 -
-s
: 指定抓包字节数,-s 0
不限字节数,抓完整的包。例如icmp 大小为84字节 -
port
: 指定端口 -
portrange
: 指定端口范围 -
协议
:tcp, udp, icmp
1 | # 指定源IP |
2.3. 指定抓包数量、抓包大小、及轮询抓包
-
-c: 指定抓多少个包
-
-W: 最多写入多少个抓包文件,以MB为单位
-
-C:写入到抓包文件的大小上限
-
-G:参数指定间隔多少秒轮询保存一次文件,通常是以时间格式命令
1 | # 指定抓2个包 |
2.4. tcpdump的逻辑表达式(or、and、not)
-
and
: 与 -
or
: 或 -
not
: 非
1 | # 与 |
3. Flags标记解读
Flags | 含义 |
---|---|
[S] |
SYN |
[.] |
ACK |
[S.] |
SYN、ACK |
[P.] |
PUSH |
[R.] |
RST |
[F.] |
FIN |
[DF] |
Don’t Fragment(不分片),当DF=0时,允许分片 |
[FP.] |
FIN、PUSH、ACK |
参考:
赞赏一下