09-Packet Capture配置
本章節下載: 09-Packet Capture配置 (289.96 KB)
目 錄
Packet Capture是一種報文捕獲及分析特性,該特性能夠捕獲設備接口的入方向報文並對報文進行解析處理,便於用戶分析接口接收到的報文;還可以將報文數據存儲為pcap格式的文件,方便用戶後續查看。
目前支持兩種報文捕獲類型:本地報文捕獲和遠程報文捕獲。
本地報文捕獲功能可以將捕獲的報文自動上傳到FTP服務器、存儲在設備存儲介質中或者在登錄設備的終端上顯示報文信息,用戶可以選擇其中一種類型來進行報文捕獲。
遠程報文捕獲是指設備開啟遠程報文捕獲服務功能後,用戶必須通過PC上的第三方報文捕獲軟件Wireshark客戶端與捕獲報文的設備建立連接,遠端報文捕獲設備將報文數據發送給Wireshark,供Wireshark顯示。
Packet Capture可以使用過濾表達式指定過濾規則,對需要捕獲、顯示的報文進行過濾,僅捕獲、顯示用戶關心的報文。
過濾規則由關鍵字和操作符組合而成:
· 關鍵字又分為:
¡ 常量關鍵字:該類關鍵字為固定的字符串。使用時,用戶需完整輸入該關鍵字。
¡ 變量關鍵字:該類關鍵字形式固定,但內容可變。用戶可自定義該關鍵字的取值。
· 操作符分為邏輯操作符、運算操作符和比較操作符。
關於捕獲過濾規則的詳細介紹請參見網頁:http://wiki.wireshark.org/CaptureFilters。
關於顯示過濾規則的詳細介紹請參見網頁:http://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字節的報文生效。
配置接口本地報文捕獲後,AC直接將接口捕獲的報文保存到本地或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 ] ] }
本命令在後台執行。配置本命令後,用戶可以繼續輸入命令來配置設備。
配置AP Radio本地報文捕獲後,AC直接將射頻接口捕獲的報文保存到FTP服務器。通過使用第三方軟件Wireshark連接到FTP服務器,可以對保存的報文文件進行解析。
請在用戶視圖執行以下命令,配置AP Radio遠程報文捕獲。
packet-capture local ap ap-name radio radio-id [ monitor-mode channel channel-number ] [ capture-filter capt-expression | limit-frame-size bytes | autostop filesize kilobytes | autostop duration seconds ] * write url url [ username username [ password { cipher | simple } string ] ]
本命令在後台執行。配置本命令後,用戶可以繼續輸入命令來配置設備。
配置接口遠程報文捕獲後,AC將捕獲的報文發送給Wireshark顯示。使用該功能前,需要將Wireshark連接到AC,Wireshark的配置請參見Wireshark的相關資料。
請在用戶視圖執行以下命令,配置接口遠程報文捕獲。
packet-capture remote interface interface-type interface-number [ port port ]
配置AP Radio遠程報文捕獲後,AP直接將捕獲的報文發送給Wireshark顯示。使用該功能前,需要將Wireshark連接到AP,Wireshark的配置請參見Wireshark的相關資料。
請在用戶視圖執行以下命令,配置AP Radio遠程報文捕獲。
packet-capture remote ap ap-name radio radio-id [ port port ]
在配置報文捕獲時,用戶可通過參數來實現自動停止報文捕獲。在報文捕獲過程中,使用本功能可手工停止報文捕獲。
請在用戶視圖執行以下命令,停止本地或遠程報文捕獲。
packet-capture stop
在完成上述配置後,在任意視圖下執行display命令可以顯示配置後的報文捕獲狀態信息。
表1-10 Packet Capture顯示和維護
操作 |
命令 |
顯示本地或遠程報文捕獲狀態 |
display packet-capture status |
· 在AP的Radio 1上開啟本地報文捕獲功能,要求捕獲1KB的協議類型為TCP,且報文的源IP地址為192.168.20.173的報文。
· Switch作為FTP服務器,保存AP上送的報文。
圖1-1 本地報文捕獲組網圖
(1) 配置Switch
# 在Switch上添加一個FTP用戶abc,並設置其認證密碼為123456TESTplat&!,訪問時使用的用戶角色為network-admin,授權訪問目錄為Cfa0的根目錄,可以使用的服務類型為FTP。
<Switch> system-view
[Switch] local-user abc class manage
[Switch-luser-abc] password simple 123456TESTplat&!
[Switch-luser-abc] authorization-attribute user-role network-admin work-directory cfa0:/
[Switch-luser-abc] service-type ftp
[Switch-luser-abc] quit
# 啟動Switch的FTP服務功能。
[Switch] ftp server enable
[Switch] quit
(2) 配置AC
# 在AC上開啟AP的Radio 1上的本地報文捕獲功能,指定過濾字符串為"src 192.168.20.173 and tcp",將捕獲的報文上送到IP地址為10.1.1.1的FTP服務器上,保存文件名為abc.pcap,FTP用戶名為abc,密碼為123456TESTplat&!,當捕獲的報文文件大小達到1KB,退出捕獲過程。
<AC> packet-capture local ap ap1 radio 1 autostop filesize 1 capture-filter "src 192.168.20.173 and tcp" write url ftp://10.1.1.1/abc.pcap username abc password simple 123456TESTplat&!
通過display packet-capture status命令可以查看當前報文捕獲的狀態,在PC上使用wireshark軟件與FTP服務器建立連接,可以解析報文文件。
在AP的Radio 1上開啟遠程報文捕獲功能,將捕獲的報文上送到Wireshark軟件上解析。
圖1-2 遠程報文捕獲組網圖
(1) 配置AP
# 開啟AP設備的Radio 1射頻上的遠程報文捕獲功能,指定RPCAP服務端口號為2014。
<AC> packet-capture remote ap ap1 radio 1 port 2014
(2) 配置PC
a. 在PC上打開Wireshark軟件,選擇“Capture > Options”。
b. 選擇“Interface > Remote”。
c. 輸入AP的IP地址10.1.1.1(該地址必須和Wireshark路由可達)和綁定的RPCAP服務端口號2014。
d. 點擊<OK>按鈕,再點擊<Start>按鈕啟動捕獲。此時在報文捕獲窗口可看到捕獲到的報文。
不同款型規格的資料略有差異, 詳細信息請向具體銷售和400谘詢。H3C保留在沒有任何通知或提示的情況下對資料內容進行修改的權利!