tcpdump抓取流量包详解

tcpdump 是 Linux 下强大的网络抓包工具,广泛用于网络诊断和分析。以下是对 tcpdump 的详细讲解,包括安装、使用方法和常见示例。


1. 基本概念

tcpdump 用于捕获和分析网络数据包,可以过滤并显示传输中的数据,支持协议、端口等多种筛选条件。


2. 安装

大多数 Linux 发行版都自带 tcpdump,如未安装可以用以下命令:

bash 复制代码
# Ubuntu/Debian
sudo apt update && sudo apt install tcpdump

# CentOS/RHEL
sudo yum install tcpdump

3. 基本使用

1) 显示网络接口

bash 复制代码
tcpdump -D

输出示例:

bash 复制代码
1.eth0
2.wlan0
3.any
4.lo

数字表示接口编号,可用于指定抓包的接口。

2) 抓取指定接口的数据包

bash 复制代码
tcpdump -i eth0
  • -i 指定接口名称。
  • 若不指定接口,默认抓取第一个非 lo 的接口。

4. 常用选项

1) 保存数据到文件

bash 复制代码
tcpdump -i eth0 -w packets.pcap
  • -w 指定保存的文件(.pcap 格式,可用 Wireshark 分析)。

2) 读取已保存的文件

bash 复制代码
tcpdump -r packets.pcap
  • -r 从文件中读取数据。

3) 限制数据包大小

bash 复制代码
tcpdump -s 96
  • -s 指定捕获每个包的字节大小,96 表示捕获前 96 字节。

4) 限制捕获数量

cpp 复制代码
tcpdump -c 10
  • -c 捕获 10 个数据包后停止。

5) 显示更详细的信息

bash 复制代码
tcpdump -v   # 显示详细信息
tcpdump -vv  # 显示更详细信息
tcpdump -vvv # 显示极详细信息

5. 数据包过滤

tcpdump 支持 BPF 过滤表达式,常用的有协议、IP、端口等。

1) 按协议

  • 抓取 TCP 数据包:

    bash 复制代码
    tcpdump tcp
  • 抓取 UDP 数据包:

    bash 复制代码
    tcpdump udp
  • 抓取 ICMP(ping)数据包:

    bash 复制代码
    tcpdump icmp

2) 按 IP 地址

  • 抓取发往特定 IP 的数据包:

    bash 复制代码
    tcpdump host 192.168.1.1
  • 抓取源 IP 为指定地址的数据包:

    bash 复制代码
    tcpdump src 192.168.1.1
  • 抓取目标 IP 为指定地址的数据包:

    bash 复制代码
    tcpdump dst 192.168.1.1

3) 按端口

  • 抓取访问特定端口的数据包:

    bash 复制代码
    tcpdump port 80
  • 抓取源端口为 80 的数据包:

    bash 复制代码
    tcpdump src port 80
  • 抓取目标端口为 443 的数据包:

    bash 复制代码
    tcpdump dst port 443

4) 组合条件

  • 抓取源 IP 为 192.168.1.1 且目标端口为 22 的数据包:

    bash 复制代码
    tcpdump src 192.168.1.1 and dst port 22
  • 抓取 IP 不为 192.168.1.1 的数据包:

    bash 复制代码
    tcpdump not host 192.168.1.1

6. 显示格式

1) 显示十六进制和 ASCII 格式

bash 复制代码
tcpdump -X
  • -X 同时显示十六进制和 ASCII 数据。

2) 仅显示十六进制

bash 复制代码
tcpdump -xx

3) 显示时间戳

bash 复制代码
tcpdump -tttt
  • 显示可读的时间格式。

7. 示例

1) 捕获 HTTP 流量

bash 复制代码
tcpdump -i eth0 tcp port 80

2) 抓取特定网段的数据

bash 复制代码
tcpdump net 192.168.1.0/24

3) 抓取包含特定内容的数据包

bash 复制代码
tcpdump -A -i eth0 | grep "GET"
  • -A 显示数据包的 ASCII 内容。

8. 注意事项

  1. 权限tcpdump 通常需要 root 权限运行。
  2. 性能影响:抓包可能影响系统性能,尤其在高流量网络中。
  3. 隐私与安全:抓取流量时避免泄露敏感信息。
相关推荐
新时代牛马2 小时前
嵌入式网络完整篇:从LwIP/以太网驱动到 Linux netdev 与排障
linux·网络·php
上海云盾-小余3 小时前
BGP 高防底层原理:TCP 异常流量识别与清洗机制
运维·网络·tcp/ip
captain3763 小时前
▲网络原理(2)-TCP
java·服务器·网络·tcp/ip·java-ee
同元软控4 小时前
从排队、碰撞到信号波形:基于Sysevents的网络—信号一体化仿真
网络
言乐64 小时前
Python加速器4跨境网络加速器
运维·服务器·开发语言·网络·python
疯狂打码的少年6 小时前
【计算机网络】IPv6基础(特点、表示法、与IPv4对比)
网络·笔记·计算机网络
门思科技6 小时前
LoRaWAN 网络容量估算:一个 SX1302 网关到底能带多少设备
开发语言·网络·php
今天AI了吗10 小时前
什么是 AI Agent?它与直接调用大模型 API 有何区别
java·网络·人工智能·架构·java-ee
小祺先生11 小时前
mt7921 debian系统 如何安装驱动
运维·网络·debian
qq_5085760911 小时前
机器人通讯协议
网络·机器人