全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

Linux tcpdump 抓包使用实践教程

最近更新时间:2026-08-26 11:52:25

本文介绍 Linux 系统下 tcpdump 网络抓包工具的安装、命令格式、常用参数及典型抓包操作。通过阅读本文,您能够完成 tcpdump 的安装与基本配置,掌握按接口、协议、目标地址等条件捕获数据包并将抓包结果保存为文件,适用于网络排障和流量分析场景。

什么是 tcpdump

tcpdump 是 Linux 系统下强大的命令行网络抓包工具,用于捕获、分析和记录网络数据包。本文介绍如何使用 tcpdump 工具进行捕获和分析数据包。

准备工作:安装 tcpdump

  1. 执行如下命令进行安装。

    • 在 Ubuntu/Debian 系统:

    sudo apt-get install tcpdump
    • 在 CentOS/RHEL/Fedora 系统:

    sudo yum -y install tcpdump
  2. 验证安装是否成功。

    tcpdump --version

实践步骤

步骤一:捕获指定接口和端口的数据包

  1. 登录云服务器

  2. 执行以下命令,捕获指定接口 eth022 端口数据包。

    在抓取时还可以使用 -vvv 参数,使控制台输出详细的交互信息。

    tcpdump -s 0 -i eth0 port 22 #-s 数据包抓取长度,指定为0会自适应抓取

    输出示例如下:

    18:40:38.508411 IP vm10-0-0-31.ssh > 10.0.0.125.45968: Flags [P.], seq 6190212:6190368, ack 2845, win 344, length 156
    18:40:38.508429 IP vm10-0-0-31.ssh > 10.0.0.125.45968: Flags [P.], seq 6190368:6190620, ack 2845, win 344, length 252
    18:40:38.508444 IP vm10-0-0-31.ssh > 10.0.0.125.45968: Flags [P.], seq 6190620:6190776, ack 2845, win 344, length 156
    18:40:38.508459 IP vm10-0-0-31.ssh > 10.0.0.125.45968: Flags [P.], seq 6190776:6190932, ack 2845, win 344, length 156
    18:40:38.508474 IP vm10-0-0-31.ssh > 10.0.0.125.45968: Flags [P.], seq 6190932:6191088, ack 2845, win 344, length 156
    18:40:38.508489 IP vm10-0-0-31.ssh > 10.0.0.125.45968: Flags [P.], seq 6191088:6191244, ack 2845, win 344, length 156
    18:40:38.508504 IP vm10-0-0-31.ssh > 10.0.0.125.45968: Flags [P.], seq 6191244:6191400, ack 2845, win 344, length 156

步骤二:捕获指定协议的数据包

执行以下命令捕获指定接口 eth0 的 TCP 协议数据包。

tcpdump -s 0 -i eth0 tcp

输出示例:

14:20:13.184251 IP vm10-0-0-31.ssh > 10.0.0.125.45968: Flags [P.], seq 5947548:5947704, ack 2917, win 344, length 156
14:20:13.184268 IP vm10-0-0-31.ssh > 10.0.0.125.45968: Flags [P.], seq 5947704:5947956, ack 2917, win 344, length 252
14:20:13.184284 IP vm10-0-0-31.ssh > 10.0.0.125.45968: Flags [P.], seq 5947956:5948112, ack 2917, win 344, length 156
14:20:13.184299 IP vm10-0-0-31.ssh > 10.0.0.125.45968: Flags [P.], seq 5948112:5948268, ack 2917, win 344, length 156
14:20:13.184314 IP vm10-0-0-31.ssh > 10.0.0.125.45968: Flags [P.], seq 5948268:5948424, ack 2917, win 344, length 156
14:20:13.184329 IP vm10-0-0-31.ssh > 10.0.0.125.45968: Flags [P.], seq 5948424:5948580, ack 2917, win 344, length 156
14:20:13.184344 IP vm10-0-0-31.ssh > 10.0.0.125.45968: Flags [P.], seq 5948580:5948736, ack 2917, win 344, length 156

步骤三:捕获指定协议加目标 IP 的数据包

执行以下命令,捕获目标 IP 10.0.0.120 的 ICMP 协议数据包。其中 and 表示“与”,此外还可以使用运算符 or 表示“或”、not 表示“非”。

tcpdump -s 0 -i eth0 -vvv dst 10.0.0.120 and icmp

输出示例:

tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
19:07:01.905937 IP (tos 0x0, ttl 64, id 38277, offset 0, flags [none], proto ICMP (1), length 84)
    vm10-0-0-31 > 10.0.0.120: ICMP echo reply, id 8629, seq 4, length 64
19:07:02.905950 IP (tos 0x0, ttl 64, id 39081, offset 0, flags [none], proto ICMP (1), length 84)
    vm10-0-0-31 > 10.0.0.120: ICMP echo reply, id 8629, seq 5, length 64
19:07:03.905965 IP (tos 0x0, ttl 64, id 39236, offset 0, flags [none], proto ICMP (1), length 84)
    vm10-0-0-31 > 10.0.0.120: ICMP echo reply, id 8629, seq 6, length 64
19:07:04.905974 IP (tos 0x0, ttl 64, id 39846, offset 0, flags [none], proto ICMP (1), length 84)

步骤四:将捕获结果保存到文件

执行以下命令将捕获结果保存到 test.cap 文件。

tcpdump -s 0 -i eth0 -w test.cap

使用 Ctrl+C 手动停止抓取。保存后的文件可以使用 Wireshark 等工具进行进一步分析,也可以通过 tcpdump 查看。

tcpdump -r test.cap

附录:Tcpdump 基础教程

详细使用教程可参考其官方文档

Tcpdump 命令格式

tcpdump [-aAbdDefhHIJKlLnNOpqStuUvxX] [ -B size ] [ -c count ]
        [ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ]
        [ -i interface ] [ -j tstamptype ] [ -M secret ] [ --number ]
        [ -Q|-P in|out|inout ]
        [ -r file ] [ -s snaplen ] [ --time-stamp-precision precision ]
        [ -immediate-mode ] [ -T type ] [ --version ] [ -V file ]
        [ -w file ] [ -W filecount ] [ -y datalinktype ] [ -z postrotate-command ]
        [ -Z user ] [ expression ]

常用参数说明

参数

说明

用法

-i

指定网络接口

`tcpdump -i eth0

-D

列出所有接口

tcpdump -D

-s

数据包抓取长度

tcpdump -s 0 -i eth0

-c

指定捕获包数量

tcpdump -c100 -i eth0

-n

不解析主机和端口名

tcpdump -i any -n

-vvv

输出详细信息

tcpdump -i any -vvv

-w

将抓包结果写入文件(pcap 格式)

tcpdump -i any -w xxx.pcap

-r

从 pcap 文件读取

tcpdump -r xxx.pcap

expression 表达式用于指定过滤条件,包含以下类型:

  • 指定类型:host(主机)、net(网络)和 port(端口)。

  • 指定传输方向:src(源)、dst(目标)、dst or src(源或目标)和 dst and src(源和目标)。

  • 指定协议:ICMPIPARPRARPTCPUDP 等协议类型。

tcpdump host 192.168.1.100
tcpdump src host 192.168.1.100
tcpdump dst host 192.168.1.100
tcpdump ICMP | TCP | UDP | ARP

文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