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