4.6 tcpdump命令详解及示例 

tcpdump 是 Linux/Unix 系统下的网络抓包工具,可以捕获和分析网络数据包,用于网络调试、安全分析、流量监控等场景。它支持过滤特定协议、端口、IP 地址等,是网络工程师和安全分析师的必备工具。


1. tcpdump 基本语法

tcpdump [选项] [过滤表达式]
选项 说明
-i eth0 指定监听的网卡(默认 any
-n 不解析主机名(显示 IP 而非域名)
-nn 不解析主机名和端口(显示数字)
-c 10 只捕获 10 个包后退出
-w file.pcap 保存抓包数据到文件(.pcap 格式)
-r file.pcap 读取 .pcap 文件并分析
-v 显示详细信息
-vv 显示更详细信息
-X 以十六进制和 ASCII 显示数据
-A 以 ASCII 显示数据(适合 HTTP 分析)
-s 0 捕获完整数据包(默认只抓前 96 字节)
-q 安静模式(减少输出)

2. 常用过滤表达式

表达式 说明
host 192.168.1.1 抓取与 192.168.1.1 相关的包
src 192.168.1.1 抓取源 IP 是 192.168.1.1 的包
dst 192.168.1.1 抓取目标 IP 是 192.168.1.1 的包
port 80 抓取 80 端口的包
src port 22 抓取源端口是 22(SSH)的包
dst port 443 抓取目标端口是 443(HTTPS)的包
tcp 只抓取 TCP 包
udp 只抓取 UDP 包
icmp 只抓取 ICMP(ping)包
net 192.168.1.0/24 抓取整个子网的包
not port 22 排除 SSH 流量
and / or 组合条件(如 port 80 or port 443

3. tcpdump 使用示例

(1)基本抓包

tcpdump -i eth0  # 监听 eth0 网卡的所有流量
tcpdump -n       # 不解析主机名(显示 IP)
tcpdump -nn      # 不解析主机名和端口(显示数字)

(2)抓取特定 IP 的流量

tcpdump host 192.168.1.100        # 抓取与 192.168.1.100 相关的包
tcpdump src 192.168.1.100         # 抓取来自 192.168.1.100 的包
tcpdump dst 192.168.1.100         # 抓取目标为 192.168.1.100 的包

(3)抓取特定端口的流量

tcpdump port 80                   # 抓取 HTTP 流量
tcpdump port 22                   # 抓取 SSH 流量
tcpdump port 443                  # 抓取 HTTPS 流量
tcpdump src port 53               # 抓取 DNS 查询(UDP 53)

(4)抓取 TCP/UDP/ICMP 流量

tcpdump tcp                       # 只抓取 TCP 包
tcpdump udp                       # 只抓取 UDP 包
tcpdump icmp                      # 只抓取 ICMP(ping)包

(5)组合过滤条件

tcpdump "port 80 or port 443"     # 抓取 HTTP 和 HTTPS 流量
tcpdump "src 192.168.1.100 and dst port 22"  # 抓取来自 192.168.1.100 的 SSH 流量
tcpdump "not port 22"             # 排除 SSH 流量

(6)抓取 HTTP 请求(ASCII 显示)

tcpdump -A -s 0 port 80           # 显示 HTTP 请求内容

(7)保存抓包数据

tcpdump -w capture.pcap           # 保存到文件
tcpdump -r capture.pcap           # 读取并分析文件

(8)抓取特定长度的包

tcpdump greater 1000              # 抓取长度 > 1000 字节的包
tcpdump less 100                  # 抓取长度 < 100 字节的包

(9)抓取广播/多播流量

tcpdump ether broadcast           # 抓取广播包
tcpdump ether multicast           # 抓取多播包

4. 高级用法

(1)抓取 VLAN 流量

tcpdump -i eth0 vlan              # 抓取 VLAN 流量

(2)抓取 ARP 包

tcpdump arp                       # 抓取 ARP 请求/响应

(3)抓取 DNS 查询

tcpdump -n -i eth0 port 53        # 抓取 DNS 查询(UDP 53)

(4)抓取 MySQL 查询

tcpdump -i eth0 -s 0 -A port 3306 # 抓取 MySQL 流量

(5)抓取 VoIP(SIP/RTP)流量

tcpdump -n udp port 5060          # SIP 流量
tcpdump -n udp portrange 10000-20000  # RTP 流量

5. 常见问题

(1)权限问题

tcpdump 需要 root 权限:

sudo tcpdump -i eth0

(2)如何停止抓包?

Ctrl + C 停止。

(3)如何分析 .pcap 文件?

  • 使用 tcpdump -r file.pcap 查看
  • 使用 Wireshark 进行图形化分析

6. 总结

  • tcpdump 是 Linux 下的网络抓包工具,适用于调试、安全分析。
  • 常用选项
    • -i(指定网卡)
    • -n(不解析主机名)
    • -w(保存抓包数据)
    • -A(显示 ASCII 内容)
  • 常用过滤
    • hostporttcpudpicmp
    • and / or 组合条件
  • 高级用法
    • 抓取 HTTP、DNS、MySQL、VoIP 等特定流量
    • 保存 .pcap 文件并用 Wireshark 分析

掌握 tcpdump 可以快速定位网络问题!🚀

全部评论(0)

头像
😃 😁 😅 😂 😍 😜 😝 🤑 🥵 🥰 😙 😎 😵 😭 😱 😖 🥳 👽 🙈 🤡 😤 💣 💯 💢 ❤️ 👍 👏 👋 👌 🤏 🙏
还没有任何评论哟~
目录