Linux 作為網路伺服器,尤其是擔任路由器或閘道器時,數據封包的擷取與分析是不可或缺的環節。本文將深入介紹 Linux 系統中強大的網路數據擷取分析工具——Tcpdump,並透過實際範例說明其核心用法。
Tcpdump 能完整截獲網路傳輸中的封包標頭,支援針對網路層、協定、主機、網段或連接埠進行精準過濾,並提供 and、or、not 等邏輯運算子,協助使用者剔除無關資訊,專注於目標流量。
使用 -b 參數可指定資料鏈路層協定,如 ip、arp、rarp、ipx 等。例如:tcpdump -b arp 僅顯示 ARP 位址解析協定資訊。
透過 -i 參數可鎖定特定網路介面。若伺服器作為路由器擁有多張網卡,此選項極為實用。例如:tcpdump -i eth0 僅監聽 eth0 介面的封包。
src、dst、port、host、net、ether、gateway 等關鍵字可組合使用,精確界定封包源頭與去向。範例:
tcpdump src host 192.168.0.1 and dst net 192.168.0.0/24:過濾來源 IP 為 192.168.0.1 且目的網段為 192.168.0.0 的封包。tcpdump ether src 00:50:04:BA:9B:依實體位址 (MAC) 過濾來源主機。tcpdump src host 192.168.0.1 and dst port not telnet:排除目的連接埠為 Telnet 的封包。ip、icmp、arp、rarp、tcp、udp 等協定關鍵字需置於第一參數位置。例如:tcpdump ip src ... 僅擷取 IP 封包;tcpdump udp and src host 192.168.0.1 則只顯示該主機的 UDP 封包。
Tcpdump 提供豐富參數控制輸出行為:
-l:啟用行緩衝,方便重導向至檔案 (如 tcpdump -l > tcpcap.txt)。-n:禁用 IP 反解析為主機名,直接顯示數值 IP,加快顯示速度。-nn:進一步禁用連接埠號碼轉服務名稱 (如顯示 23 而非 telnet)。-N:不列印預設網域名稱。-O:關閉封包匹配程式碼優化 (除錯時使用)。-t / -tt:控制時間戳記格式 (不顯示 / 原始未格式化)。-v:詳細模式,顯示 TTL、服務類型等額外欄位。掌握上述參數組合,即可高效完成網路故障診斷、安全稽核與效能分析等任務。建議搭配 man tcpdump 深入探索更多進階功能。
Linux Mint、Ubuntu、Red Hat 三大發行版優劣深度對比
Linux 遠程連線與埠口偵測:telnet 實戰指南與 SSH/HTTP 服務識別技巧
Linux 文件操作核心命令實戰手冊:locate、grep、tar、find、scp 參數詳解與組合技巧
Windows/Linux 雙系統 Grub 引導安裝全攻略:保護 MBR、Chainloading 與 menu.lst 完整設定
Linux 下 SQL*Plus 歷史命令無法使用方向鍵的解決方案
Nginx 自啟動腳本報錯「env: /etc/init.d/nginx: No such file or directory」解決方案