当前位置: 代码网 > 服务器>服务器>Linux > Linux使用tcpdump捕获网络数据包的详细步骤

Linux使用tcpdump捕获网络数据包的详细步骤

2025年08月08日 Linux 我要评论
引言在网络故障排查、协议分析或网络安全检测中,抓包工具是不可或缺的"利器"。而tcpdump作为linux系统中历史最悠久、功能最强大的命令行抓包工具,至今仍是工程师的首选。本文将

引言

在网络故障排查、协议分析或网络安全检测中,抓包工具是不可或缺的"利器"。而tcpdump作为linux系统中历史最悠久、功能最强大的命令行抓包工具,至今仍是工程师的首选。本文将从基础操作到实战技巧,带你掌握用tcpdump捕获网络数据包的完整流程,尤其适合需要对接口板、设备通信进行分析的场景,同时将重点介绍如何通过后台命令避免远程终端关闭导致的抓包中断。

一、什么是tcpdump?为什么选择它?

tcpdump是一款运行在linux/unix系统上的命令行网络抓包工具,它能实时捕获网络接口上传输的数据包,并按需求保存或解析。相比图形化工具(如wireshark),它的优势在于:

  • 轻量高效:无需图形界面,可直接在远程服务器或嵌入式设备上运行;
  • 灵活可控:通过命令参数精确过滤数据包,避免无关数据干扰;
  • 适合长期监控:支持后台运行和循环抓包,适合长时间记录网络行为。

对于需要分析接口板、设备间通信的场景(如工业控制、物联网设备),tcpdump的轻量化特性使其成为最佳选择。

二、准备工作:环境与工具

在开始抓包前,需准备以下环境和工具:

  1. 操作终端
    • 远程登录工具(如mobaxterm):用于连接目标设备(如样机后端);
    • 目标设备:运行linux系统,已安装tcpdump(默认多数linux发行版自带,若未安装可通过apt install tcpdumpyum install tcpdump安装)。
  2. 目标对象
    • 需监控的网络接口(如接口板网卡);
    • 待复现的网络问题(如通信超时、数据异常等)。

三、实战步骤:用tcpdump捕获接口板网卡数据

以"捕获接口板网卡数据包并分析问题"为例,完整流程如下:

步骤1:识别目标网卡名称

在抓包前,必须明确需要监控的网卡(如接口板连接的网卡)。通过以下命令查看所有网卡信息:

ifconfig  # 或 ip addr(推荐,更全面)

执行后会显示类似以下的输出:

enp2s0: flags=4163<up,broadcast,running,multicast>  mtu 1500
        inet 192.168.1.100  netmask 255.255.255.0  broadcast 192.168.1.255
        ...

eth0: flags=4163<up,broadcast,running,multicast>  mtu 1500
        inet 10.0.0.5  netmask 255.255.255.0  broadcast 10.0.0.255
        ...

docker0: flags=4099<up,broadcast,multicast>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        ...

根据描述区分网卡类型:

  • 接口板网卡:通常是直接连接外部设备的物理网卡(如示例中的enp2s0);
  • 其他网卡:如用户网卡(eth0)、虚拟网卡(docker0)等,需排除。

步骤2:执行抓包命令(含后台运行方案)

根据场景需求选择以下抓包方式(在目标设备的终端中执行,如示教器终端),重点推荐远程操作时使用后台命令,避免终端关闭导致抓包中断

方式1:基础抓包(单次捕获,适合短时操作)

适合短时间内复现问题的场景,命令格式:

tcpdump -i 网卡名称 -w 保存路径/文件名.cap

示例:捕获接口板网卡enp2s0的数据包,保存到桌面的test.cap

tcpdump -i enp2s0 -w /root/desktop/test.cap
  • 参数说明:
    • -i enp2s0:指定监控enp2s0网卡;
    • -w /root/desktop/test.cap:将数据包保存为.cap文件(不显示实时内容,避免占用资源)。

方式2:循环抓包(长期监控,自动分割文件)

若问题复现时间较长,需避免单个文件过大,可使用循环抓包(自动分割文件并限制数量):

nice -n -10 tcpdump -i 网卡名称 -c 单个文件大小(m) -w 最大文件数 -w 保存路径/前缀名.cap

示例:监控enp2s0,单个文件最大30mb,最多保存20个文件(总容量约600mb):

nice -n -10 tcpdump -i enp2s0 -c 30 -w 20 -w /root/desktop/name.cap
  • 参数说明:
    • nice -n -10:提高进程优先级,避免抓包被系统低优先级调度;
    • -c 30:单个文件达到30mb时自动创建新文件;
    • -w 20:最多生成20个文件(超出后覆盖最早的文件);
    • 保存的文件名将按name_00.capname_01.cap…递增。

方式3:后台抓包(推荐远程操作,防止终端关闭中断)

远程操控时,若不小心关闭终端,普通抓包进程会被终止。使用nohup命令可让抓包脱离终端独立运行,即使关闭终端也能继续:

# 基础格式:nohup [抓包命令] > 日志路径 2>&1 &
nohup tcpdump -i 网卡名称 -w 保存路径/文件名.cap > /var/log/tcpdump.log 2>&1 &

示例:后台捕获enp2s0的数据包,日志输出到/var/log/tcpdump.log

