Linux 上功能强大的网络工具 tcpdump 详解

2023-05-16

tcpdump 是用于捕获传入和传出流量的网络实用程序。这是您需要了解的有关在 Linux 上使用 tcpdump 的所有信息。

Linux 配备了大量的网络实用程序可供选择。tcpdump 是一种功能强大的网络工具,如果您需要对 Linux 上的网络错误进行故障排除,它可以捕获和分析网络流量。

让我们动手操作 tcpdump 命令并探索如何使用它来捕获网络流量。

在 Linux 中安装 tcpdump

tcpdump 通常预装了所有主流 Linux 发行版和基于安全的替代品。因此,您应该可以通过输入带有sudo前缀的tcpdump来立即使用它。

如果您无法运行 tcpdump 命令并遇到“ tcpdump: command not found ”错误,让我们学习如何在您的 Linux 机器上安装 tcpdump。

要安装 tcpdump,请启动终端并运行与您当前使用的 Linux 发行版相对应的命令:

在 Debian/Ubuntu 衍生产品上,运行:

$ sudo apt-get install tcpdump

在基于 Arch 的系统上,运行:

$ sudo pacman -S tcpdump

要在 Fedora、CentOS 和 RHEL 上安装 tcpdump 实用程序,请发出以下命令:

$ sudo dnf install tcpdump

请注意,如果要求您安装libcap,请输入YesY,因为它是核心依赖项,否则 tcpdump 将拒绝启动。这应该安装 tcpdump 实用程序并解决“找不到命令command not found”错误。

现在 tcpdump 已经安装在您的系统上,让我们探索它提供的不同选项和功能。

使用 tcpdump 捕获网络流量

tcpdump 提供了许多标志来修改其执行,但它也可以作为独立命令运行。但是,在没有任何标志或参数的情况下运行 tcpdump 将忽略其全部潜力。根据需要使用一些标志来调整执行和输出总是更好的。键入此命令以使用 tcpdump 监视网络传输:

$ sudo tcpdump

现在 tcpdump 将开始自动捕获网络数据包,直到使用Ctrl + Z发送中断信号以手动中断进程。要限制捕获的数据包总数,请使用-c标志并在其旁边输入所需的数据包限制:

$ sudo tcpdump -c 5

 

如果您现在无法理解输出,则需要先熟悉 tcpdump 输出格式。

使用 tcpdump 检查可用的网络接口

默认情况下,tcpdump 从任何可用的网络接口捕获流量。如果您有多个正在使用的活动网络接口,您可能需要定义 tcpdump 应该从中捕获数据包的网络接口。要在特定接口上启动 tcpdump,您必须首先了解接口名称

以下是使用 tcpdump 列出所有可用网络接口的方法:

$ sudo tcpdump -D

或者,您可以将--list-interfaces标志添加到命令中:

$ sudo tcpdump --list-interfaces

返回的输出包含 tcpdump 可以侦听的所有活动网络接口的列表。要配置 tcpdump 以捕获来自特定网络接口的传输,请输入以下命令:

sudo tcpdump -i interface_id

或者,您可以将--interface标志添加到命令中:

sudo tcpdump --interface interface_id

现在我们已经捕获了一些数据包,让我们仔细研究它们并了解如何调整输出以使其更具可读性。

探索 tcpdump 过滤器

tcpdump 能够在一次运行中捕获大量流量。在调查或解决特定主机或网络协议的问题时,此类信息过载可能会使您偏离轨道。

这就是 tcpdump 过滤器发挥作用的地方。您可以在 tcpdump 命令后附加某些标志,以过滤掉网络流量并捕获特定数据包。然后,您可以存储这些数据包,然后对其进行分析,以找到任何与网络相关的问题的根源。让我们学习如何在 tcpdump 中使用过滤器。

根据使用的网络协议过滤数据包

要过滤通过特定协议传输的数据包,请使用 tcpdump 命令输入协议名称,它只会捕获通过定义的网络协议传输的数据包。

