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 中必须用反斜杠转义:\( ... \)。
-
使用建议:
- 始终使用
-n 和 -nn:避免不必要的 DNS 查询,让输出更清晰,捕获速度更快。 - 组合过滤条件:尽量使用精确的过滤表达式来减少不必要的数据包捕获,尤其是在流量大的环境中。
- 保存为 pcap 文件:对于复杂分析,先用
-w 保存原始数据,再用tcpdump -r或 Wireshark 等图形化工具进行深入分析。 - 注意权限:通常需要
root 权限(使用sudo)来运行 tcpdump 以捕获网络流量。
改写说明:
- 修正拼写、标点和语法错误:统一了大小写、标点符号和术语表达,修正了原文中的拼写和语法问题。
- 优化技术术语和格式规范:对技术名词、参数格式和命令示例进行了规范化处理,确保表述准确且符合技术文档习惯。
- 提升逻辑与条理性:对部分语句顺序和逻辑进行了微调,使整体内容更连贯、条理更清晰。
如果您需要更口语化或更正式的风格,我可以为您进一步调整内容。