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

相关推荐
@土豆18 小时前
【混合云组网实战】Docker部署内网互通服务,实现本地网段访问公有云VPC私网
运维·docker·容器
Lucis__18 小时前
Linux系统收官篇:线程学习的一些心得总结
linux·学习·线程
luj_176818 小时前
从R语言想起的,。。。
服务器·c语言·开发语言·经验分享·算法
qq_3391911418 小时前
kimi-cli 服务形式启动,kimi-cli无头模式 kimi-cli web启动,
服务器·前端·javascript
白狐_79818 小时前
我的第一台云服务器:阿里云 ECS 配置记录,以及本地连接后到底能做什么
运维·服务器·阿里云
喵叔哟18 小时前
3.【.NET10 实战--孢子记账--产品智能化】--.NET 10 核心新特性概览:运行时与 ASP.NET Core 10
云计算·asp.net·.net
不剪发的Tony老师18 小时前
mayfly-go:一款基于WEB的服务器、数据库、中间件统一运维平台
运维·服务器·数据库
孤岛站岗18 小时前
【AI Agent实战手册】AG11:用LangGraph搭一个自动化研究助手:从设计到部署全流程
运维·自动化
minji...18 小时前
Linux 多线程(五)用C++语言以面向对象方式封装线程
linux·运维·服务器·网络·jvm·数据库
香蕉鼠片18 小时前
TCP确认应答,超时重传,滑动窗口,流量控制,拥塞控制,延迟应答,捎带应答
服务器·网络协议·tcp/ip