例如,要捕获基于 ICMP 的数据包,您只需在 tcpdump 命令的末尾附加icmp 。如果您希望仅捕获 UDP 或 TCP 数据包,则该过程是相同的。

$ sudo tcpdump -c 3 icmp

只有通过 ICMP 协议进行数据交换时,此命令才会返回输出。

根据主机过滤数据包

您可以配置 tcpdump 以使用host参数捕获与单个主机相关的数据包。当您的网络中的所有系统都在运行时,这尤其有用,除了一个。此过滤器可让您执行有针对性的调查并加快整体故障排除工作流程,因为您不会被不必要的数据分心。

要捕获与特定主机相关的数据包,请使用主机参数定义主机的网络地址

$ sudo tcpdump -c 3 host 192.168.174.135

与网络协议过滤器类似,此命令仅在任何正在进行的传输与定义的主机相关时才返回输出。

根据活动端口过滤数据包

tcpdump 配备了一个参数,可让您过滤网络流量并仅捕获传入或传出特定端口的数据包。

要捕获来自特定端口的数据包,请将端口标志附加到 tcpdump 命令并在其旁边定义端口号。例如,要捕获任何传入或传出的 HTTP 流量,请定义端口 80:

$ sudo tcpdump -c 3 port 80

tcpdump 将侦听端口 80,等待 HTTP 传输。一旦它检测到网络中的 HTTP 数据包,它就会捕获它们。

将过滤器组合在一起以进行高级排序

前几节讨论了如何根据端口、协议或主机过滤流量,但如果您想使用特定网络协议从特定主机的单个端口捕获流量怎么办?好吧,您很幸运,因为这是可能的,这归功于 tcpdump 命令使用逻辑运算符的能力。

要使用端口 443 从单个主机捕获数据包,请使用以下命令:

$ sudo tcpdump -c 3 host 192.168.174.135 and port 443

检查抓包内容

默认情况下,tcpdump 在输出中显示数据包的标头。虽然在大多数情况下已经足够了,但有时,您可能想要或需要更深入地查看捕获的数据。您可以使用 tcpdump 命令传递某些参数来检查捕获的包的内容。

以下是查看数据包内容的方法:

$ sudo tcpdump -c 3 -x

此命令返回捕获数据包中内容的十六进制版本。如果您希望查看数据的 ASCII 格式,可以使用-A参数传递:

$ sudo tcpdump -A

将 tcpdump 输出保存到文件

与几乎所有其他 Linux 命令行工具一样,您可以将 tcpdump 生成的输出存储到文件中以供以后引用。

这可以通过在命令中添加-w标志来完成。执行后,tcpdump 会将捕获的数据存储到.pcap文件中,以后可以使用 tcpdump 或其他网络监控工具(如 Wireshark)对其进行分析。

键入此命令以将 tcpdump 命令的输出存储到文件中:

$ sudo tcpdump -w linuxmi.pcap

要读取.pcap文件,可以使用带有-r参数的 tcpdump:

$ sudo tcpdump -r linuxmi.pcap

适用于 Linux 的最佳网络工具

Linux 附带了大量的网络工具,只要它是在软件方面,就可以解决所有网络问题。知道如何在 Linux 中使用一些最好的网络工具肯定会派上用场,无论您是管理网络的系统管理员还是日常 Linux 用户。

由于可用网络命令的实际列表可能难以理解,因此这里列出了一些您应该知道的最重要的 Linux 网络工具。

