tcpdump命令及例子

tcpdump 是Linux系统下的一个强大的命令,可以将网络中传送的数据包完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息;是一个网络数据包分析工具,用于在命令行中捕获和分析网络流量。它可以帮助你监视、记录和分析进出计算机的网络流量。

执行tcpdump命令需要root账号或者具备sudo权限的账号,否则执行tcpdump命令说,系统会提示tcpdump: no suitable device found。

没有权限

以下是一些常用的tcpdump命令详解:

基本语法:

tcpdump [options] [expression]

一些常用选项:

  • -i: 指定要监听的网络接口,如-i eth0。
  • -n: 显示IP地址和端口号而不进行DNS解析。
  • -c: 指定捕获的数据包数量。
  • -s: 指定捕获的数据包的最大长度。
  • -w: 将捕获的数据包写入文件。
  • -r: 读取存储的捕获文件进行分析。

表达式示例:

  • host 192.168.1.1: 捕获与特定主机的通信。
  • port 80: 捕获使用特定端口的流量。
  • src 192.168.1.0/24: 捕获源IP地址在给定子网中的流量。
  • dst 8.8.8.8: 捕获发送到特定目标IP地址的流量。
  • icmp: 捕获ICMP流量。

一些示例命令:

1. 监听特定接口上的所有流量:

sudo tcpdump -i ens192

运行结果:

监听指定接口

2. 捕获特定源IP的流量:

sudo tcpdump src 192.168.1.31

运行结果:

监听指定源IP

3. 保存捕获的数据包到文件:

sudo tcpdump -i ens192 -w capture.pcap

读取保存的数据包文件进行分析:

tcpdump -r capture.pcap

运行结果:

记录和读取抓包文件

4. 抓取包含192.168.1.0/24网段的数据包

tcpdump -i ens192 -vnn net 192.168.1.0/24

运行结果:

抓取网段数据包

4. 抓取源 ip192.168.1.100或者端口22

tcpdump -i ens192 -vnn src host 192.168.1.31 or port 22

正则指定ip或端口

请注意,使用tcpdump需要具有足够的权限,通常需要以管理员身份运行。在使用时要谨慎,以免在生产环境中引起不必要的问题。