2020-04-22 14:49:42
来源:MOUU网络
“运维实战家”专栏,从技术到实践,和您聊聊运维的那些事儿
前言
你是否也遇到过这样的情况?在发生故障时要进行设备抓包,于是开始查询对应设备手册寻找抓包方法,等你千辛万苦找到后故障已经消失错过了最佳抓包时间,于是你发誓要记下所有设备的抓包方法,但又因为运维的设备型号太多并且每种型号的抓包方式不同而放弃。其实虽然MOUU不同类型设备的抓包方法不同,但一些设备底层设计的抓包方式是相同的,比如数据中心交换机和出口网关EG的抓包方法看起来不同但实际上都是通过PCAP功能进行抓包的。本文中作者为大家汇总了MOUU常见设备的报文捕获方法及技巧,你只需学会常用的几种抓包实现方式并了解不同设备通过哪种方式实现,就能触类旁通,玩转MOUU设备报文捕获。
交换机设备抓包
园区网交换机
园区网交换机是通过端口镜像功能实现报文捕获的,端口镜像是通过在设备上将一个或多个源端口的数据流量复制到一个或多个指定端口上,以便对被监控流量进行故障定位、流量分析、流量备份等。常用的端口镜像有两种,本地端口镜像(以下简称“SPAN”)和远程端口镜像(以下简称“RSPAN”)。
SPAN是本地端口镜像用于在单台设备进行一对一端口镜像或多对一端口镜像,将一个或多个端口的流量复制到另外一个端口上,并且还可以在此基础上添加ACL匹配数据流达到更精细化的基于流的端口镜像,此外还可以通过交换机的WEB页面配置SPAN。
控制面抓包可以抓取控制面或者某个物理接口下匹配7元组信息(源MAC、目的MAC、二层协议类型、源IP、目的IP、三层协议类型、TCP/UDP端口信息)的报文。
转发面抓包可以抓取匹配ACL规则的报文。
抓取携带VLAN TAG的报文
在排查一些交换机问题时,需要抓取带VLAN TAG的报文。大部分Linux终端或苹果Mac终端无需做任何设置默认可以抓取到携带VLAN TAG的报文。Windows终端的大部分网卡驱动默认会在接收数据包的时候过滤VLAN TAG,使得用Wireshark等软件抓到的数据包中不含VLAN TAG。可以通过修改Windows终端的注册表让驱动保留VLAN TAG,就能抓到带VLAN TAG的报文了。
出口设备抓包
出口网关
出口网关(以下简称“EG”)是通过PCAP功能实现抓包,可以在命令行下或者WEB页面下进行报文捕获。EG命令行下配置PCAP参考上节数据中心交换机PCAP控制面抓包配置此处不在赘述。在EG的WEB页面下进行报文捕获是比较常用的方法,操作方法如下。
(1)在EG的WEB页面点击“高级-抓包工具”打开“抓包诊断工具”(老版本EG点击“高级-一键收集-抓包诊断工具”)
防火墙
防火墙是通过Sniffer功能实现抓包,可以在命令下或者WEB页面下进行报文捕获。
命令行下通过Sniffer抓取的报文会直接打印出来,将打印出来的报文保存为文本文件,然后通过“Perl解释器”可将文本格式报文转换为我们常用的Wireshark格式报文,具体转换方法可在MOUU官网下载防火墙产品一本通查看。
(1)在防火墙的WEB界面点击“网络设置-网络”打开“数据包捕获”
路由器
在路由器上进行报文捕获分为两种情况,捕获路由器二层口报文和捕获路由器三层口报文。
路由器的二层接口支持端口镜像功能,直接使用端口镜像功能进行报文捕获即可。
目前并不是所有路由器的三层口都支持端口镜像功能。如果你的路由器三层口支持端口镜像直接使用端口镜像进行报文捕获即可;如果你的路由器的三层口不支持端口镜像但你的路由器上有二层口,可以将三层口串接到路由器自身的二层口上,在二层口上进行端口镜像;如果你的路由器的三层口不支持端口镜像并且你的路由器上也没有二层口,可以将三层口串接一台支持端口镜像的交换机,在交换机上配置端口镜像进行报文捕获。
无线设备抓包
无线控制器
捕获流经无线控制器(以下简称“AC”)的报文有两种方法,PCAP和端口镜像。
第一种方法是使用PCAP功能在AC的WEB页面上进行抓包。点击“诊断-抓包诊断”进入报文抓包工具,抓包步骤参考上小节EG的WEB页面抓包步骤此处不在赘述。需要注意的是AC的每次抓取报文大小与EG有所不同,AC默认抓包达到2MB或抓包个数为1024个报文或抓包时长10分钟,任意一个条件达到则自动停止抓包。目前最新版本的AC已支持WEB页面上抓包,如果你使用的AC版本不支持WEB页面上抓包可升级软件版本或使用第二种方法端口镜像功能进行报文捕获。
无线接入点
如果想要捕获流经无线接入点(以下简称“AP”)的报文,可通过在AP的上联POE交换机上配置端口镜像进行报文捕获。
抓取空口报文
作者经常被问题一个问题,为什么在终端上直接抓无线网卡抓包,抓到的数据帧头部是以太网,而不是802.11呢?这是因为终端已经进行了无线帧的转化,如果想捕获802.11的数据帧那么就需要进行空口抓包。
大部分Linux终端或苹果Mac终端可通过电脑自带的无线网卡来抓取无线空口报文,将Linux终端或苹果Mac终端的无线网卡配置成监听模式,然后直接使用Wireshark抓包即可。但对于Windows终端而言,Windows大部分的无线网卡驱动不允许你将无线网卡切换到监听模式,一般可以通过以下方法在Windows下抓取无线空口报文:
(1)Wireshark+Airpcap抓包工具
如果想在Windows下使用Wireshark抓取空口报文,要使用Airpcap抓包工具,Airpcap是被设计用来突破Windows强加给无线数据包分析的限制的,但价格比较昂贵。
(2)Omnipeek+Omnipeek支持的无线网卡+Omnipeek无线网卡驱动
使用Omnipeek进行无线空口抓包是目前最常用的方法,需要注意的是Omnipeek只支持部分无线网卡捕获无线空口报文,支持的无线网卡型号可在Omnipeek官网上查询,同时还需要安装特殊的无线网卡驱动才可以捕获到无线空口报文。
认证设备抓包
MCP
MCP可以通过Linux服务器上的Tcpdump工具进行抓包,可以在命令行下和WEB页面下进行报文捕获。如果说Wireshark是世界上最流行的图形化数据包分析工具,那么Tcpdump是世界上最流行的命令行数据包分析工具。通过SSH登录到MCP的Linux服务器上使用Tcpdump命令进行抓包,使用Tcpdump抓包后可以直接在命令行下进行分析或者将报文导出使用Wireshark进行分析,下表为大家整理了常用的Tcpdump命令参数。
SMP/SAM+
在排查认证问题时,通常需要在终端故障时在SMP/SAM+的Windows服务器上安装Wireshark进行抓包分析Radius或者LDAP等报文的交互情况。但在终端故障的出现时间不固定的情况下,很难把控抓包开始时间,如果一直开启抓包很有可能在你去关闭抓包时故障时的报文已经被覆盖掉。
在SMP/SAM+的Windows服务器上使用Wireshark进行报文捕获时,推荐将Wireshark设置成分片抓包的方式进行抓包,在捕获选项页面中选择输出选项,作者的习惯是每捕获100MB保存一个报文,一共保存100个报文,循环覆盖保存,这样设置后最多占用硬盘10G的存储空间,不必担心报文过多将硬盘占满,读者可根据自身的实际情况设置。这样设置后开启抓包,故障再出现时就不用担心抓不到故障报文了。
ESS
ESS的报文捕获方式和MCP相似也是通过Linux服务器上的Tcpdump工具进行报文捕获的此处不在赘述。