24-Packet Capture配置
本章节下载 (243.10 KB)
目 录
Packet Capture是一种报文捕获特性,该特性能够捕获设备接口的入方向报文。目前支持用户根据实际需要选择将捕获到的报文数据发送给远端Wireshark,供Wireshark显示,或者将报文数据存储为pcap格式的文件,方便后续查看等多种处理方式。
目前支持两种报文捕获类型:本地报文捕获和远程报文捕获。
本地报文捕获功能可以将捕获的报文自动上传到FTP服务器或存储在设备存储介质中。
远程报文捕获功能用于将设备上捕获的报文直接发送给远端客户端,客户端上需安装了报文捕获软件(例如Wireshark),由客户端来解析并展示捕获结果。
Packet Capture可以使用过滤表达式指定过滤规则,对需要捕获的报文进行过滤,仅捕获用户关心的报文。
过滤规则由关键字和操作符组合而成:
· 关键字又分为:
¡ 常量关键字:该类关键字为固定的字符串。使用时,用户需完整输入该关键字。
¡ 变量关键字:该类关键字形式固定,但内容可变。用户可自定义该关键字的取值。
· 操作符分为逻辑操作符、运算操作符和比较操作符。
关于捕获过滤规则的详细介绍请参见网页:http://wiki.wireshark.org/CaptureFilters。
表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”。
报文捕获功能可捕获帧长度小于等于9196字节的报文,当收到报文的帧长度大于9196时,设备不会捕获该报文。
请在用户视图执行以下命令,配置本地报文捕获并将捕获的报文保存到本地或FTP服务器。
packet-capture local interface interface-type interface-number [ bidirection | outbound ] [ capture-filter capt-expression | limit-frame-size bytes | autostop filesize kilobytes | autostop duration seconds ] * write { filepath | url url [ username username [ password { cipher | simple } string ] ] }
本命令在后台执行。配置本命令后,用户可以继续输入命令来配置设备。
远程报文捕获功能用于将设备上捕获的报文直接发送给客户端(例如Wireshark),由客户端来解析并展示捕获结果。
远程报文捕获功能的工作流程为:
(1) 在设备上开启远程报文捕获功能后,设备会捕获指定接口的报文,并侦听RPCAP服务端口号。
(2) 请将客户端连接到设备,并在客户端上指定服务器端的IP地址为设备的IP地址以及服务器端的侦听的端口号为本命令配置的port值。客户端会使用该地址和端口号,和设备建立RPCAP连接。
(3) 设备通过RPCAP连接将捕获的报文发送给客户端。
(4) 客户端收到设备发送的报文后,对报文进行解析和展示。
(1) 请在用户视图执行以下命令,配置远程报文捕获。
packet-capture remote interface interface-type interface-number [ bidirection | outbound ] [ port port ]
(2) 将客户端(例如Wireshark)连接到设备,客户端的配置请参见客户端的相关资料。
在配置报文捕获时,用户可通过参数来实现自动停止报文捕获。在报文捕获过程中,使用本功能可手工停止报文捕获。
请在用户视图执行以下命令,停止本地或远程报文捕获。
packet-capture stop
在完成上述配置后,在任意视图下执行display命令可以显示配置后的报文捕获状态信息。
表1-6 Packet Capture显示和维护
操作 |
命令 |
显示本地或远程报文捕获状态 |
display packet-capture status |
在Device的三层接口GigabitEthernet1/2/0/1上开启远程入方向报文捕获功能,将捕获的报文上送到Wireshark软件上解析。
图1-1 远程报文捕获组网图
(1) 配置Device
# 在GigabitEthernet1/2/0/1上开启远程入方向报文捕获功能,指定RPCAP服务端口号为2014。
<Device> packet-capture remote interface gigabitethernet 1/2/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保留在没有任何通知或提示的情况下对资料内容进行修改的权利!