tcpdump 是一个功能强大的命令行数据包分析器,可让您捕获和检查网络流量。其最有用的功能之一是能够按端口过滤流量,帮助您专注于特定的服务或应用程序。
基本端口过滤语法
要捕获特定端口上的流量,请使用 port 关键字:
命令
sudo tcpdump port 80
这会捕获端口 80 (HTTP) 上的所有流量(传入和传出)。
源端口和目的端口
您可以指定是按源端口还是目标端口进行过滤:
命令
## Capture traffic FROM port 443
sudo tcpdump src port 443
## Capture traffic TO port 443
sudo tcpdump dst port 443
多个端口
要监控多个端口,请使用 or 或 portrange:
命令
## Capture HTTP and HTTPS traffic
sudo tcpdump port 80 or port 443
## Capture a range of ports
sudo tcpdump portrange 8000-8080
将端口过滤器与其他标准相结合
使用逻辑运算符将端口过滤器与主机或协议过滤器组合起来:
命令
## Capture SSH traffic from specific host
sudo tcpdump port 22 and host 192.168.1.100
## Capture DNS traffic (UDP port 53)
sudo tcpdump udp and port 53
## Exclude specific port
sudo tcpdump not port 22
有用的选项
使用以下选项增强 tcpdump 输出:
命令
## Save capture to file
sudo tcpdump port 80 -w capture.pcap
## Show packet contents in ASCII and hex
sudo tcpdump port 443 -X
## Limit number of packets
sudo tcpdump port 25 -c 100
## Don't resolve hostnames (faster)
sudo tcpdump port 80 -n
常见用例
- 网络流量:
sudo tcpdump port 80 or port 443 - 电子邮件:
sudo tcpdump port 25 or port 587 or port 993 - 数据库:
sudo tcpdump port 3306(MySQL) 或port 5432(PostgreSQL) - SSH:
sudo tcpdump port 22
使用 tcpdump 进行端口过滤对于网络故障排除、安全分析和监控特定应用程序而不捕获不必要的流量至关重要。
捕捉可扩展的策略
一个好的 tcpdump 工作流程可以避免大量无用的捕获:
- 定义假设(主机/端口/协议)
- 构建窄过滤器
- 限制数据包数量或持续时间
- 保存 pcap 以在 Wireshark 中进行更深入的分析
示例:
命令
sudo tcpdump -n -i eth0 host 10.0.0.15 and port 443 -c 500 -w tls-check.pcap
这为您提供了一个集中的数据集,而不是捕获界面上的所有内容。
环形缓冲区捕获长事件
对于间歇性问题,请使用轮换文件:
命令
sudo tcpdump -i eth0 port 443 -C 20 -W 10 -w web-%Y%m%d%H%M%S.pcap
这可以控制存储,同时保留最近的流量窗口。
常见的过滤器陷阱
缺少括号 and / or
过滤器逻辑优先级可能会让您大吃一惊。组团条件明确:
命令
sudo tcpdump '(port 80 or port 443) and host 192.168.1.20'
无需拍摄 -n
反向 DNS 查找会减慢捕获速度并增加噪音。使用 -n 在故障排除会话中,除非需要名称解析。
操作系统网络设置中的
在错误的接口上捕获
先验证接口(ip a / ifconfig) 在假设之前 eth0 已激活。
安全与合规提醒
数据包捕获可能包括凭据、cookie、令牌和个人数据。将 pcap 文件作为敏感工件处理:
- 限制访问
- 静态加密
- 调查后删除
底线(运营)
精确的端口过滤功能非常强大。使用带有清晰 BPF 表达式的小型假设驱动捕获,然后进行离线分析。这可以更快地进行根本原因分析并减少错误的结论。
服务中断的快速分类模式
当服务出现故障时:
- 捕获服务端口上的 SYN/SYN-ACK 行为
- 确认数据包到达正确的接口
- 比较客户端和服务器端捕获
- 验证防火墙计数器/日志
这可以快速告诉您故障是否出在路径、主机防火墙或服务进程上。
底线(事件响应)
在事件发生期间,具有严格端口过滤器的 tcpdump 是从猜测转向数据包级证据的最快方法之一。