网络分析工具:tcpdump 安装与使用

server/2024/9/25 23:19:40/

tcpdump 是一个强大的命令行网络分析工具,广泛用于捕获网络上传输的数据包。是分析网络流量情况,排查网络问题、分析协议的交互以及网络安全监控的常用工具

基础使用

tcpdump_5">安装 tcpdump

在大多数 Linux 发行版中,tcpdump 已经预装。如果没有,可以通过包管理器安装:

  • 在 Debian/Ubuntu 系统上:

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

    sudo yum install tcpdump
    
  • 在 macOS 上,tcpdump 通常已预装,如果需要更新或重新安装,可以使用 Homebrew:

    brew install tcpdump
    
基本命令
  • 捕获所有接口的数据包

    sudo tcpdump
    

    这会显示所有接口上的数据包,通常输出会非常快,不易阅读。

  • 指定网络接口抓包

    sudo tcpdump -i eth0
    

    -i 选项指定接口(如 eth0)。如果不确定接口名称,可以用 ip addr 命令查看。

  • 保存捕获的数据包到文件

    sudo tcpdump -w myfile.pcap
    

    使用 -w 选项将捕获的数据保存到文件中,方便后续使用 Wireshark 等工具进行分析。

  • 从文件中读取数据包

    tcpdump -r myfile.pcap
    

    使用 -r 选项从文件中读取数据包。

进阶使用

过滤表达式

tcpdump 强大之处在于其过滤表达式,可以精确指定需要捕获的数据包类型:

  • 捕获特定主机的数据包

    sudo tcpdump host 192.168.1.1
    

    只捕获所有发送到或来自 IP 地址为 192.168.1.1 的数据包。

  • 捕获特定协议的数据包

    sudo tcpdump icmp
    

    这条命令捕获所有 ICMP 数据包,例如 ping 请求。

  • 组合条件

    sudo tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
    

    这个复杂的表达式用来捕获所有 TCP 端口为 80 且含有数据(非 SYN、FIN 等控制包)的数据包。

  • 排除特定主机的流量

    sudo tcpdump not host 192.168.1.1
    

    捕获所有不是发送到或来自 192.168.1.1 的数据包。

性能优化
  • 限制捕获的数据包数量

    sudo tcpdump -c 100
    

    使用 -c 选项限制捕获的数据包数量,这里设置为 100。

  • 使用缓冲区来提高捕获效率

    sudo tcpdump -B 4096
    

    使用 -B 选项增大内核缓冲区的大小(以千字节为单位),这里设置为 4096 KB,有助于在高流量环境下不丢包。

示例应用场景

  1. 网络故障排查
    sudo tcpdump -i eth0 -nn 'tcp port 443'
    
    捕获所有通过 eth0 接口的 HTTPS 流量,不解析主机名

和服务名(使用 -nn),有助于快速定位与 HTTPS 服务相关的问题。

  1. 安全监控
    sudo tcpdump -i eth0 'src host 192.168.1.1 and not dst net 192.168.1.0/24'
    
    捕获从 IP 192.168.1.1 发出且不是发往本地网络的所有数据包,用于检测可能的数据泄露或不寻常的外发连接。

http://www.ppmy.cn/server/25197.html

相关文章

探索PyTorch与深度学习:从基础到实践

PyTorch是一个开源的深度学习框架&#xff0c;由Facebook的人工智能研究团队开发和维护。它提供了丰富的工具和资源&#xff0c;使得深度学习模型的构建、训练和部署变得更加简单和高效。本文将带你从基础到实践&#xff0c;深入探索PyTorch与深度学习的奥秘。 1. PyTorch简介…

【全国青少年信息素养大赛智能算法挑战赛初中模拟卷】

目录 模拟卷1 全国青少年信息素养大赛智能算法挑战赛初中模拟卷2 全国青少年信息素养大赛智能算法挑战赛初中模拟卷3 模拟卷1 单选题&#xff08;每题 5 分&#xff0c;共 75 分&#xff09; 1. 在C中&#xff0c;哪个关键字用于指定一个类为另一个类的基类&#xff1f; - A…

数据库分库分表

数据库分库分表 分库分表到底是什么 分库分表其实是分库,分表,分库分表的总称 分库 将数据按照一定规则存储到不同的数据库中,每个数据库存储一部分数据 分库主要解决的是并发量过大的问题&#xff0c;并发量一旦上升&#xff0c;那么数据库就可能成为系统的瓶颈&#xff…

Docker基本操作 数据卷

数据卷的理解&#xff1a; 数据卷操作的基本语法: docker volume [command]&#xff1b;二级命令 后边跟随 create :创建一个volume&#xff1b; inspect&#xff1a;显示一个或多个volume的信息; ls:列出所有的volume&#xff1b; prune:删除未使用的volume; rm:删除一个或多…

二分查找法实例

本文是根据数据结构中常常提到的二分法而作的一篇博客&#xff0c;主要通过一个二分法实例进行展开说明&#xff1a; 实例内容 通过一个二分法函数来寻找某个数是否在给定的数组中&#xff1b; 代码展示 # 执行二分查找法的算法函数 # 二分法查找的对象必须是一个有序的集…

鸿蒙OpenHarmony【轻量系统 烧录】 (基于Hi3861开发板)

烧录 针对Hi3861开发板&#xff0c;除了DevEco Device Tool&#xff08;操作方法请参考烧录&#xff09;外&#xff0c;还可以使用Hiburn进行烧录。 前提条件 开发板相关源码已编译完成&#xff0c;已形成烧录文件。客户端&#xff08;操作平台&#xff0c;例如Windows系统&…

14.MMD导入Blender及贴图步骤

MMD导出.abc文件 在MMD十周年桥版本导入一个人物模型&#xff0c;这里导入仆人 注意MMD的路径不能有中文 点击上面的MMDBridge 设定 第一个选择blender by 第二个选择实行 这里是选择帧数范围和帧率 帧率一定要是30&#xff0c;不然后面可能会出问题 点击文件导出视频…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-9.1-LED灯(模仿STM32驱动开发实验)

前言&#xff1a; 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…