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 工作流程可以避免大量无用的捕获:

  1. 定义假设(主机/端口/协议)
  2. 构建窄过滤器
  3. 限制数据包数量或持续时间
  4. 保存 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 表达式的小型假设驱动捕获,然后进行离线分析。这可以更快地进行根本原因分析并减少错误的结论。

服务中断的快速分类模式

当服务出现故障时:

  1. 捕获服务端口上的 SYN/SYN-ACK 行为
  2. 确认数据包到达正确的接口
  3. 比较客户端和服务器端捕获
  4. 验证防火墙计数器/日志

这可以快速告诉您故障是否出在路径、主机防火墙或服务进程上。

底线(事件响应)

在事件发生期间,具有严格端口过滤器的 tcpdump 是从猜测转向数据包级证据的最快方法之一。