Linux命令:tcpdump - 网络分析

tcpdump是一个功能强大的命令行网络协议分析器。

主要功能:

  • 数据包捕获(抓包)
  • 数据包过滤
  • 数据分析
  • 网络故障排除和诊断

常用选项

  • -i:指定要监听的网络接口
  • -D:列出可用于抓包的接口
  • -s:设置抓取的数据包长度,超过这个长度的部分会被截断
  • -c:指定要抓取的数据包的数量
  • -w:将抓包数据保存在文件中,通常是.pcap格式
  • -r:从指定的文件中读取并显示数据包
  • -C:指定文件大小,与 -w 配合使用
  • -F:从文件中读取抓包的表达式
  • -n:不进行DNS解析,直接显示IP地址而非主机名
  • -nn:除了不解析主机名外,也不解析端口名称,直接显示端口号。
  • -p:不让内核修改网络接口的状态(例如改变混杂模式或监控模式),以防止影响正常网络流量。
  • -P:指定要抓取的包是流入还是流出的包,可以指定的值 inoutinout
  • -e:输出信息中包含数据链路层头部信息
  • -t:显示时间戳,tttt 显示更详细的时间
  • -X:显示十六进制格式
  • -B:设置内核缓冲区大小
  • -tt:在打印时间戳时,以绝对时间而非相对时间显示。
  • -v-vv-vvv:详细程度递增,提供更详尽的数据包信息。

基本用法

  1. 安装tcpdump命令
yum install tcpdump -y
  1. 抓取eth0网卡上的所有数据包 -i
tcpdump -i eth0
  1. 抓包时不解析主机和端口名 -n
tcpdump -n -i eth0
  1. 抓取指定主机的所有数据表 host
tcpdump -ni eth0 host 192.168.1.112
  1. 抓取指定主机发送的数据包 src host
tcpdump -ni eth0 src host 192.168.1.112
  1. 抓取发送给192.168.1.112 dst src
tcpdump -ni eth0 dst host 192.168.1.112
  1. 抓取指定数量的包 -c
tcpdump -i eth0 -c 10
  1. 指定端口 dst port
tcpdump -ni eth0 dst port 22
  1. 抓取arp数据包
tcpdump -ni eth0 arp
  1. 使用十六进制输出
tcpdump -ni eth0 -c 1 arp -x
  1. 只抓取IPv6流量
tcpdump -ni eth0 ip6
  1. 抓取指定网段的流量 net
tcpdump -ni eth0 net 192.168.1.0/24
  1. 抓取指定端口范围的流量 portrange
tcpdump -ni eth0 portrange 80-9000

进阶用法

  1. 抓取指定客户端访问ssh的数据包
tcpdump -ni eth0 src 192.168.1.112 dst port 22
  1. 抓取从某个网段来,到某个网段去的流量
tcpdump -ni eth0 src net 192.168.1.0/16 and dst net 10.0.0.0/8 or 172.16.0.0/16
  1. 抓取来自某个主机,发往非ssh端口的流量
tcpdump -ni eth0 src 192.168.1.112 and not dst port 22
  1. 基于包大小进行删选
# 大小小于64字节
tcpdump -ni eth0 less 64

# 大小等于64字节
tcpdump -ni eth0 length == 64

# 大小大于64字节
tcpdump -ni eth0 greater 64
  1. 过滤TCP特殊标记的数据包
# 抓取某主机发送的RST数据包
tcpdump -ni eth0 src host 192.168.1.112 and 'tcp[tcpflags] & (tcp-rst) != 0'

# 抓取某主机发送的SYN数据包
tcpdump -ni eth0 src host 192.168.1.112 and 'tcp[tcpflags] & (tcp-syn) != 0'

# 抓取某主机发送的FIN数据包
tcpdump -ni eth0 src host 192.168.1.112 and 'tcp[tcpflags] & (tcp-fin) != 0'

# 抓取 TCP 连接中的 SYN 或 FIN 包
tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0'
  1. 抓取所有非ping类型的ICMP包
tcpdump 'icmp[icmptype] != icmp-echo and icmp[icmptype] != icmp-echoreply'


Linux命令系列:

posted @ 2024-03-26 11:36  Charramma  阅读(113)  评论(0编辑  收藏  举报