全部產品
Search
文件中心

Elastic Compute Service:使用抓包工具進行網路資料包抓取

更新時間:Jul 04, 2025

如果原始伺服器在訪問目標伺服器時出現丟包、延時等異常,您可以通過抓包擷取最原始的網路互動資料,以便進一步排查問題。本文將介紹在Linux和Windows環境下使用抓包工具進行抓包的具體方法。

抓包流程介紹

在網路異常情況下,抓取資料包是定位問題的重要手段之一。抓包操作通常包括以下流程步驟。

上述流程中涉及的關鍵要點說明如下。

序號

流程名稱

說明

1

明確問題現象

明確問題現象時,可以使用ping,traceroute等工具來初步分析判斷是否存在如下現象。

  • 是否存在丟包現象。

  • 網路延遲是否過高。

  • 是否特定服務或連接埠無法訪問。

2

選擇合適的抓包工具

根據您的需求、硬體以及軟體環境,選擇合適的抓包工具。

  • Linux執行個體:可以使用tcpdump工具。該工具是一個命令列工具,支援豐富的參數以滿足抓包需求。

  • Windows執行個體:可以使用Wireshark工具。該工具是一款功能強大且具備圖形化介面的網路資料包捕獲工具。

3

安裝並配置抓包工具

在執行抓包操作之前,建議您結合自己的實際抓包需求,為抓包工具配置過濾條件,以提高抓包效率。

4

執行抓包操作

執行抓包操作前,您需要明確如下資訊。

  • 網路介面。

  • 目標連接埠。

  • 網路通訊協定類型。

5

分析抓包資料

對抓包資料進行分析,以下為一些常見的分析方向。

  • 檢查TCP握手過程。

  • 尋找重傳資料包。

  • 分析回應時間。

  • 排查錯誤碼。

6

解決問題並驗證

在對抓包資料進行分析後,如果無法準確定位問題,您可以結合其他工具或方法以進一步排查。

  • 藉助ping、traceroute等命令查看網路連通性、丟包及延遲情況。

  • 檢查路由表配置或者相關網路裝置日誌,以進一步分析問題。

Linux執行個體中使用tcpdump工具

在Linux執行個體中,您可以使用tcpdump工具進行資料包捕獲與分析。大多數Linux發行版已預裝該工具。如果未安裝,您可以通過軟體包管理工具(如apt或yum)安裝該工具。具體操作,請參見使用包管理工具管理軟體

使用說明

有關tcpdump命令格式說明如下。

