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

相关推荐
Aileen_0v02 小时前
【玩转OCR | 腾讯云智能结构化OCR在图像增强与发票识别中的应用实践】
android·java·人工智能·云计算·ocr·腾讯云·玩转腾讯云ocr
九河云3 小时前
华为云国内版与国际版的主要区别解析
华为云·云计算
007php0075 小时前
linux服务器上CentOS的yum和Ubuntu包管理工具apt区别与使用实战
linux·运维·服务器·ubuntu·centos·php·ai编程
人类群星闪耀时5 小时前
深度学习在灾难恢复中的作用:智能运维的新时代
运维·人工智能·深度学习
djykkkkkk5 小时前
ubuntu编译遇到的问题
linux·运维·ubuntu
LinkTime_Cloud5 小时前
GitLab 将停止为中国区用户提供服务,60天迁移期如何应对? | LeetTalk Daily
大数据·运维·gitlab
qq_429856575 小时前
linux 查看服务是否开机自启动
linux·运维·服务器
就爱学编程6 小时前
重生之我在异世界学编程之C语言:数据在内存中的存储篇(下)
java·服务器·c语言
Smile丶凉轩6 小时前
Docker核心技术和实现原理
运维·docker·容器
清风细雨_林木木6 小时前
Docker使用——国内Docker的安装办法
运维·docker·容器