nohup tcpdump -i enp2s0 -w /root/desktop/background_cap.cap > /var/log/tcpdump.log 2>&1 &
  • 参数说明:
    • nohup:忽略终端关闭信号(sighup),保证进程持续运行;
    • > /var/log/tcpdump.log 2>&1:将抓包过程中的日志(如错误信息)输出到指定文件,避免默认写入nohup.out
    • 末尾&:将进程放入后台运行,终端可继续执行其他命令。

步骤3:管理后台抓包进程(关键操作)

使用nohup后台抓包后,需通过以下命令管理进程:

查看后台抓包进程

ps -ef | grep tcpdump

输出类似:

root      12345  67890  0 16:00 ?        00:00:01 tcpdump -i enp2s0 -w /root/desktop/background_cap.cap

其中12345为进程id(pid)。

停止后台抓包

问题复现完成后,通过pid终止进程(必须正常停止,避免文件截断):

kill -9 12345  # 替换为实际pid

步骤4:复现问题并确认抓包状态

  1. 复现问题:执行抓包命令后(无论前台还是后台),在设备上操作以复现需要分析的问题(如接口板通信异常)。
  2. 确认抓包状态
    • 前台抓包:终端阻塞状态表示正常运行;
    • 后台抓包:通过ps -ef | grep tcpdump查看进程是否存在,或检查.cap文件大小是否随时间增长(ls -lh /root/desktop/*.cap)。

步骤5:导出与分析抓包文件

  1. 确认文件:执行以下命令,检查.cap文件是否正常保存:
ls -lh /root/desktop/*.cap

若显示类似以下内容,说明保存成功:

-rw-r--r-- 1 root root  25m aug 10 15:30 /root/desktop/test.cap
-rw-r--r-- 1 root root  40m aug 10 16:10 /root/desktop/background_cap.cap

导出文件

  • 通过远程工具(如mobaxterm)的文件浏览器导航到/root/desktop/
  • 右键点击目标.cap文件,选择"download"导出到本地电脑。

用wireshark分析

将导出的.cap文件用wireshark打开(双击文件或在wireshark中选择"文件→打开"),即可分析数据包细节:

  • 查看通信双方的ip、端口;
  • 过滤特定协议(如tcp、udp)或关键词(如ip.addr == 192.168.1.100);
  • 定位异常数据包(如重传、超时、错误校验等)。

四、常见问题与解决方案

抓包文件被截断(wireshark提示错误)

  • 原因:未正常停止tcpdump(如强制关闭终端、用kill -9终止进程但文件未写完)。
  • 解决:必须通过ctrl + c(前台)或kill pid(后台)正常停止;若文件已损坏,可用editcap修复:
editcap -f pcap 损坏的文件.cap 修复后的文件.cap

后台抓包进程意外终止

  • 原因:目标目录磁盘空间不足,或权限不足导致无法写入文件。
  • 解决:抓包前用df -h检查磁盘空间,确保/root/desktop/有写入权限(chmod 777 /root/desktop临时开放权限)。

远程终端关闭后抓包停止

  • 原因:未使用nohup&,进程依赖终端会话。
  • 解决:远程操作时务必用nohup [命令] &启动抓包,脱离终端依赖。

五、扩展工具推荐

  • wireshark:图形化分析工具,支持过滤、统计、协议解析,适合分析.cap文件;
  • editcap:wireshark附带的命令行工具,用于修复被截断的.cap文件;
  • tshark:tcpdump的图形化替代工具,支持更丰富的过滤语法(tshark -i enp2s0 -w 文件名.cap)。

以上就是linux使用tcpdump捕获网络数据包的详细步骤的详细内容,更多关于linux tcpdump捕获网络数据包的资料请关注代码网其它相关文章!

(0)

相关文章:

  • Linux之nfs与autofs的使用方式

    Linux之nfs与autofs的使用方式

    nfs与autofs的使用nfs 服务端部署# 1. 安装必要软件yum -y install nfs-utils rpcbind# 2. 创建共享目录mkdi... [阅读全文]
  • Linux进程优先级解读

    1.概念1.1基本概念cpu资源分配的先后顺序,就是指进程的优先权(priority)。优先权高的进程有优先执行权利。配置进程优先权对多任务环境的linux很有用,可以改善系统性能…

    2025年08月06日 服务器
  • Linux之命令行参数详解

    1.基本概念在 linux(及其他类 unix 系统)中,命令行参数是执行命令或程序时,跟随在命令名称之后的额外信息。它们的作用是向程序传递具体指令、配置选项或操作对象,让程序根据…

    2025年08月06日 服务器
  • Linux配置交换空间(Swap)解决内存不足的具体教程

    前言在 centos 系统中,交换空间(swap)用于在物理内存不足时,临时将部分数据存储到硬盘上,以释放内存供其他进程使用。合理配置交换空间可以提升系统的稳定性和性能。1. 检查…

    2025年08月06日 服务器
  • Linux中的HTTPS协议原理分析

    不是有了http了吗??为什么还要有https呢??——>https也是一个应用层协议,是在http协议的基础上引入的一个加密层,他的产生是由于htt…

    2025年08月05日 服务器
  • Linux中的几种IO模型详解

    一、五种io模型1.1 高效io的初步理解io其实就是“input”和“output”尤其在网络部分,io的特性非常明显!!如果是在…

    2025年08月05日 服务器

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com