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 是從猜測轉向資料包級證據的最快方法之一。