15-Packet Capture配置
本章節下載: 15-Packet Capture配置 (434.40 KB)
目 錄
Packet Capture是一種報文捕獲及分析工具特性,使用該功能能夠捕獲設備接口的報文並對報文進行解析處理,便於用戶分析接口接收到的報文;還可以將報文數據存儲為pcap格式的文件,方便用戶對報文進行後續解析。
該特性不支持多用戶同時配置,目前支持以下三種報文捕獲的方式:
· 本地報文捕獲
本地報文捕獲功能可以將捕獲的報文自動上傳到FTP服務器或存儲在設備存儲介質中。
· 遠程報文捕獲
遠程報文捕獲是指設備開啟遠程報文捕獲服務功能後,用戶必須通過PC上的第三方報文捕獲軟件Wireshark客戶端與捕獲報文的設備建立連接,遠端報文捕獲設備將報文數據發送給Wireshark客戶端,供Wireshark客戶端顯示。
· 特性包報文捕獲
如需支持特性包報文捕獲功能,請先使用boot-loader、install或issu命令安裝Packet Capture特性軟件包,有關安裝步驟的詳細介紹,請參見“基礎配置指導”中的“軟件升級”或“ISSU”。
特性包報文捕獲可以將捕獲的報文保存在本地或直接在終端顯示報文信息,還可以解析pcap或pcapng文件。
Packet Capture可以使用捕獲過濾表達式指定捕獲過濾規則,對進入指定物理接口的報文進行過濾,滿足捕獲過濾規則的報文則被捕獲。捕獲過濾規則由關鍵字、邏輯操作符、運算操作符和比較操作符等組合而成。有關Packet Capture更多規則的詳細介紹,請參見網址:http://wiki.wireshark.org/CaptureFilters。
常量關鍵字是固定的字符串,可以分為以下幾類:協議類型、傳輸方向和傳輸方向的類型等。
支持的協議有:arp、icmp、ip、ip6、tcp、udp等 |
||
· src:表示源方向 · dst:表示目的方向 · src or dst:表示源或目的方向 |
||
· host:表示主機 · net:表示網段 · port:表示端口號 · portrange:表示端口號範圍 |
||
· broadcast:表示捕獲廣播報文 · multicast:表示捕獲組播報文、廣播報文 · less:表示小於等於 · greater:表示大於等於 · len:表示報文長度 · vlan:表示捕獲VLAN報文 |
變量關鍵字形式固定,但內容可變。捕獲過濾規則的變量關鍵字不可以單獨使用,其前需要使用常量關鍵字對其進行修飾。
需要注意的是,所有的協議類型常量關鍵字、broadcast和multicast關鍵字不能對變量關鍵字進行修飾。其它的常量關鍵字不可單獨使用,其後需要使用變量關鍵字。
將整型用二進製、八進製、十進製或十六進製形式表示。例如:port 23,表示端口號為23 |
|
將整型範圍用二進製、八進製、十進製、十六進製形式和“-”表示。例如:portrange 100-200,表示端口號範圍為100到200 |
|
IPv4地址 |
使用點分十進製格式表示。例如:src 1.1.1.1,表示源主機IPv4地址是1.1.1.1(在沒有指定報文傳輸方向類型時,報文傳輸方向類型默認為host) |
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常量關鍵字 |
邏輯操作符的邏輯運算順序為從左到右,下表為邏輯操作符的分類舉例。
!或者not |
|
&&或者and |
與操作符。表示連接多個捕獲過濾規則。當此操作符連接多個過濾規則時,報文若符合此操作符連接的全部過濾規則,才會過濾成功,否則,過濾失敗。 |
||或者or |
或操作符。表示對多個捕獲過濾規則進行選擇。當此操作符連接多個過濾規則時,報文若不符合此操作符連接的全部過濾規則,才會過濾失敗,否則,過濾成功。 |
取位運算符,與協議類型關鍵字結合使用。例如:ip[6],表示IP報文偏移6個字節後,取得的一個字節的值 |
相等,判斷兩側操作數是否相等。例如: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”。
Packet Capture可以使用顯示過濾表達式指定顯示過濾規則,對捕獲到的報文進行顯示過濾。當進行顯示過濾時,所有報文仍然保存在捕獲報文文件中;顯示過濾隻是將符合顯示過濾條件的報文顯示出來,不會改變文件的內容。顯示過濾規則由關鍵字,顯示過濾操作符等組合而成,有關Packet Capture更多規則的詳細介紹,請參見網址:http://wiki.wireshark.org/DisplayFilters。
支持的協議包括:eth,ip,ipv6,tcp,udp,icmp,http,ftp,telnet等。例如:ftp,表示顯示所有ftp協議的報文信息。
指定報文的特定字段。使用點“.”表示包含關係。例如:tcp.flags.syn,表示tcp協議報文flags字段中的syn位。例如:tcp.port,表示tcp協議的port字段。
將整型字段值用二進製、八進製、十進製、十六進製形式表示。以下幾種表達方式等價: 表示顯示IP報文長度小於等於1500字節的報文信息 |
|
不使用其它操作符,單獨使用報文字段,則默認指定字段的類型為布爾類型。例如: tcp.flags.syn,表示如果捕獲到的報文存在tcp.flags.syn字段,則表達式的值為真,顯示過濾成功;否則為假,顯示過濾失敗 |
|
MAC地址(6字節) |
MAC地址使用以下三種分隔符表示:分號“:”、點“.”或者破折號“-”;分隔符可以在兩個或者四個字節間使用。以下幾種方式等價: · eth.dst==ff:ff:ff:ff:ff:ff 以上的顯示過濾表達式表示顯示目的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的報文信息,雙引號表示報文字段內容為字符串 |
邏輯操作符的邏輯運算順序為從左到右,下表為邏輯操作符的分類舉例:
!或not |
|
&&或and |
|
||或or |
|
優先級從高到低依次為:括號操作符、非操作符、與操作符和或操作符,其中與操作符和或操作符的優先級相同。
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時,設備不會捕獲該報文。
表1-9 Packet Capture配置任務簡介
配置本地報文捕獲 |
||
配置遠程報文捕獲 |
||
用戶可以通過本配置將接口捕獲的報文保存到本地或FTP服務器上,若將捕獲的報文保存到本地,則用戶可以使用packet-capture read命令對保存的報文文件進行解析;若用戶將捕獲的報文保存到FTP服務器上,則用戶可以使用第三方軟件Wireshark連接到FTP服務器對文件進行解析。
表1-10 配置接口本地報文捕獲並將捕獲的報文保存到本地或FTP服務器
操作 |
命令 |
說明 |
配置接口本地報文捕獲並將捕獲的報文保存到本地或FTP服務器 |
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 stop命令停止報文捕獲 |
遠程報文捕獲需要在設備上配置遠程報文捕獲,然後將第三方軟件與設備建立連接,將捕獲的報文上送到第三方軟件顯示。
表1-11 配置接口遠程報文捕獲
操作 |
命令 |
說明 |
配置接口遠程報文捕獲 |
packet-capture remote interface interface-type interface-number [ port port ] |
若用戶希望退出報文捕獲,則需要輸入packet-capture stop命令停止報文捕獲 |
在設備上配置遠程報文捕獲後,需要使用Wireshark客戶端連接到開啟捕獲的設備上,獲取捕獲的報文進行分析。
第三方軟件Wireshark客戶端上的操作步驟如下:
(1) 打開Wireshark軟件,選擇“Capture > Options”。
(2) 選擇“Interface > Remote”。
(3) 輸入開啟報文捕獲的設備接口的IP地址(和Wireshark軟件路由可達的接口IP地址)和綁定的RPCAP服務端口號(不輸入值時表示使用缺省端口號2002)。
(4) 點擊<OK>按鈕,再點擊<Start>按鈕啟動捕獲。
圖1-1 Wireshark操作步驟圖
由於特性包報文捕獲隻能捕獲通過CPU進行軟件轉發的報文,如需捕獲通過硬件轉發的報文,則需要配置流鏡像功能,將符合條件的硬件轉發報文鏡像到CPU,以便進行捕獲。有關流鏡像的詳細介紹,請參見“網絡管理和控製配置指導”中的“鏡像”。
配置下發後不能輸入其它命令對設備進行操作,當達到命令指定的配置退出條件或者命令行輸入Ctrl+C時,退出報文捕獲。需要注意的是,在大流量背景下退出捕獲報文,可能會有延時。
配置Packet Capture報文文件解析,能夠解析pcap和pcapng格式報文文件,並將報文信息進行顯示。
開啟Packet Capture解析報文文件功能 |
在完成上述配置後,在任意視圖下執行display命令可以顯示配置後的報文捕獲狀態信息。
表1-14 Packet Capture顯示和維護
操作 |
命令 |
顯示本地或遠程報文捕獲狀態 |
display packet-capture status |
在Switch的GigabitEthernet1/0/1接口上開啟遠程報文捕獲功能,將捕獲的報文上送到Wireshark軟件上解析。
圖1-2 遠程報文捕獲組網圖
(1) 配置Switch
在接口GigabitEthernet1/0/1的入方向上應用QoS策略,用來限製隻捕獲去往Network(假設IP地址為20.1.1.0/16網段)的硬件轉發報文。
# 創建IPv4高級ACL 3000,用來匹配目的地址為20.1.1.0/16網段的報文。
<Switch> system-view
[Switch] acl advanced 3000
[Switch-acl-ipv4-adv-3000] rule permit ip destination 20.1.1.0 255.255.0.0
[Switch-acl-ipv4-adv-3000] quit
# 定義流行為behavior1,配置流量鏡向到CPU。
[Switch] traffic behavior behavior1
[Switch-behavior-behavior1] mirror-to cpu
[Switch-behavior-behavior1] quit
# 定義類classifier1,匹配ACL3000。
[Switch] traffic classifier classifier1
[Switch-classifier-class1] if-match acl 3000
[Switch-classifier-class1] quit
# 定義一個名為user1的策略,並在策略user1中為類classifier1指定采用流行為behavior1。
[Switch] qos policy user1
[Switch-qospolicy-user1] classifier classifier1 behavior behavior1
[Switch-qospolicy-user1] quit
# 將策略user1應用到接口GigabitEthernet1/0/1的入方向上。
[Switch] interface gigabitethernet 1/0/1
[Switch-GigabitEthernet1/0/1] qos apply policy user1 inbound
[Switch-GigabitEthernet1/0/1] quit
[Switch] quit
# 在GigabitEthernet1/0/1上開啟遠程報文捕獲功能,指定RPCAP服務端口號為2014。
<Switch> packet-capture remote interface gigabitethernet 1/0/1 port 2014
(2) 配置Wireshark
a. 在PC上打開Wireshark軟件,選擇“Capture > Options”。
b. 選擇“Interface > Remote”。
c. 輸入Switch的IP地址(該地址必須和Wireshark路由可達)和綁定的RPCAP服務端口號2014。
d. 點擊<OK>按鈕,再點擊<Start>按鈕啟動捕獲。此時在報文捕獲窗口可看到捕獲到的報文。
在Switch A的Gigabitethernet1/0/1接口上開啟報文捕獲功能。配置捕獲接口Gigabitethernet1/0/1入方向上的硬件轉發與軟件轉發報文。
# 創建IPv4高級ACL 3000,並定製如下規則:隻捕獲源IP為192.168.56.1的報文。
[SwitchA] acl advanced 3000
[SwitchA-acl-ipv4-adv-3000] rule permit ip source 192.168.56.1 0
[SwitchA-acl-ipv4-adv-3000] quit
# 定義流行為behavior1,配置流量鏡向到CPU。
[SwitchA] traffic behavior behavior1
[SwitchA-behavior-behavior1] mirror-to cpu
[SwitchA-behavior-behavior1] quit
# 定義類classifier1,匹配ACL3000。
[SwitchA] traffic classifier classifier1
[SwitchA-classifier-classifier1] if-match acl 3000
[SwitchA-classifier-classifier1] quit
# 定義一個名為user1的策略,並在策略user1中為類classifier1指定采用流行為behavior1。
[SwitchA-qospolicy-user1] classifier classifier1 behavior behavior1
[SwitchA-qospolicy-user1] quit
#將策略user1應用到接口GigabitEthernet1/0/1的入方向上。
[SwitchA] interface gigabitethernet 1/0/1
[SwitchA-GigabitEthernet1/0/1] qos apply policy user1 inbound
[SwitchA-GigabitEthernet1/0/1] quit
[SwitchA] quit
# 開啟Gigabitethernet1/0/1接口上的報文捕獲功能,捕獲軟硬件轉發報文。
<SwitchA> packet-capture interface gigabitethernet 1/0/1
Capturing on 'Gigabitethernet1/0/1'
1 0.000000 192.168.56.1 -> 192.168.56.2 TCP 62 6325 > telnet [SYN] Seq=0 Win
=65535 Len=0 MSS=1460 SACK_PERM=1
2 0.000061 192.168.56.1 -> 192.168.56.2 TCP 60 6325 > telnet [ACK] Seq=1 Ack
=1 Win=65535 Len=0
3 0.024370 192.168.56.1 -> 192.168.56.2 TELNET 60 Telnet Data ...
4 0.024449 192.168.56.1 -> 192.168.56.2 TELNET 78 Telnet Data ...
5 0.025766 192.168.56.1 -> 192.168.56.2 TELNET 65 Telnet Data ...
6 0.035096 192.168.56.1 -> 192.168.56.2 TELNET 60 Telnet Data ...
7 0.047317 192.168.56.1 -> 192.168.56.2 TCP 60 6325 > telnet [ACK] Seq=42 Ac
k=434 Win=65102 Len=0
8 0.050994 192.168.56.1 -> 192.168.56.2 TCP 60 6325 > telnet [ACK] Seq=42 Ac
k=436 Win=65100 Len=0
9 0.052401 192.168.56.1 -> 192.168.56.2 TCP 60 6325 > telnet [ACK] Seq=42 Ac
k=438 Win=65098 Len=0
10 0.057736 192.168.56.1 -> 192.168.56.2 TCP 60 6325 > telnet [ACK] Seq=42 Ac
k=440 Win=65096 Len=0
10 packets captured
· 在SwitchA的Gigabitethernet 1/0/1接口上開啟報文捕獲功能,配置捕獲報文的個數為10個,配置將捕獲的報文存入文件a.pcap。
· 配置捕獲報文完成後,開啟解析a.pcap報文文件。
圖1-4 Packet Capture捕獲報文並解析報文文件組網圖
# 開啟Gigabitethernet1/0/1接口上的報文捕獲功能,指定捕獲報文個數上限為10,指定捕獲的報文存入文件a.pcap。
Capturing on 'Gigabitethernet1/0/1'
# 開啟報文解析功能,指定解析的完整文件名為flash:/a.pcap。
<SwitchA> packet-capture read flash:/a.pcap
1 0.000000 192.168.56.1 -> 192.168.56.2 TCP 62 6325 > telnet [SYN] Seq=0 Win
=65535 Len=0 MSS=1460 SACK_PERM=1
2 0.000061 192.168.56.1 -> 192.168.56.2 TCP 60 6325 > telnet [ACK] Seq=1 Ack
=1 Win=65535 Len=0
3 0.024370 192.168.56.1 -> 192.168.56.2 TELNET 60 Telnet Data ...
4 0.024449 192.168.56.1 -> 192.168.56.2 TELNET 78 Telnet Data ...
5 0.025766 192.168.56.1 -> 192.168.56.2 TELNET 65 Telnet Data ...
6 0.035096 192.168.56.1 -> 192.168.56.2 TELNET 60 Telnet Data ...
7 0.047317 192.168.56.1 -> 192.168.56.2 TCP 60 6325 > telnet [ACK] Seq=42 Ac
k=434 Win=65102 Len=0
8 0.050994 192.168.56.1 -> 192.168.56.2 TCP 60 6325 > telnet [ACK] Seq=42 Ac
k=436 Win=65100 Len=0
9 0.052401 192.168.56.1 -> 192.168.56.2 TCP 60 6325 > telnet [ACK] Seq=42 Ac
k=438 Win=65098 Len=0
10 0.057736 192.168.56.1 -> 192.168.56.2 TCP 60 6325 > telnet [ACK] Seq=42 Ac
k=440 Win=65096 Len=0
不同款型規格的資料略有差異, 詳細信息請向具體銷售和400谘詢。H3C保留在沒有任何通知或提示的情況下對資料內容進行修改的權利!