来自:Linux迷
链接:https://www.linuxmi.com/tcpdump-linux.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux 上功能强大的网络工具 tcpdump 详解 的相关文章

  • 适用于 KDE 和 Gnome 的 Gui [重复]

    这个问题在这里已经有答案了 我想为一个现在是 CLI 的应用程序编写一个 gui 它需要在 KDE 和 Gnome DE 中 看起来不错 充分利用用户的外观设置 如果我选择 Qt 或 GTK 我能够做到这一点吗 它们与两个 DE 集成良好吗
  • 无需 cron 在后台发送邮件

    我想知道是否有一种方法可以运行 PHP 循环 以便在后台向订阅者发送几百封电子邮件 我的目标是格式化新闻通讯 单击发送 然后关闭浏览器或更改页面 当然 发送电子邮件的实际过程将在后台运行 不会因浏览器关闭而中断 我知道这可以通过 cron
  • 为什么 Linux 对目录使用 getdents() 而不是 read()?

    我浏览 K R C 时注意到 为了读取目录中的条目 他们使用了 while read dp gt fd char dirbuf sizeof dirbuf sizeof dirbuf code Where dirbuf是系统特定的目录结构
  • Composer 安装要求

    我正在尝试将 Composer 安装到 Laravel 项目中 当我做的时候sudo composer install在项目目录中它显示了两个错误 Problem 1 Installation request for simplesoftw
  • Linux 桌面快捷方式和安装图标

    我需要添加什么到我的 spec文件来创建桌面快捷方式并在安装过程中为快捷方式分配一个图标 rpm 如果需要脚本 一个示例将非常有帮助 您在 Linux 下使用 desktop 文件作为图标 图标放置的位置取决于您使用的发行版和桌面环境 由于
  • Linux shell 脚本中的 while 循环超时

    这工作正常 无限循环 while TRUE do printf done 我在尝试着timeout this while loop与timeout命令 所有这些都不起作用 timeout 5 while TRUE do printf don
  • 没有可用的符号表信息

    我正在测试第三方的库 它崩溃了 当我想查看崩溃的原因时 我的 gdb 告诉我没有可用的调试符号 Program received signal SIGSEGV Segmentation fault Switching to Thread 0
  • 在 /dev/input/eventX 中写入事件需要哪些命令?

    我正在开发一个android需要将触摸事件发送到 dev input eventX 的应用程序 我知道C执行此类操作的代码结构如下 struct input event struct timeval time unsigned short
  • 如何更改 Ubuntu 14.04 上的 php-cli 版本?

    我是 Linux 新手 在篡改时破坏了一些 php 设置 如果我执行一个包含以下内容的 php 脚本 phpinfo 它显示 php 版本为 5 6 但通过命令行 如果我运行php v它返回 7 0 版本 我想让两个版本匹配 我怎样才能修复
  • 嵌入式Linux poll()不断返回

    我有一个特别的问题 当我知道没有什么可读时 民意调查不断返回 因此设置如下 我有 2 个文件描述符 它们构成fd设置民意调查监视 一种用于引脚从高到低的变化 GPIO 另一个用于代理输入 代理输入出现问题 处理的顺序是 启动main函数 然
  • xsel -o 对于 OS X 等效项

    是否有一个等效的解决方案可以在 OS X 中抓取选定的文本 就像适用于 Linux 的 xsel o 一样 只需要当前的选择 这样我就可以在 shell 脚本中使用文本 干杯 埃里克 你也许可以安装xsel在 MacOS 上 更新 根据 A
  • ansible 重新启动 2.1.1.0 失败

    我一直在尝试创建一个非常简单的 Ansible 剧本 它将重新启动服务器并等待它回来 我过去在 Ansible 1 9 上有一个可以运行的 但我最近升级到 2 1 1 0 并且失败了 我正在重新启动的主机名为 idm IP 为 192 16
  • 为什么我收到的数据包数据大小大于mss?

    我在两台 PC 上使用 ifconfig ethX mtu 300 修改了 MTU 并使用 netperf 测试网络 我用 WireShark 嗅探了 SYN 数据包中的 MSS 260 但我得到了一些大于 260 的数据包 为什么 嗅探器
  • 何时使用 pthread 条件变量?

    线程问题 看来 只有在其他线程调用 pthread cond notify 之前调用 pthread cond wait 时 条件变量才起作用 如果在等待之前发生通知 那么等待将被卡住 我的问题是 什么时候应该使用条件变量 调度程序可以抢占
  • 修改linux下的路径

    虽然我认为我已经接近 Linux 专业人士 但显然我仍然是一个初学者 当我登录服务器时 我需要使用最新版本的R 统计软件 R 安装在 2 个地方 当我运行以下命令时 which R I get usr bin R 进而 R version
  • Elasticsearch 无法写入日志文件

    我想激活 elasticsearch 的日志 当我运行 elasticsearch 二进制文件时 我意识到我在日志记录方面遇到问题 无法加载配置 这是输出 sudo usr share elasticsearch bin elasticse
  • 创建 jar 文件 - 保留文件权限

    我想知道如何创建一个保留其内容的文件权限的 jar 文件 我将源代码和可执行文件打包在一个 jar 文件中 该文件将在使用前提取 人们应该能够通过运行批处理 shell 脚本文件立即运行示例和演示 然后他们应该能够修改源代码并重新编译所有内
  • 强制卸载 NFS 安装目录 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案
  • 使用 grep 查找包含所有搜索字符串的行

    我有一个文件 其中包含很多与此类似的行 id 2796 some model Profile message type MODEL SAVE fields account 14 address null modification times
  • 为什么 Linux perf 使用事件 l1d.replacement 来处理 x86 上的“L1 dcache misses”?

    在英特尔 x86 上 Linux用途 https stackoverflow com a 52172985 149138事件l1d replacements来实施其L1 dcache load misses event 该事件定义如下 计数

