Bootstrap

Linux tcpdump 详解教程

简介

tcpdump 是一款在 Linux 平台上广泛使用的网络抓包工具。它可以捕获整个 TCP/IP 协议族的数据包,并支持对网络层、协议、主机、端口等进行过滤。tcpdump 提供了强大的过滤功能,允许使用 and、or、not 等逻辑语句来筛选数据包,非常适合用于网络故障分析和安全监控。

安装 tcpdump

在大多数 Linux 发行版上,可以使用包管理器安装 tcpdump。例如,在基于 Debian 的系统上:

sudo apt-get install tcpdump

在基于 Red Hat 的系统上:

sudo yum install tcpdump

tcpdump 命令选项

tcpdump 有很多命令选项,可以通过 tcpdump -hman tcpdump 查看所有选项的详细说明。以下是一些常用的选项:

  • -i interface:指定网络接口。
  • -w file:将捕获的数据包写入文件。
  • -r file:从文件中读取数据包。
  • -s snaplen:设置每个包的抓取长度,默认为68字节。
  • -c count:指定捕获数据包的数量。
  • -A:以ASCII码方式显示每个数据包的内容。
  • -X:同时以十六进制和ASCII码显示数据包内容。

基本使用

捕获所有接口的流量

sudo tcpdump -i any -w capture.pcap
  • -i any 表示监听所有网络接口。
  • -w capture.pcap 表示将捕获的数据保存到 capture.pcap 文件中。

捕获特定接口的流量

sudo tcpdump -i eth0 -w capture.pcap

捕获特定端口的数据包

sudo tcpdump -i eth0 port 80 -w capture.pcap

实时查看抓包数据

如果希望在抓包过程中实时查看数据,可以不使用 -w 选项,而是直接在终端输出:

sudo tcpdump -i eth0

高级过滤

tcpdump 支持复杂的过滤规则,例如:

  • 捕获特定主机的数据包:
tcpdump host 192.168.1.1
  • 捕获两个特定主机之间的数据包:
tcpdump host 192.168.1.1 and 192.168.1.2
  • 捕获特定协议的数据包:
tcpdump tcp
  • 捕获特定源端口或目的端口的数据包:
tcpdump portrange 1-1024

tcpdump 与 Wireshark

Wireshark 是一个图形界面的网络协议分析工具,可以与 tcpdump 结合使用。在 Linux 中使用 tcpdump 抓包,然后在 Windows 中使用 Wireshark 进行分析。保存数据包为 Wireshark 能识别的文件:

tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap
  • -t:不显示时间戳。
  • -s 0:抓取完整的数据包。
  • -c 100:捕获100个数据包。
  • -w ./target.cap:将数据包写入 target.cap 文件中。

通过上述教程,你应该能够掌握 tcpdump 的基本使用和一些高级功能,以便在 Linux 系统中进行网络数据包的捕获和分析。

;