好的,阿杰,我给你整理一份 全网最详细的 tcpdump 使用指南,从基础到高级用法都涵盖,方便你在 Linux 或 macOS 下抓包和分析网络流量。


TCPDUMP 使用指南

1️⃣ TCPDUMP 简介

  • 作用:在终端抓取网络数据包,实时分析 TCP/IP 协议栈流量。
  • 特点
    • 支持过滤器,抓取指定流量。
    • 可以保存抓包文件(.pcap)供 Wireshark 分析。
    • 常用于故障排查、网络监控和安全分析。
  • 安装
# Ubuntu / Debian
sudo apt-get install tcpdump

# CentOS / RHEL
sudo yum install tcpdump

# macOS (brew)
brew install tcpdump

  • 注意:抓包需要 root 权限或 CAP_NET_RAW 权限。
sudo tcpdump -D   # 查看可用网卡


2️⃣ 基本抓包命令

sudo tcpdump -i eth0

  • -i 指定抓包网卡
  • 默认抓取所有数据包,输出信息包括:
    • 时间戳
    • 源 IP:端口 → 目的 IP:端口
    • 协议类型
    • 简要数据内容

限制抓包数量

sudo tcpdump -i eth0 -c 10

  • -c 10:抓 10 个数据包后退出

显示详细信息

sudo tcpdump -i eth0 -vvv

  • -v / -vv / -vvv 增加详细级别,包括 TTL、长度、标志位等

3️⃣ 常用过滤表达式

过滤 IP

# 指定源 IP
tcpdump src 192.168.1.10

# 指定目的 IP
tcpdump dst 192.168.1.20

# 源或目的 IP
tcpdump host 192.168.1.30

过滤端口

# TCP 端口 80
tcpdump tcp port 80

# UDP 端口 53
tcpdump udp port 53

# 指定源端口
tcpdump src port 22

# 指定目的端口
tcpdump dst port 443

组合条件

# 源 IP + TCP 端口 80
tcpdump tcp port 80 and src 192.168.1.10

# HTTP 流量排除 ICMP
tcpdump tcp port 80 and not icmp

  • 支持逻辑运算符:
    • and / or / not / () 括号组合

4️⃣ 抓包保存与读取

保存抓包到文件

sudo tcpdump -i eth0 -w capture.pcap

  • -w:写入文件(原始二进制数据)

读取抓包文件

sudo tcpdump -r capture.pcap

  • -r:读取 pcap 文件

只显示部分内容

sudo tcpdump -r capture.pcap -n -tttt

  • -n:不解析域名
  • -tttt:显示完整时间戳

5️⃣ 实用选项

参数作用
-n不解析主机名
-nn不解析主机名和端口号
-X显示包内容(十六进制 + ASCII)
-XX显示链路层头 + 内容
-s 0抓取完整包(默认只抓前 262 字节)
-q简化输出,只显示重要信息
-e显示链路层地址(MAC)
-tttt显示时间戳,精确到微秒
-D列出可用网卡

6️⃣ 高级用法

1. 抓取 HTTP 流量

sudo tcpdump -i eth0 -s 0 -A 'tcp port 80'

  • -A:以 ASCII 输出内容,方便查看 HTTP 请求/响应

2. 抓取 HTTPS 流量(只看 TLS 握手,不解密内容)

sudo tcpdump -i eth0 -s 0 -n 'tcp port 443'

3. 抓取指定网段流量

tcpdump net 192.168.1.0/24

4. 抓取特定协议

tcpdump icmp      # ping 报文
tcpdump arp       # ARP 报文
tcpdump udp       # UDP 报文

5. 限制抓包大小

tcpdump -s 128 -i eth0

  • 只抓前 128 字节,减少资源消耗

6. 配合 Wireshark 分析

sudo tcpdump -i eth0 -w capture.pcap
# 然后在 Wireshark 打开 capture.pcap

7. 持续抓包

tcpdump -i eth0 -G 60 -w 'dump-%Y-%m-%d_%H:%M:%S.pcap'

  • -G 60:每 60 秒生成一个新文件
  • 可实现长期监控

7️⃣ 抓包性能优化

  • 避免抓全量,使用过滤表达式减少数据量
  • 调整抓包缓存:
tcpdump -i eth0 -B 4096

  • -B:设置内核缓冲区大小(KB)
  • 使用 -n 避免 DNS 解析,提高抓包速度

8️⃣ 总结

  • tcpdump 是终端抓包利器
  • 基础抓包tcpdump -i eth0
  • 过滤指定流量host / port / net / proto
  • 保存分析-w capture.pcap
  • 查看内容-X / -A
  • 性能优化:过滤 + 缓冲区 + 限制抓包长度