tcpdump 抓包命令使用

tcpdump 命令格式说明

  • option - 可选选项(参数)
  • proto - 协议类过滤器:根据协议进行过滤,可识别的关键词有: tcp, udp, icmp, ip, ip6, arp, rarp,ether,wlan, fddi, tr, decnet
  • direction - 数据流向类过滤器:根据数据流向进行过滤,可识别的关键字有:src, dst,同时你可以使用逻辑运算符进行组合,比如 src or dst
  • type 类过滤器:可识别的关键词有:host, net, port, portrange,这些词后边需要再接参数。

常用选项

选项 说明 示例
-i 目标网卡
-n
-nn
不对 IP/DOMAIN 进行解析
不对 IP/DOMAIN 及 PORT 进行解析
-w 将结果写入文件 tcpdump icmp -w icmp.pcap

tcpdump 命令输出内容说明

21:26:49.013621 IP 172.20.20.1.15605 > 172.20.20.2.5920: Flags [P.], seq 49:97, ack 106048, win 4723, length 48
  1. 第一列:时分秒毫秒 21:26:49.013621
  2. 第二列:网络协议 IP
  3. 第三列:发送方的 ip 地址+端口号,其中 172.20.20.1 是 ip,而 15605 是端口号
  4. 第四列:箭头 >, 表示数据流向
  5. 第五列:接收方的 ip 地址+端口号,其中 172.20.20.2 是 ip,而 5920 是端口号
  6. 第六列:冒号
  7. 第七列:数据包内容,包括 Flags 标识符,seq 号,ack 号,win 窗口,数据长度 length,其中 [P.] 表示 PUSH 标志位为 1,更多标识符见下面

Flags 标识符

使用 tcpdump 抓包后,会遇到的 TCP 报文 Flags,有以下几种:

  • [S] : SYN(开始连接)
  • [P] : PSH(推送数据)
  • [F] : FIN (结束连接)
  • [R] : RST(重置连接)
  • [.] : 没有 Flag (意思是除上面四种类型外的其他情况,有可能是 ACK 也有可能是 URG

常见用法示例

基于IP地址过滤:host

tcpdump host 192.168.10.100

tcpdump -i eth0 src 192.168.10.100

tcpdump -i eth0 dst 192.168.10.100

基于网段进行过滤:net

tcpdump net 192.168.10.0/24

tcpdump src net 192.168

tcpdump dst net 192.168

基于端口进行过滤:port

tcpdump src port 8088

tcpdump dst port 8088

tcpdump port 80 or port 8088

tcpdump port 80 or 8088

tcpdump portrange 8000-8080

tcpdump src portrange 8000-8080

tcpdump dst portrange 8000-8080

基于协议进行过滤:proto

常见的网络协议有:tcp, udp, icmp, http, ip,ipv6 等

tcpdump icmp

protocol 可选值:ip, ip6, arp, rarp, atalk, aarp, decnet, sca, lat, mopdl, moprc, iso, stp, ipx, or netbeui

组合过滤规则

支持的运算符:

  • and - 所有的条件都需要满足,也可以表示为 &&
  • or - 只要有一个条件满足就可以,也可以表示为 ||
  • not - 取反,也可以使用 !
tcpdump src 10.5.2.3 and dst port 3389

tcpdump 'src 10.0.2.4 and (dst port 3389 or 22)'

参考链接

tcpdump 抓包指南