tcpdump [ -AbdDefhHIJKlLnNOpqStuUvxX# ] [ -B buffer_size ]
               [ -c count ] [ --count ] [ -C file_size ]
               [ -E spi@ipaddr algo:secret,...  ]
               [ -F file ] [ -G rotate_seconds ] [ -i interface ]
               [ --immediate-mode ] [ -j tstamp_type ] [ -m module ]
               [ -M secret ] [ --number ] [ --print ] [ -Q in|out|inout ]
               [ -r file ] [ -s snaplen ] [ -T type ] [ --version ]
               [ -V file ] [ -w file ] [ -W filecount ] [ -y datalinktype ]
               [ -z postrotate-command ] [ -Z user ]
               [ --time-stamp-precision=tstamp_precision ]
               [ --micro ] [ --nano ]
               [ expression ]

上述命令中,常用的參數用法及說明如下表所示。

參數

用法及說明

-s

用於設定資料包抓取長度。如果-s為0,則表示自動選擇合適的長度來抓取資料包。

-w

用於將抓包結果匯出到檔案,而不是在控制台進行分析和列印輸出。

-i

用於指定需要監聽的介面(網卡)。

-vvv

用於輸出詳細的互動資訊。

expression

是一個Regex,用於過濾報文,Regex的使用方式主要包含如下幾種類型:

  • 指定類型:包括host(主機)、net(網路)和port(連接埠)。

  • 指定傳輸方向:包括src(源)、dst(目標)、dst or src(源或目標)和dst and src(源和目標)。

  • 指定協議:包括ICMP、IP、ARP、RARP、TCP和UDP等協議類型。

說明

更多關於tcpdump工具的其他參數及使用說明,請參見tcpdump man page

使用樣本

有關tcpdump命令的常見用法及樣本輸出資訊如下所示。

  • 抓取指定介面及連接埠的資料包。

    執行以下命令,抓取eth0網卡與22連接埠的互動資料,並在控制台輸出互動資訊。

    tcpdump -s 0 -i eth0 port 22

    在抓取過程中,將即時顯示互動資料。使用者可通過按下Ctrl+C鍵停止抓取。停止後,將顯示本次資料抓取的資訊摘要。

    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
    20:24:59.414951 IP 172.xx.xx.226.ssh > 42.xx.xx.107.43414: Flags [P.], seq 442372:442536, ack 53, win 141, length 164
    20:24:59.415002 IP 172.xx.xx.226.ssh > 42.xx.xx.107.43414: Flags [P.], seq 442536:442700, ack 53, win 141, length 164
    20:24:59.415052 IP 172.xx.xx.226.ssh > 42.xx.xx.107.43414: Flags [P.], seq 442700:442864, ack 53, win 141, length 164
    20:24:59.415103 IP 172.xx.xx.226.ssh > 42.xx.xx.107.43414: Flags [P.], seq 442864:443028, ack 53, win 141, length 164
  • 抓取指定介面及連接埠的資料包,並輸出詳細互動資訊。

    執行以下命令,抓取eth1網卡與22連接埠的互動資料,並在控制台輸出詳細互動資訊。

    tcpdump -s 0 -i eth1 -vvv port 22

    在抓取過程中,將即時顯示互動資料。使用者可通過按下Ctrl+C鍵停止抓取。停止後,將顯示本次資料抓取的資訊摘要。

    tcpdump: listening on eth1, link-type EN10MB (Ethernet), snapshot length 262144 bytes
    15:45:54.817920 IP (tos 0x10, ttl 64, id 61958, offset 0, flags [DF], proto TCP (6), length 172)
        iZr1ulp9t4u4a8Z.ssh > 123.xxx.xxx.74.2057: Flags [P.], cksum 0x80cd (incorrect -> 0x2ee9), seq 890113592:890113724, ack 2345612678, win 592, length 132
    15:45:54.894215 IP (tos 0x14, ttl 116, id 16850, offset 0, flags [DF], proto TCP (6), length 40)
        123.139.88.74.2057 > iZr1ulp9t4u4a8Z.ssh: Flags [.], cksum 0x1e6a (correct), seq 1, ack 132, win 1021, length 0
    15:45:54.913403 IP (tos 0x10, ttl 64, id 61959, offset 0, flags [DF], proto TCP (6), length 172)
        iZr1ulp9t4u4a8Z.ssh > 123.xxx.xxx.74.2057: Flags [P.], cksum 0x80cd (incorrect -> 0x1105), seq 132:264, ack 1, win 592, length 132
    15:45:54.988025 IP (tos 0x10, ttl 64, id 61960, offset 0, flags [DF], proto TCP (6), length 236)
        iZr1ulp9t4u4a8Z.ssh > 123.xxx.xxx.74.2057: Flags [P.], cksum 0x810d (incorrect -> 0x98d1), seq 264:460, ack 1, win 592, length 196
  • 抓取指定介面及IP地址的特定協議資料包。

    執行以下命令,抓取eth0網卡與指定IP地址的ping互動資料,並在控制台輸出詳細互動資訊。

    tcpdump -s 0 -i eth0 -vvv dst 123.xxx.xxx.74 and icmp

    在抓取過程中,將即時顯示互動資料。使用者可通過按下Ctrl+C鍵停止抓取。停止後,將顯示本次資料抓取的資訊摘要。

    tcpdump: listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
    15:43:29.116058 IP (tos 0x14, ttl 64, id 26185, offset 0, flags [none], proto ICMP (1), length 60)
        iZr1ulp9t4u4a8Z > 123.xxx.xxx.74: ICMP echo reply, id 2048, seq 65, length 40
    15:43:30.129600 IP (tos 0x14, ttl 64, id 27043, offset 0, flags [none], proto ICMP (1), length 60)
        iZr1ulp9t4u4a8Z > 123.xxx.xxx.74: ICMP echo reply, id 2048, seq 66, length 40
    15:43:31.141576 IP (tos 0x14, ttl 64, id 27201, offset 0, flags [none], proto ICMP (1), length 60)
        iZr1ulp9t4u4a8Z > 123.xxx.xxx.74: ICMP echo reply, id 2048, seq 67, length 40
    15:43:32.153912 IP (tos 0x14, ttl 64, id 27802, offset 0, flags [none], proto ICMP (1), length 60)
        iZr1ulp9t4u4a8Z > 123.xxx.xxx.74: ICMP echo reply, id 2048, seq 68, length 40
  • 抓取資料包並儲存至指定檔案。

    運行如下命令,抓取系統內所有介面資料並儲存至指定檔案。

    tcpdump -i any -s 0 -w test.cap

    回顯資訊樣本如下,表明進行中資料包抓取。

    tcpdump: data link type LINUX_SLL2
    tcpdump: listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes

    如需停止抓取,請按下Ctrl+C鍵。停止後,將顯示本次資料抓取的資訊摘要。

    ^C97 packets captured
    127 packets received by filter
    0 packets dropped by kernel
  • 查看產生的抓包資料檔案的內容。

    執行以下命令,查看tcpdump產生的抓包資料檔案的內容。

    tcpdump -r test.cap
    說明

    您也可以選擇使用Wireshark工具查看tcpdump產生的抓包檔案。具體操作,請參見通過Wireshark查看抓包檔案

Windows執行個體中使用Wireshark工具

本文將以在Windows執行個體中運用Wireshark工具進行資料包捕獲與分析為例,為您介紹如何進行網路資料包抓取。

使用說明

  1. 安裝並開啟Wireshark工具。

    訪問Wireshark官方網站,擷取安裝包並完成Wireshark工具的安裝。

  2. 選擇捕獲 > 選項

  3. Wireshark 捕獲選項頁面,根據介面名稱或對應的IP地址選擇需要進行抓包的網卡,然後單擊開始

    image

  4. 抓取足量資料包後,選擇捕獲 > 停止

  5. 選擇檔案 > 儲存,將抓包結果儲存到指定檔案。

  6. (可選)如需通過Wireshark查看抓包檔案,請在Wireshark主介面的功能表列中單擊檔案 > 開啟,並選擇相應的抓包檔案進行查看。

說明

更多有關Wireshark工具的使用和資料分析方法,請參見Wireshark官方網站

相關文檔