Linux tcpdump 详解教程

简介

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

安装 tcpdump

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

bash 复制代码
sudo apt-get install tcpdump

在基于 Red Hat 的系统上:

bash 复制代码
sudo yum install tcpdump

tcpdump 命令选项

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

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

基本使用

捕获所有接口的流量

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

捕获特定接口的流量

bash 复制代码
sudo tcpdump -i eth0 -w capture.pcap

捕获特定端口的数据包

bash 复制代码
sudo tcpdump -i eth0 port 80 -w capture.pcap

实时查看抓包数据

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

bash 复制代码
sudo tcpdump -i eth0

高级过滤

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

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

tcpdump 与 Wireshark

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

bash 复制代码
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 系统中进行网络数据包的捕获和分析。

相关推荐
Piko61433 分钟前
H3C IRF2 堆叠实战:打造高可靠核心交换网络
运维·网络·笔记
JAVA面经实录91739 分钟前
Linux 常用命令完整知识体系
java·linux·开发语言·汇编
万联WANFLOW3 小时前
SD-WAN 控制平面高可用怎么做?SDWAN 控制器挂了,全网会发生什么
运维·网络·分布式·架构
酱学编程4 小时前
【从零到一实现一个 AI Agent 框架 · 第四篇】04. 任务规划:拆解复杂目标 -
服务器·网络·数据库·人工智能
SkyWalking中文站6 小时前
认识 Horizon UI · AI Assistant:用日常语言查询你的可观测性数据
运维·监控·自动化运维
艾莉丝努力练剑6 小时前
OpenCode AI 编程:Ubuntu 24.04 环境安装与使用指南
linux·服务器·网络·人工智能·tcp/ip·ubuntu
崇山峻岭之间6 小时前
Keil5输出hex转换为bin的设置
linux·运维·服务器
Hoxy.R7 小时前
KingbaseES读写分离高可用集群扩容、备库重建与故障切换实战
运维·数据库
谷雪_6587 小时前
Linux 网络命名空间:从内核原理到企业级容器网络架构全景实战
linux·网络·架构
Tian_Hang7 小时前
Eclipse Ditto 的权限策略
java·服务器·前端·网络·ide·ubuntu·eclipse