tcpdump网络抓包命令详解

 

tcmdump 命令

tcpdump 是一款强大的 命令行网络抓包工具,用于捕获和分析网络接口上的数据包,支持多种协议(TCP/UDP/ICMP 等)和过滤规则,广泛应用于网络调试、安全分析和流量监控。

核心特点

  • 支持复杂过滤表达式(BPF 语法)。

  • 可保存抓包数据(.pcap 文件)供后续分析(如 Wireshark)。

  • 跨平台(Linux/macOS/Windows 通过 WinDump)。

1、基础语法

tcpdump [选项] [过滤表达式]

2、常用选项详解

选项作用示例
-i <接口>

指定监听的网络接口(如 eth0any

tcpdump -i eth0
-n

禁用域名解析(直接显示 IP)

tcpdump -n
-v

增加输出详细程度(-vv-vvv 更详细)

tcpdump -v
-c <数量>

捕获指定数量的包后退出

tcpdump -c 10
-w <文件>

将抓包数据写入文件(.pcap 格式)

tcpdump -w capture.pcap
-r <文件>

读取抓包文件进行分析

tcpdump -r capture.pcap
-s <长度>

设置抓包长度(默认 262144 字节)

tcpdump -s 0

(抓取完整包)

-A

以 ASCII 格式显示数据包内容(如 HTTP 文本)

tcpdump -A port 80
-X

同时以 HEX 和 ASCII 显示数据包内容

tcpdump -X
-q

简洁输出(减少协议层级信息)

tcpdump -q

2、过滤表达式

1. 基础过滤规则
表达式作用示例
host <IP>

过滤指定主机的流量(IP 或域名)

tcpdump host 192.168.1.100
port <端口>

过滤指定端口的流量

tcpdump port 80
src <IP>

过滤源地址为指定 IP 的流量

tcpdump src 192.168.1.1
dst <IP>

过滤目标地址为指定 IP 的流量

tcpdump dst 8.8.8.8
net <网段>

过滤指定网段的流量(CIDR 格式)

tcpdump net 192.168.1.0/24
2. 协议过滤
表达式作用示例
tcp

仅捕获 TCP 协议流量

tcpdump tcp
udp

仅捕获 UDP 协议流量

tcpdump udp
icmp

仅捕获 ICMP 协议流量(如 ping)

tcpdump icmp
3. 逻辑运算符
运算符作用示例

and

 (或 &&)

逻辑与

tcpdump src 192.168.1.1 and port 80

or

 (或 `

`)

逻辑或

tcpdump port 80 or port 443
not

 (或 !)

逻辑非

tcpdump not icmp

4、实用场景与示例

1. 基础抓包
# 捕获所有经过 eth0 的流量(Ctrl+C 停止)
tcpdump -i eth0

# 捕获所有 TCP 流量并显示 IP(不解析域名)
tcpdump -n tcp
2. 过滤指定主机和端口
# 捕获与 192.168.1.100 的 22 端口(SSH)通信
tcpdump -n host 192.168.1.100 and port 22

# 捕获源 IP 为 10.0.0.1 的 HTTP 流量
tcpdump -n src 10.0.0.1 and port 80
3. 捕获 HTTP 请求内容
# 显示 HTTP GET/POST 请求的 URL 和头部(ASCII 格式)
tcpdump -A -s0 port 80 | grep -E 'GET|POST'
4. 抓包保存与读取
# 保存抓包数据到文件(适合长时间捕获)
tcpdump -i eth0 -w traffic.pcap

# 读取抓包文件并过滤分析
tcpdump -r traffic.pcap 'tcp port 443'
5. 高级过滤
# 捕获 ICMP 不可达错误(如防火墙拦截)
tcpdump 'icmp[0] == 3'

# 捕获 TCP SYN 包(检测端口扫描)
tcpdump 'tcp[tcpflags] & tcp-syn != 0'

5、输出解析

示例输出

14:25:30.123456 IP 192.168.1.100.54321 > 8.8.8.8.53: 12345+ A? example.com. (32)
  • 时间戳14:25:30.123456

  • 协议IP(IPv4)

  • 源地址192.168.1.100.54321(IP + 源端口)

  • 目标地址8.8.8.8.53(IP + 目标端口,DNS 服务)

  • 包内容:DNS 查询(A? example.com

6、常见问题解决

1. 权限不足
  • 错误tcpdump: eth0: You don't have permission to capture on that device

  • 解决:使用 sudo 或以 root 用户运行:

sudo tcpdump -i eth0
2. 接口列表查询
tcpdump -D  # 列出所有可用网络接口
3. 过滤 MAC 地址
tcpdump ether host 00:11:22:33:44:55  # 捕获指定 MAC 的流量

7、与 Wireshark 结合使用

  1. 保存抓包数据

tcpdump -i eth0 -w traffic.pcap
  1. 使用 Wireshark 分析

wireshark traffic.pcap

8、总结

  • 核心命令

tcpdump -i eth0 -n 'tcp port 80'  # 监控 HTTP 流量
tcpdump -w traffic.pcap           # 保存抓包数据
  • 适用场景

    • 网络故障排查(如连接超时、丢包)。

    • 安全分析(检测异常流量、端口扫描)。

    • 协议学习(观察 TCP 握手、DNS 查询)。

掌握 tcpdump 可快速定位网络层问题,结合过滤表达式和 .pcap 文件分析,是运维和开发人员的必备技能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

资料库01

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值