Linux 下使用tcpdump进行网络分析

简介

tcpdump 是一个命令行数据包分析器,可实时捕获和检查网络流量。它通常用于网络故障排除、性能分析和安全监控。

安装

  • Debian/Ubuntu
shell 复制代码
sudo apt update && sudo apt install tcpdump -y
  • CentOS/RHEL
shell 复制代码
sudo yum install tcpdump -y
  • macOS
shell 复制代码
brew install tcpdump

基础语法

shell 复制代码
tcpdump [options] [filter]

示例用法

在默认接口上捕获数据包

实时捕获并显示网络数据包。

shell 复制代码
sudo tcpdump

列出可用网络接口

shell 复制代码
sudo tcpdump -D

输出示例

shell 复制代码
1. eth0
2. wlan0
3. lo

可以使用此列表中的接口名称来捕获特定接口上的数据包。

在特定接口上捕获数据包

shell 复制代码
sudo tcpdump -i eth0

限制捕获的数据包数量

仅捕获 10 个数据包然后停止

shell 复制代码
sudo tcpdump -c 10 -i eth0

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

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

从文件读取数据包

shell 复制代码
sudo tcpdump -r capture.pcap

仅捕获特定协议

  • 仅 TCP 数据包
shell 复制代码
sudo tcpdump -i eth0 tcp
  • 仅 UDP 数据包
shell 复制代码
sudo tcpdump -i eth0 udp
  • 仅 ICMP(ping)数据包
shell 复制代码
sudo tcpdump -i eth0 icmp

捕获特定主机的数据包

捕获来自/到 192.168.1.1 的流量

shell 复制代码
sudo tcpdump -i eth0 host 192.168.1.1

捕获特定端口上的数据包

  • 捕获 HTTP 流量(端口 80)
shell 复制代码
sudo tcpdump -i eth0 port 80
  • 捕获 SSH 流量(端口 22)
shell 复制代码
sudo tcpdump -i eth0 port 22

从特定源或目标捕获数据包

  • 仅捕获来自源 192.168.1.100 的数据包
shell 复制代码
sudo tcpdump -i eth0 src 192.168.1.100
  • 仅捕获目的地址为 192.168.1.100 的数据包
shell 复制代码
sudo tcpdump -i eth0 dst 192.168.1.100

组合多个过滤器

在端口 443 (HTTPS) 上捕获往返于 192.168.1.100 的 TCP 流量

shell 复制代码
sudo tcpdump -i eth0 tcp and host 192.168.1.100 and port 443

以十六进制和 ASCII 格式显示数据包

shell 复制代码
sudo tcpdump -X -i eth0

无需解析主机名即可捕获数据包

-n 选项可防止 DNS 查找,从而提高性能

shell 复制代码
sudo tcpdump -n -i eth0

仅捕获数据包头(无有效负载)

-s 0 标志捕获完整的数据包而不是截断

shell 复制代码
sudo tcpdump -s 0 -i eth0

仅捕获 HTTP 流量并显示内容

-A 选项以 ASCII 格式打印数据包内容

shell 复制代码
sudo tcpdump -A -i eth0 port 80
相关推荐
七七七七071 小时前
【计算机网络】深入理解ARP协议:工作原理、报文格式与安全防护
linux·服务器·网络·计算机网络·安全
lhxcc_fly4 小时前
Linux网络--8、NAT,代理,网络穿透
linux·服务器·网络·nat
摇滚侠4 小时前
Spring Boot3零基础教程,Spring Boot 应用打包成 exe 可执行文件,笔记91 笔记92 笔记93
linux·spring boot·笔记
yuanManGan5 小时前
走进Linux的世界:初识操作系统(Operator System)
android·linux·运维
Thexhy6 小时前
在 CentOS 7 的 Linux 系统中配置 NFS
linux·运维·学习·centos
咯哦哦哦哦6 小时前
linux vscode+cmake+clangd
linux·ide·vscode
lang201509286 小时前
如何在 Linux 中获取更多信息
linux·运维·服务器
DeBuggggggg6 小时前
linux 安装Python3.9 且支持SSL
linux·运维·ssl
我是标同学6 小时前
vmware17安装ubuntu2204版本qemu运行armv8处理器uboot运行调试(包括windows)的一些工作
linux·运维·服务器
杨云龙UP6 小时前
【MySQL迁移】MySQL数据库迁移实战(利用mysqldump从Windows 5.7迁至Linux 8.0)
linux·运维·数据库·mysql·mssql