随机推荐

  • Hypervisor简介

    从头开始了解和使用Hypervisor xff08 第4部分 xff09 嘶吼 RoarTalk 回归最本质的信息安全 互联网安全新媒体 4hou com 根据 Hypervisor 的不同类型 xff0c 我们将虚拟化分为I 型和 II
  • 使用repo下载google源码,跟编译 ,遇到的错误解决

    最近一直想下载android的源码看看 xff0c 但是按照官方的文档下载 xff0c 遇到了问题 在执行的curl http commondatastorage googleapis com git repo downloads repo
  • S32V234 Linux yocto开发环境搭建

    一 主机环境 主机 xff1a Ubuntu 16 04 5 64bit S32V bsp infomation xff1a Bsp version auto yocto bsp 19 0 Linux Kernel version 4 13
  • NXP S32G2开发

    https blog csdn net bigzhizhi article details 123069235 导言 Linux BSP是一组源代码 xff0c 可用于为受支持的板卡创建U Boot引导加载程序 Linux内核映像 根文件系
  • 简单解决Please install the gcc make perl packages from your distribution问题 and VirtualBox安装增强功能失败

    在vbox安装ubantu增强功能 xff0c 出现下面这种情况 xff1a Please install the gcc make perl packages from your distribution 在这里插入图片描述 把需要的包都
  • 图形学就业方向&&春招部份纪实

    以下分几个模块分别介绍图形学 xff1a 1 图形学未来方向以及需要的技术 2 个人找工作情况 xff0c 具体介绍 图形学未来方向以及需要的技术 最近GAMES论坛搞了一个计算机图形学走进高校企业活动 xff0c 可以简称图形学招聘活动
  • SOME/IP 消息的布局

    1 SOME IP 消息的布局 前面两篇文章 SOME IP概述 分层结构及要实现的需求 SOME IP概述2 SOME IP的主要中间件功能 43 SOME IP报文PDU的封装 讲述了SOME IP的基本概念 需求及架构在以太网的4层模
  • 什么才是软件定义汽车?

    Software Defined Vehicle The Eclipse Foundation 导读 xff1a 移动出行时代 xff0c 汽车逐渐由机械驱动的硬件向软件驱动的电子产品过渡 xff0c 软件定义汽车趋势愈发明显 这一过程中汽
  • 一文看懂四大汽车总线:LIN、CAN、FlexRay、MOST

    前言 随着汽车工业的发展 xff0c 汽车各系统的控制逐步向自动化和智能化转变 xff0c 汽车电气系统变得日益复杂 传统的电气系统大多采用点对点的单一通信方式 xff0c 相互之间少有联系 xff0c 这样必然会形成庞大的布线系统 据统计
  • 浅谈ASIL: 汽车安全性等级

    目录 ASIL 表示汽车安全性等级 ASIL的确定 1 严重度 2 暴露度 3 可控度 ASIL 故障分析手段 ASIL 表示汽车安全性等级 这是 ISO 26262 标准针对道路车辆的功能安全性定义的风险分类系统 ASIL 根据伤害的可能
  • SOA中间件DDS(数据分发服务-Data Distribution Service)

    DDS协议 高可靠性 实时性 DDS Data Distribution Service for Real Time Systems xff0c 是一种面向实时系统的数据分发服务 xff0c 由OMG提供 xff0c 它的权威性可以证明该协
  • MQTT与DDS的比较

    MQTT VS DDS MQTT协议 三种服务质量 QoS xff1a 最多一次 Sender 发送的一条消息 xff0c Receiver 最多能收到一次 xff0c 也就是说 Sender 尽力向 Receiver 发送消息 xff0c
  • R-Car H3系列SOC芯片与R-Car M3 R8A77961JBP0BA区别

    RENESAS推出的 xff1a R Car H3 系列 SOC 芯片 R8A77951JA00BA xff03 YJ1 xff0c R Car M3 系列 SOC 芯片 R8A77960JA60BG xff03 YJ5 在内核上 xff1
  • PTP(IEEE1588),TSN时间同步方法

    本文首先简要介绍主流的时间同步方式GNSS xff0c NTP xff0c PTP 然后通过NTP和PTP对比 xff0c 解释PTP性能更优秀的原因 xff1b 并对算法公式进行了推导 0 Why need time synchroniz
  • AUTOSAR的四种功能安全机制

    虽然AUTOSAR不是一个完整的安全解决方案 xff0c 但它提供了一些安全机制用于支持安全关键系统的开发 本文用于介绍AUTOSAR支持的四种功能安全机制 xff1a 内存分区 xff08 Memory Partitioning xff0
  • libstdc++版本冲突的解决

    类似的问题出现在测试环境部署过程 xff0c 当编译完成该前端解析器后 xff0c 由于其依赖一些库文件 xff0c 包括系统库文件libstdc 43 43 so 6 及 libc so xff0c 这都是系统至关重要的库文件 但是不同系
  • 3D打印——CLIP技术之更快速更高表面质量

    论文 Gradient light video projection based stereolithography for continuous production of solid objects 阅读 论文共分为6个章节 xff1a
  • 汽车上DTC是什么意思?DTC是什么故障

    DTC的全称是 Diagnostic Trouble Code xff0c 意为诊断故障代码 如今 xff0c 汽车很多故障都是通过故障代码去诊断的 xff0c 例如汽车底盘检测 车身及附件检测 汽车污染物与噪声处理部件等相关检测等 目的旨
  • 人生算法——读书笔记

    跨越出生和运气 xff0c 实现富足和自由 用概率思维 做好决策 人生算法九段 广义而言大自然有两个重要的算法 xff0c 一个是进化 xff0c 一个是大脑 现实中我们虽然拼命思考 xff0c 但是极少思考自己的思考 围绕认知的飞轮 xf
  • Linux 上功能强大的网络工具 tcpdump 详解

    tcpdump 是用于捕获传入和传出流量的网络实用程序 这是您需要了解的有关在 Linux 上使用 tcpdump 的所有信息 Linux 配备了大量的网络实用程序可供选择 tcpdump 是一种功能强大的网络工具 xff0c 如果您需要对