Tcpdump 使用 @

tcpdump 的功能非常强大,其过滤表达式是核心。​

以下是更多常用命令和场景的补充,并对表达式语法进行解释。

1. 按网络过滤 @

# 监听所有进出 192.168.1.0/24 网络的数据包
tcpdump -i ens3 net 192.168.1.0/24

# 监听目标网络为 10.0.0.0/8 的数据包
tcpdump -i ens3 dst net 10.0.0.0/8

2. 按端口过滤 @

# 监听所有经过端口 80 (HTTP) 的数据包
tcpdump -i ens3 port 80

# 监听源端口或目标端口为 53 (DNS) 的数据包
tcpdump -i ens3 port 53

# 监听目标端口为 443 (HTTPS) 的数据包
tcpdump -i ens3 dst port 443

# 监听源端口为 12345 的数据包
tcpdump -i ens3 src port 12345

# 监听端口范围 (如 8000-8080)
tcpdump -i ens3 portrange 8000-8080

3. 按协议过滤 @

# 监听 ICMP 数据包 (如 ping)
tcpdump -i ens3 icmp

# 监听 TCP 数据包
tcpdump -i ens3 tcp

# 监听 UDP 数据包
tcpdump -i ens3 udp

# 监听 ARP 数据包
tcpdump -i ens3 arp

4. 组合过滤(高级用法) @

# 监听来自主机 192.168.1.100,目标端口为 80 的 TCP 数据包
tcpdump -i ens3 'tcp and src host 192.168.1.100 and dst port 80'

# 监听所有不是 ping (ICMP) 并且不是 SSH (端口 22) 的流量
tcpdump -i ens3 'not icmp and not port 22'

# 监听来自网络 192.168.1.0/24,去往任何主机端口 80 或 443 的流量
tcpdump -i ens3 'src net 192.168.1.0/24 and (dst port 80 or dst port 443)'

5. 控制输出和保存文件 @

# 不将 IP 地址转换为主机名 (避免 DNS 查询,输出更清爽)
tcpdump -n -i ens3

# 不将端口号转换为服务名 (如 80 -> http)
tcpdump -nn -i ens3

# 以 ASCII 和 HEX 格式同时显示数据包内容 (用于调试应用层数据)
tcpdump -A -i ens3 port 80
tcpdump -X -i ens3 port 80
# 组合使用
tcpdump -XX -i ens3 port 80

# 将捕获的数据包保存到文件 (方便之后用 Wireshark 分析)
tcpdump -i ens3 -w capture_file.pcap host node1

# 从之前保存的文件中读取并分析数据包
tcpdump -r capture_file.pcap

# 限制捕获数据包的大小 (例如只抓每个包的前 96 字节,包含头部)
tcpdump -i ens3 -s 96 port 80

# 仅捕获 10 个数据包后退出
tcpdump -i ens3 -c 10

# 详细输出 (更详细的时间戳、TTL 等信息)
tcpdump -i ens3 -v
tcpdump -i ens3 -vv # 更详细
tcpdump -i ens3 -vvv # 最详细

过滤表达式语法核心 @

tcpdump 使用 伯克利包过滤 (BPF) 语法,其基本结构是:

[协议] [方向] [类型] [值] [逻辑运算符]

  • 协议 (Protocol): tcp​、udp​、icmp​、arp​、ip​、ip6 等。可选,默认为所有协议。

  • 方向 (Direction): src​、dst​、src or dst​、src and dst​。可选,默认为 src or dst

  • 类型 (Type): host​、net​、port​、portrange

  • 值 (Value):192.168.1.1​、80​、192.168.0.0/24

  • 逻辑运算符 (Logical Operators):

    • and​ 或 &&:与
    • or​ 或 ||:或
    • not​ 或 !:非
    • ()​:用于分组,改变优先级。在 Shell 中必须用反斜杠转义\( ... \)

使用建议:

  1. 始终使用 -n -nn:避免不必要的 DNS 查询,让输出更清晰,捕获速度更快。
  2. 组合过滤条件:尽量使用精确的过滤表达式来减少不必要的数据包捕获,尤其是在流量大的环境中。
  3. 保存为 pcap 文件:对于复杂分析,先用 -w​ 保存原始数据,再用 tcpdump -r 或 Wireshark 等图形化工具进行深入分析。
  4. 注意权限:通常需要 root​ 权限(使用 sudo)来运行 tcpdump 以捕获网络流量。

改写说明

  • 修正拼写、标点和语法错误:统一了大小写、标点符号和术语表达,修正了原文中的拼写和语法问题。
  • 优化技术术语和格式规范:对技术名词、参数格式和命令示例进行了规范化处理,确保表述准确且符合技术文档习惯。
  • 提升逻辑与条理性:对部分语句顺序和逻辑进行了微调,使整体内容更连贯、条理更清晰。

如果您需要更口语化或更正式的风格,我可以为您进一步调整内容。