22-Packet Capture配置
本章節下載: 22-Packet Capture配置 (305.00 KB)
目 錄
Packet Capture是一種報文捕獲及分析特性,使用該功能能夠捕獲設備接口的入方向報文並對報文進行解析處理,便於用戶分析接口接收到的報文;還可以將報文數據存儲為pcap格式的文件,方便用戶後續查看。
目前支持兩種報文捕獲類型:本地報文捕獲和遠程報文捕獲。
本地報文捕獲功能可以將捕獲的報文自動上傳到FTP服務器或存儲在設備存儲介質中。
遠程報文捕獲功能用於將設備上捕獲的報文直接發送給遠端客戶端,客戶端上需安裝了報文捕獲軟件(例如Wireshark),由客戶端來解析並展示捕獲結果。
Packet Capture可以使用過濾表達式指定過濾規則,對需要捕獲、顯示的報文進行過濾,僅捕獲、顯示用戶關心的報文。
過濾規則由關鍵字和操作符組合而成:
· 關鍵字又分為:
¡ 常量關鍵字:該類關鍵字為固定的字符串。使用時,用戶需完整輸入該關鍵字。
¡ 變量關鍵字:該類關鍵字形式固定,但內容可變。用戶可自定義該關鍵字的取值。
· 操作符分為邏輯操作符、運算操作符、比較操作符。
關於捕獲過濾規則的詳細介紹請參見網頁:https://wiki.wireshark.org/CaptureFilters。
關於顯示過濾規則的詳細介紹請參見網頁:https://wiki.wireshark.org/DisplayFilters。
表1-1 常量關鍵字
常量關鍵字類型 |
描述 |
關鍵字 |
協議 |
捕獲指定協議的報文 如果沒有指明協議類型,則捕獲Packet Capture支持的所有協議的報文 |
支持的協議有:arp、icmp、ip、ip6、tcp、udp等 |
報文傳輸方向 |
捕獲指定傳輸方向的報文 如果沒有指定本關鍵字,缺省報文傳輸方向為源或目的方向。比如port 23等價於src or dst port 23 |
· src:表示源方向 · dst:表示目的方向 · src or dst:表示源或目的方向 |
報文傳輸方向類型 |
捕獲指定的報文傳輸方向類型的報文 如果沒有指定本類關鍵字,缺省報文傳輸方向類型為主機。比如src 2.2.2.2 等價於src host 2.2.2.2 |
· host:表示主機 · net:表示網段 · port:表示端口號 · portrange:表示端口號範圍 |
特殊關鍵字 |
- |
· broadcast:表示捕獲廣播報文 · multicast:表示捕獲組播報文、廣播報文 · less:表示小於等於 · greater:表示大於等於 · len:表示報文長度 · vlan:表示捕獲VLAN報文 |
捕獲過濾規則的變量關鍵字不可以單獨使用,其前需要使用常量關鍵字對其進行修飾。
協議類型常量關鍵字、broadcast和multicast關鍵字不能對變量關鍵字進行修飾。其它的常量關鍵字不可單獨使用,其後需要使用變量關鍵字。
表1-2 變量關鍵字
變量關鍵字類型 |
舉例 |
整型 |
使用二進製、八進製、十進製或十六進製形式表示。例如:port 23,表示端口號為23 |
整型範圍 |
使用二進製、八進製、十進製、十六進製形式和“-”表示。例如:portrange 100-200,表示端口號範圍為100到200 |
IPv4地址 |
使用點分十進製格式表示。例如:src 1.1.1.1,表示源主機IPv4地址是1.1.1.1 |
IPv6地址 |
使用冒號分十六進製格式表示。例如:dst host 1::1,表示報文的目的主機IPv6地址是1::1 |
IPv4網段 |
使用IPv4地址和掩碼或者IPv4網絡號表示。以下兩種表達式等價: · src 1.1.1,表示源主機的IPv4網段為1.1.1 · src net 1.1.1.0/24,表示源主機的IPv4網段為1.1.1.0/24 |
IPv6網段 |
使用IPv6地址和網絡前綴表示。例如:dst net 1::/64,表示目的IPv6網段為1::/64 需要注意的是,指定IPv6網段變量關鍵字時,必須指定net常量關鍵字 |
邏輯操作符的邏輯運算順序為從左到右,其中非操作符優先級最高,與操作符、或操作符的優先級相同。
表1-3 邏輯操作符
邏輯操作符 |
描述 |
!或者not |
非操作符。表示對捕獲過濾規則取反操作 |
&&或者and |
與操作符。表示連接多個捕獲過濾規則。當此操作符連接多個過濾規則時,報文符合此操作符連接的全部過濾規則,才會過濾成功,否則,過濾失敗 |
||或者or |
或操作符。表示對多個捕獲過濾規則進行選擇,隻要滿足一個過濾規則,則過濾成功,否則,過濾失敗 |
表1-4 運算操作符
運算操作符 |
描述 |
+ |
加法運算符,用來將其兩側的值加到一起 |
- |
減法運算符,用來將它前麵的數值減去它後麵的數值 |
* |
乘法運算符,用來將其兩側的值相乘 |
/ |
除法運算符,用來將其左邊的值除以右邊的值 |
& |
按位與,用來將其兩側的數值逐位進行比較產生一個新值。對於每一位,隻有兩個操作數的對應位都為1時結果才為1 |
| |
按位或,用來將其兩側的操作數逐位進行比較產生一個新值。對於每一位,如果其中任意操作數中對應的位為1,那麼結果位就為1 |
<< |
按位左移,用來將其左側操作數的每位向左移動,移動的位數由其右側操作數指定 |
>> |
按位右移,用來將其左側操作數的每位向右移動,移動的位數由其右側操作數指定 |
[ ] |
取位運算符,與協議類型關鍵字結合使用。例如:ip[6],表示IP報文偏移6個字節後,取得的一個字節的值 |
表1-5 比較操作符分類
比較操作符 |
描述 |
= |
相等,判斷兩側操作數是否相等。例如:ip[6]=0x1c,表示捕獲IPv4報文數據域偏移6字節,取得的一個字節值為0x1c的報文 |
!= |
不等,判斷兩側操作數是否不等。例如:len!=60,表示捕獲報文長度不等於60字節的報文 |
> |
大於,判斷左側操作數大於右側操作數。例如:len>100,表示捕獲報文長度大於100字節的報文 |
< |
小於,判斷左側操作數小於右側操作數。例如:len<100,表示捕獲報文長度小於100字節的報文 |
>= |
大於等於,判斷左側操作數大於等於右側操作數;與常量關鍵字greater等價。例如:len>=100,表示捕獲報文長度大於等於100字節的報文 |
<= |
小於等於,判斷左側操作數小於等於右側操作數;與常量關鍵字less等價。例如:len<=100,表示捕獲報文長度小於等於100字節的報文 |
由關鍵字和邏輯運算符組合的捕獲過濾表達式。例如:not port 23 and not port 22,表示捕獲端口號既不是23,又不是22的報文;port 23 or icmp,表示捕獲端口號是23或ICMP協議的報文。
由邏輯操作符連接的多個變量關鍵字,可以使用同一個常量關鍵字進行修飾(就近原則),例如:src 192.168.56.1 or 192.168.27,表示捕獲的源IPv4地址為192.168.56.1或者源IPv4網段為192.168.27的報文。上述表達式與“src 192.168.56.1 or src 192.168.27”等價。
由關鍵字、運算操作符、比較操作符組合的捕獲過濾表達式。其中,expr是算術表達式;relop為比較操作符。例如:len+100>=200,表示捕獲長度大於等於100字節的報文。
由協議類型關鍵字和運算操作符“[ ]”組合的捕獲過濾表達式。其中,proto表示協議類型,expr為算術表達式,表示偏移量,size為整數,表示字節個數,缺省值為1。proto[expr:size]的返回值為從proto協議報文數據區域起始位置,偏移expr個字節開始,取size個字節的數據。例如:ip[0]&0xf!=5,表示捕獲第一個字節與0x0f按位相與得到的值不是5的IP報文。
expr:size也可以使用表達式的名稱表示。例如:icmptype表示ICMP報文的類型域,則表達式:icmp[icmptype]=0x08,表示捕獲icmp的type字段的值為0x08的報文。
由關鍵字vlan、邏輯操作符等組合的捕獲過濾表達式。其中,vlan_id為整型,表示VLAN編號。例如,vlan 1 and ip,表示捕獲VLAN編號為1的IPv4報文。
需要注意的是:
· 對於帶VLAN tag且接口允許通過的報文,必須使用此類捕獲過濾表達式且關鍵字vlan要在其它捕獲過濾條件之前指定,否則不能正常過濾。例如:vlan 3 and src 192.168.1.10 and dst 192.168.1.1,表示捕獲VLAN 3內、192.168.1.10發往192.168.1.1的報文。
· 對於接口收到的不帶VLAN tag的報文:
¡ 如果設備會在報文頭中添加VLAN tag,則為了捕獲該類報文,必須在捕獲過濾規則中設置過濾條件為“vlan xx”。對於三層報文,xx為報文出接口的缺省VLAN ID;對於二層報文,xx為入接口的缺省VLAN ID。
¡ 如果設備不會在報文頭中添加VLAN tag,則為了捕獲該類報文,不能在捕獲過濾規則中設置過濾條件為“vlan xx”。
當進行顯示過濾時,所有報文仍然保存在捕獲報文文件中;顯示過濾隻是將符合顯示過濾條件的報文顯示出來,不會改變文件的內容。
表1-6 常量關鍵字
常量關鍵字類型 |
描述 |
關鍵字 |
協議 |
顯示指定協議的報文 如果沒有指明協議類型,則顯示捕獲的所有協議的報文 |
支持的協議有:eth、ip、ipv6、tcp、udp、icmp、http、ftp、telnet等 |
報文字段 |
指定報文的特定字段 使用點“.”表示包含關係,格式為:protocol.field[.level1-subfield]…[.leveln-subfield] |
例如: · tcp.flags.syn表示tcp協議報文flags字段中的syn位 · tcp.port表示tcp協議的port字段 |
報文字段的取值為變量關鍵字。報文的各個字段具有不同的類型,如表1-7所示。
字段類型 |
舉例 |
整型 |
將整型字段值用二進製、八進製、十進製、十六進製形式表示。以下幾種表達方式等價: · ip.len le 1500 · ip.len le 02734 · ip.len le 0x436 表示顯示IP報文長度小於等於1500字節的報文信息 |
布爾變量 |
不使用其它操作符,單獨使用報文字段,則默認指定字段的類型為布爾類型。例如: tcp.flags.syn,表示如果捕獲到的報文存在tcp.flags.syn字段,則表達式的值為真,顯示過濾成功;否則為假,顯示過濾失敗 |
MAC地址(6字節) |
MAC地址使用以下三種分隔符表示:分號“:”、點“.”或者破折號“-”;分隔符可以在兩個或者四個字節間使用。以下幾種方式等價: · eth.dst==ff:ff:ff:ff:ff:ff · eth.dst==ff-ff-ff-ff-ff-ff · eth.dst ==ffff.ffff.ffff 以上的顯示過濾表達式表示顯示目的MAC地址為ffff.ffff.ffff的報文信息 |
IPv4地址 |
IPv4地址使用點分十進製格式表示。例如: · ip.addr==192.168.0.1,表示顯示源或者目的IP地址為192.168.0.1的報文信息 · ip.addr==129.111.0.0/16,表示顯示源或者目的IP地址屬於129.111網段的報文信息 |
IPv6地址 |
IPv6地址使用冒號分十六進製格式表示。例如: · ipv6.addr==1::1表示顯示源或者目的IPv6地址為1::1的報文信息 · ipv6.addr==1::/64表示顯示源或者目的IPv6地址屬於1::/64網段的報文信息 |
字符串 |
一些報文字段類型為字符串。例如,http.request version=="HTTP/1.1"表示顯示http報文的request version字段為字符串HTTP/1.1的報文信息,雙引號表示報文字段內容為字符串 |
邏輯操作符的邏輯運算順序為從左到右。優先級從高到低依次為:括號操作符、非操作符、與操作符、或操作符,其中與操作符、或操作符的優先級相同。
表1-8 顯示過濾邏輯操作符
英文 |
描述和舉例 |
!或not |
非操作符。表示對顯示過濾規則取反操作 |
&&或and |
與操作符。表示連接多個顯示過濾規則 |
||或or |
或操作符。表示對多個顯示過濾規則進行選擇 |
[ ] |
括號操作符。與協議名稱組合使用,詳細介紹請參見“1.3.3 4. proto[…]表達式” |
表1-9 顯示過濾比較操作符
分類 |
描述和舉例 |
eq或== |
相等,判斷兩側操作數是否相等。例如:ip.src==10.0.0.5,表示顯示源IP地址為10.0.0.5的報文信息 |
ne或!= |
不等,判斷兩側操作數是否不等。例如:ip.src!=10.0.0.5,表示顯示源IP地址不是10.0.0.5的報文信息 |
gt或> |
大於,判斷左側操作數大於右側操作數。例如:frame.len>100,表示顯示捕獲的幀長度大於100字節的幀信息 |
lt或< |
小於,判斷左側操作數小於右側操作數。例如:frame.len<100,表示顯示捕獲的幀長度小於100字節的幀信息 |
ge 或>= |
大於等於,判斷左側操作數大於等於右側操作數。例如:frame.len ge 0x100,表示顯示捕獲的幀長度大於等於256字節的幀信息 |
le或<= |
小於等於,判斷左側操作數小於等於右側操作數。例如:frame.len le 0x100表示顯示捕獲的幀長度小於等於256字節的幀信息 |
由關鍵字和邏輯運算符組合的顯示過濾表達式。例如:ftp or icmp,表示顯示所有ftp協議和icmp協議報文信息。
由關鍵字和比較運算符組合的顯示過濾表達式。例如:ip.len<=28,表示顯示所有IP報文的長度字段小於等於28字節的IP報文。
隻由報文字段組成的顯示過濾表達式,作用是顯示存在某一具體字段的報文信息。例如:tcp.flags.syn,表示顯示所有存在tcp.flags.syn位的報文。
由協議類型和運算操作符“[ ]”組合的顯示過濾表達式,proto[…]的類型為十六進製整型,其中,proto表示協議類型、字段。括號操作符內容有以下兩種表達方式:
· [n:m],n表示偏移位置,m表示指定的字節數;表示從偏移n個字節位置開始取後麵m個字節數據。例如:eth.src[0:3]==00:00:83,表示源MAC地址的前三個字節分別為0x00、0x00、0x83。
· [n-m],n表示偏移起始位置,m表示偏移結束位置;表示從偏移n個字節位置取到第m個字節位置,共取m-n+1個字節數據。例如:eth.src[1-2]==00:83,表示MAC地址的第二個字節和第三個字節分別為0x00、0x83。
· [n],與[n:1]等價,表示取偏移n個字節位置的一個字節數據。例如:eth.src[2]==83,表示MAC地址的第三個字節為0x83。
二層接口上的大部分流量為硬件轉發報文,對於硬件轉發報文,不管是本地還是遠程報文捕獲,均需要使用QoS策略將硬件報文鏡像到CPU才能捕獲;對於軟件轉發報文,不需要將報文鏡像到CPU,直接開啟報文捕獲功能即可。
報文捕獲功能可捕獲幀長度小於等於9196字節的報文,當收到報文的幀長度大於9196時,設備不會捕獲該報文。
請在用戶視圖執行以下命令,配置將接口捕獲的報文保存到本地或FTP服務器。通過使用第三方軟件Wireshark連接到FTP服務器,可以對保存的報文文件進行解析。
· 請在用戶視圖執行以下命令,本命令用於捕獲以太網接口和VLAN接口的報文。
packet-capture local interface interface-type interface-number [ capture-filter capt-expression | limit-frame-size bytes | autostop filesize kilobytes | autostop duration seconds ] * write { filepath | url url [ username username [ password { cipher | simple } string ] ] }
本命令在後台執行。配置本命令後,用戶可以繼續輸入命令來配置設備。
· 請在用戶視圖執行以下命令,本命令用於捕獲射頻接口的報文
packet-capture local ap ap-name radio radio-id [ capture-filter capt-expression | limit-frame-size bytes | autostop filesize kilobytes | autostop duration seconds ] * write url url [ username username [ password { cipher | simple } string ] ]
關於packet-capture local ap命令的支持情況,具體請參見命令參考。
本命令在後台執行。配置本命令後,用戶可以繼續輸入命令來配置設備。
遠程報文捕獲功能用於將設備上捕獲的報文直接發送給客戶端(例如Wireshark),由客戶端來解析並展示捕獲結果。
遠程報文捕獲功能的工作流程為:
(1) 在設備上開啟遠程報文捕獲功能後,設備會捕獲指定接口的報文,並偵聽RPCAP服務端口號。
(2) 請將客戶端連接到設備,並在客戶端上指定服務器端的IP地址為設備的IP地址以及服務器端的偵聽的端口號為本命令配置的port值。客戶端會使用該地址和端口號,和設備建立RPCAP連接。
(3) 設備通過RPCAP連接將捕獲的報文發送給客戶端。
(4) 客戶端收到設備發送的報文後,對報文進行解析和展示。
(1) 請在用戶視圖執行以下命令,配置接口遠程報文捕獲。
packet-capture remote interface interface-type interface-number [ port port ]
(2) 將客戶端(例如Wireshark)連接到設備,客戶端的配置請參見客戶端的相關資料。
AP Radio遠程報文捕獲功能用於將AP Radio接口上捕獲的報文直接發送給客戶端(例如Wireshark),由客戶端來解析並展示捕獲結果。
AP Radio遠程報文捕獲功能的工作流程為:
(1) 在設備上開啟AP Radio接口的遠程報文捕獲功能後,設備會捕獲指定AP Radio接口的報文,並偵聽RPCAP服務端口號。
(2) 請將客戶端連接到AP,並在客戶端上指定服務器端的IP地址為AP的IP地址以及服務器端的偵聽的端口號為本命令配置的port值。客戶端會使用該地址和端口號,和AP建立RPCAP連接。
(3) AP通過RPCAP連接將捕獲的報文發送給客戶端。
(4) 客戶端收到AP發送的報文後,對報文進行解析和展示。
(1) 請在用戶視圖執行以下命令,配置AP Radio遠程報文捕獲。關於packet-capture remote ap命令的支持情況,具體請參見命令參考。
packet-capture remote ap ap-name radio radio-id [ port port ]
(2) 將客戶端(例如Wireshark)連接到設備,客戶端的配置請參見客戶端的相關資料。
在配置報文捕獲時,用戶可通過參數來實現自動停止報文捕獲。在報文捕獲過程中,使用本功能可手工停止報文捕獲。
請在用戶視圖執行以下命令,停止本地或遠程報文捕獲。
packet-capture stop
在完成上述配置後,在任意視圖下執行display命令可以顯示配置後的報文捕獲狀態信息。
表1-10 Packet Capture顯示和維護
操作 |
命令 |
顯示本地或遠程報文捕獲狀態 |
display packet-capture status |
在Device的三層GigabitEthernet1/0/1接口上開啟遠程報文捕獲功能,將捕獲的報文上送到Wireshark軟件上解析。
圖1-1 遠程報文捕獲組網圖
(1) 配置Device
# 在GigabitEthernet1/0/1上開啟遠程報文捕獲功能,指定RPCAP服務端口號為2014。
<Device> packet-capture remote interface gigabitethernet 1/0/1 port 2014
(2) 配置Wireshark
a. 在PC上打開Wireshark軟件,選擇“Capture > Options”。
b. 選擇“Interface > Remote”。
c. 輸入Device的IP地址(該地址必須和Wireshark路由可達)和綁定的RPCAP服務端口號2014。
d. 點擊<OK>按鈕,再點擊<Start>按鈕啟動捕獲。此時在報文捕獲窗口可看到捕獲到的報文。
不同版本的Wireshark軟件,其界麵支持的選項以及選項放置的位置,可能存在差異,請以Wireshark軟件實際情況為準。
不同款型規格的資料略有差異, 詳細信息請向具體銷售和400谘詢。H3C保留在沒有任何通知或提示的情況下對資料內容進行修改的權利!