异步书屋郭志敏的程序员书屋

熟练使用Wireshark排除网络故障的方法

2019-04-24  本文已影响12人  b241fd26e57f

1 概述

本章会讨论如何娴熟地将Wireshark作为网络排障工具来使用,先讲如何配置用户界面,再谈如何配置全局和协议参数,接下来将讨论Wireshark文件夹、配置文件、文件夹和插件。

本章还会讲解Wireshark的配色规则及配置方法,同时会介绍新添加进Wireshark版本2的智能滚动条功能,该功能对识别流量模式和协议的运作方式非常有帮助。

最后,会以对Wireshark模板(profile)及其使用方法的介绍来结束本章。所谓模板,是指为了加快排障时间,降低排障难度,事先在Wireshark中针对不同的网络环境、网络故障或网络协议,分别定义并保存的用户界面、协议参数、显示/抓包过滤器以及配色规则。本章会细述Wireshark模板,本书还会提供一些对读者有帮助的模板。

2 配置用户界面及全局、协议参数

通过Edit菜单中的Preferences菜单项以及Preferences窗口中的Protocol配置选项,不但能控制Wireshark软件的显示界面,而且还能改变该软件对常规协议数据包的抓取和呈现方式。本节将介绍如何在Preferences窗口的Protocol配置界面中配置最常见的协议。

2.1 准备工作

点击Edit菜单中的Preferences菜单项,Preferences窗口会立刻弹出,如图2.1所示。

..\18-1175(1-10章节)\0201.tif{70%}

图2.1

由图2.1可知,在Preferences窗口中,只要选择了窗口左边的配置选项,窗口的右边便会出现相应的配置参数。

2.2 配置方法

本节会介绍如何配置Preferences窗口中的Appearance(外观)配置选项,以及如何针对最常用的协议,配置Preferences窗口中的Protocol选项。Preferences窗口所含其余配置选项的配置方法请见本书后面的相关章节。

注意

由于本书旨在向读者传授Wireshark的使用诀窍,以及如何娴熟地将其作为排障工具来使用,因此不可能细述Wireshark的所有功能。Wireshark的简单功能请参阅其官网的用户手册,作者会重点讲解可以提高用户使用娴熟度的重要和特殊的功能。

先把目光放在Preferences窗口所含配置选项的设置上,看看这些配置选项能否对用户有所帮助。

1.常规的外观设置

图2.2所示为Wireshark Preferences窗口的Appearance(外观)配置选项,可以对该选项的内容进行配置,来提高使用体验。

..\18-1175(1-10章节)\0202.tif{75%}

图2.2

Preferences窗口的Appearance配置选项可供配置的内容有:

2.抓包主窗口的布局设置

在Preferences窗口的Appearance(外观)配置选项中,有一个Layout子配置选项,用来设置数据包列表(Packet List)、数据包结构(Packet Details)和数据包内容(Packet Bytes)区域在Wireshark抓包主窗口里的呈现方式,如图2.3所示。

..\18-1175(1-10章节)\0203.tif{75%}

图2.3

在图2.3所示的Preferences窗口中,可通过选择区域(Pane)的排列样式,来设置上述3个区域在Wireshark抓包主窗口中的呈现方式。

3.调整及添加数据包属性列

在Preferences窗口的Appearance(外观)配置选项中,有一个Columns子配置选项,用来添加或删除抓包主窗口的数据包列表区域里的数据包属性列(栏)。在默认情况下,出现在抓包主窗口的数据包列表区域里的数据包属性列有No.(编号)、Time(抓取时间)、Source(源地址)、Destination(目的地址)、Protocol(协议类型)、Length(长度)以及Info(信息),如图2.4所示。

要给数据包列表区域添加一个新列,可通过以下两个途径。

..\18-1175(1-10章节)\0204.tif{75%}

图2.4

注意

还有一种添加新的数据包属性列的办法,那就是在抓包主窗口的数据包结构区域里选择数据包的某个字段,单击鼠标右键,在弹出的菜单中点击Apply as Column菜单项。这么一点,那个字段就会成为数据包列表区域里新的数据包属性列。

在分析网络故障时,酌情以定制方式添加数据包属性列,可加快定位故障的原因。与此有关的内容本书后文再叙。

4.设置字体和配色

在Preferences窗口的Appearance(外观)配置选项中,有一个Font and Colors子配置选项,用来更改字体大小、形状及颜色。可按图2.5所示来修改抓包主窗口的字体。

..\18-1175(1-10章节)\0205.tif{80%}

图2.5

注意

若不知如何将抓包主窗口的字体恢复为默认设置,请按图2.5所示将Font选为Consolas,将Size选为11.0,将Font style选为Normal。

5.抓包设置

可通过Preferences窗口中的Capture设置选项,将主机或笔记本电脑的常用网卡设置为Wireshark默认抓包网卡。

在图2.6中,作者将自己笔记本电脑上名为Wireless Network Connection 2的无线网卡设置为Wireshark默认抓包网卡。Capture设置选项的其余配置参数保持原样。

..\18-1175(1-10章节)\0206.tif{70%}

图2.6

6.配置显示过滤表达式首选项

可通过Preferences窗口中的Filter Expressions设置选项,来定义出现在抓包主窗口的显示过滤器工具条右边的显示过滤器表达式。

要定义这样的显示过滤器表达式,请按以下步骤行事。

1.在Preferences窗口中点击Filter Expressions设置选项,如图2.7所示。

..\18-1175(1-10章节)\0207.tif{75%}

图2.7

2.点击“+”号按钮,先在Filter Expression一栏里输入显示过滤器表达式,再在Button Label一栏里为它起个名字,最后点击OK按钮。

3.点击OK按钮之后,之前输入的显示过滤器表达式将会以按钮的形式,出现在显示过滤器工具条的右侧。

4.由图2.8可知,图2.7中定义的那两个名为TCP-Z-WIN和TCP-RETR的滤器表达式以按钮的形式,出现在了抓包主窗口的显示过滤器工具条的右侧。

..\18-1175(1-10章节)\0208.tif{45%}

图2.8

注意

如本章最后一节所述,在Wireshark中,可为每个模板分别配置不同的显示过滤器首选项。这样一来,就可以配置出各种模板,分别用来排除TCP、IP电话(IPT)等各种故障,或分别用来诊断各种网络协议故障。

如第4章所述,在Filter Expressions设置选项中,应按照Wireshark显示过滤器的格式来配置显示过滤表达式。

7.调整名称解析

Wireshark支持以下3个层级的名称解析。

:Wireshark可把数据包的MAC地址的前半部分解析并显示为网卡芯片制造商的名称或ID。比方说,可把一个MAC地址的前3个字节14:da:e9解析并显示为AsusTeckC(ASUSTeK Computer Inc,华硕计算机公司)。

:Wireshark可把数据包的IP地址解析并显示为DNS名称。比方说,可把157.166.226.46这一IP地址,解析并显示为CNN网站的Edition页面。

:Wireshark可把TCP/UDP端口号解析并显示为应用程序(服务)名称。比方说,可把TCP 80端口解析并显示为HTTP,把UDP 53端口解析并显示为DNS。

图2.9所示为在Preferences窗口中点击过左侧的Name Resolution配置选项之后,在窗口右侧出现的配置内容。

..\18-1175(1-10章节)\0209.tif{65%}

图2.9

在图2.9所示的Preferences窗口中,可从上到下配置下述内容。

注意

对一个TCP/UDP数据包的源、目端口号而言,只有把目的端口号转换为应用程序名称才有意义。源端口号一般都是随机生成(高于1024),将其转换为应用程序名称没有任何意义。

8.调整Protocol配置选项里的IPv4配置参数

借助于Preferences窗口中的Protocols配置选项,可调整Wireshark对相关协议流量的抓取和呈现方式。点击配置选项Protocols左边的箭头,会出现多种协议配置子选项。图2.10所示为选择IPv4或IPv6协议配置子选项时,出现在Preferences窗口右侧的配置参数。

..\18-1175(1-10章节)\0210.tif{70%}

图2.10

下面是对IPv4配置子选项名下的某些配置参数的解释。

:制定IPv4协议标准之初,为了能在IPv4网络中保证服务质量,在IPv4包头中设立了一个叫做服务类型(ToS)的字段。后来,IETF又制定了一套IPv4服务质量的新标准(区分服务,DiffServ),打的也是IPv4包头中原ToS字段的主意,只是对其中各个位的置位方式有了新的定义。若未勾选该复选框,Wireshark便会按老的IPv4服务质量标准,来解析所抓IPv4数据包包头中的ToS字段。

: GeoIP是一个数据库,Wireshark可根据该数据库里的内容来呈现(其所抓数据包IP包头中源和目的)IP地址所归属的地理位置。若勾选该复选框,Wireshark便会针对所抓IPv4和IPv6数据包的IP地址来呈现其所归属的地理位置。该子选项功能涉及名称解析,一旦开启,会拖慢Wireshark实时抓包速率。第10章会介绍如何配置GeoIP。

9.调整Protocol配置选项里的TCP和UDP配置参数

UDP是一种非常简单的协议,与Wireshark版本1相比,Wireshark版本2的Protocols配置选项里的UDP协议配置子选项几乎没有变化,可供配置的参数也不多,一般无需调整;而TCP协议则很是复杂,Protocols配置选项里TCP协议配置子选项中可供配置的参数较多,如图2.11所示。

..\18-1175(1-10章节)\0211.tif{70%}

图2.11

调整TCP协议配置子选项名下的参数,其实也就是调整Wireshark对TCP报文段的解析方式,以下是对其中某些参数的解释。

:Wireshark有时会抓到超多校验和错误(checksum errors)的数据包,这要归因于在抓包主机的网卡上开启的TCP Checksum offloading(TCP校验和下放)功能。该功能一开,便会导致Wireshark将抓到的本机生成的数据包显示为checksum errors(具体原因后文再表)。因此,若Wireshark抓到了超多校验和错误的数据包,则有必要先取消勾选该复选框,再去验证是否真的存在校验和问题。

:要让Wireshark对TCP数据包做详尽分析,就必须勾选该复选框,因为TCP sequence numbers(TCP序列号)是TCP最重要的特性之一。

:主机在建立TCP连接时,会随机选择一个序列号,并将其值存入相互交换的第一个报文段的TCP头部的序列号字段。只要勾选了该复选框,Wireshark就会把一股TCP数据流中第一个TCP报文段的(TCP头部的)序列号字段值显示为0,后续TCP报文段的序列号字段值将依次递增,从而隐藏了真实的序列号字段值。在大多数情况下,都应该让Wireshark显示TCP报文段的相对序列号(relative number),以方便网管人员查看。

:该复选框一经勾选,在抓包主窗口的数据包结构区域中,只要是TCP数据包,就会在transmission control protocol树下多出一个timestamps结构,点击其前面的箭头,就能看到Wireshark记录的该TCP数据包在本股TCP数据流中的时间烙印(timestamp)。让Wireshark显示每个TCP数据包的时间烙印,将有助于排查时间敏感型TCP应用程序的故障。

2.2.3 幕后原理

通过修改Preferences窗口中Protocols选项下相关协议子配置选项的参数,便能开启或禁用Wireshark软件对相应协议流量的某些分析功能。需要注意的是,为了保证Wireshark软件的运行速度,应尽量禁用不必要的分析功能

对TOS和DiffServ的介绍,详见本书第10章。

SNMP是一种用来行使网络管理功能的协议。SNMP对象标识符(OID)的作用是标识对象及其在管理信息库(MIB)中的位置。所谓对象,既可以是一个计数器,对流入接口的数据包进行计数;也可以是路由器接口的IP地址、设备的名称及安装位置、CPU负载或任何其他可呈现或可测量的实体。

SNMP MIB按树形结构来构建,如图2.12所示。顶层MIB对象ID分属不同的标准组织。每家网络厂商都会为自己的网络产品定义私有分枝(包括受管理的对象)。

..\18-1175(1-10章节)\0212.tif{65%}

图2.12

Wireshark在解析SNMP MIB时,不但会显示对象ID,还会显示其名称,这有助于排障人员识别受监控的数据。

3 抓包文件的导入和导出

将抓包文件分享给其他的运维团队或设备厂商的支持人员,以期查明网络故障的根本原因是常有的事儿。这样的抓包文件会包含很多数据包,而排障人员感兴趣的或许仅限于若干数据流或部分数据包。Wireshark不但支持将所抓数据有选择地导出至新的文件,甚至还能修改其格式,以便传输。本节将探讨Wireshark支持的各种抓包文件导入和导出功能。

3.1 准备工作

运行Wireshark软件,点击主工具条上的Capture按钮,开始抓包(或打开一个已保存的抓包文件)。

3.2 配置方法

在Wireshark主抓包窗口内,既可以把抓来的所有数据都保存进一个文件,也能以不同的格式或文件类型导出自己所需要的数据。

现在来讲解如何执行这些操作。

1.完整或部分导出抓包文件

既能把抓来的所有数据包(或抓包文件中的所有数据包)完整保存进一个文件,也能以各种文件格式和文件类型导出特定的数据。

要把抓来的所有数据包完整保存进一个文件(或将现有的抓包文件完整另存为一个新的文件),请按以下步骤行事。

若要保存抓包文件(或已抓数据包)中的部分数据(比如,经过显示过滤器过滤的数据),请按以下步骤行事。

..\18-1175(1-10章节)\0213.tif{60%}

图2.13

可在Export Specified Packets窗口的左下角区域,点击相应的单选按钮,来选择文件的导出方式。

要以压缩的形式保存数据包,请先勾选Export Specified Packets窗口中的Compress with gzip复选框,再点Save按钮。

上述“存盘”操作既可以基于整个抓包文件中的所有数据包来进行,也可以基于抓包文件中经过显示过滤器过滤的数据包来进行。

2.保存数据的格式选取

Wireshark支持将抓到的数据以不同的格式来保存,以便用各种其他工具做进一步的分析。

通过点击File菜单的Export Packet Dissections菜单项里的各个子菜单项,可将抓包文件保存为以下格式。

:保存为纯文本ASCII文件格式。

:保存为PostScript文件格式。

:保存为逗号分割文件格式。这种格式的文件可为电子表格程序(比如,Microsoft Excel)所用。

:把数据包的内容以C语言数组的格式保存,便于导入C程序。

:存为PSML文件格式。PSML是一种基于XML的文件格式,只能保存数据包的汇总信息。

:存为PDML文件格式。PSML也是一种基于XML的文件格式,但能保存数据包的详细信息。

3.数据打印

要想打印数据,请点击File菜单里的Print菜单项,Print窗口会立刻弹出,如图2.14所示。

可在Print窗口中做如下选择。

..\18-1175(1-10章节)\0214.tif{60%}

图2.14

3.3 幕后原理

Wireshark支持以文本格式或PostScript格式来打印数据(以后一种格式打印时,打印机应为PostScript感知的打印机),同时支持将数据打印至一个文件。选妥了Print窗口中的各个选项,点击Print按钮之后,会弹出操作系统自带的常规“打印”窗口,可在其中选择具体的打印机来打印。

3.4 拾遗补缺

要查看Wireshark软件存储各种文件的系统文件夹,请点击Help菜单中的About Wireshark菜单项,在弹出的About Wireshark窗口中选择Folders选项卡,如图2.15所示。在About Wireshark窗口中,可以看到Wireshark软件存储各种文件的实际文件夹,在窗口的最右边,可以看到存储在那些文件夹中的文件类型。

..\18-1175(1-10章节)\0215.tif{75%}

图2.15

点击Location下的链接,会进入存储相应文件的文件夹。

4 调整数据包的配色规则

Wireshark会根据事先定义的配色规则,用不同的颜色来分门别类地显示抓包文件中的数据。合理地定义配色规则,让匹配不同协议的数据包以不同的颜色示人(或让不同状态下的同一种协议的数据包呈现出多种颜色),能在排除网络故障时帮上大忙。

Wireshark支持基于各种过滤条件来配置新的配色规则。这样一来,就能够针对不同的场景定制不同的配色方案,同时还能以不同的模板来保存。也就是说,网管人员可在解决TCP故障时启用配色规则A,在解决SIP和IP语音故障时启用配色规则B。

注意

可通过定义模板(profile)的方式,来保存针对Wireshark软件自身的配置(比如,事先配置的配色规则和显示过滤器等)。要如此行事,请点击Edit菜单下的Configuration Profiles菜单项。

4.1 准备工作

要定义配色规则,请按以下步骤行事。

1.选择View菜单。

2.点击中下部的Coloring Rules菜单项,Coloring Rules-Default窗口会立刻弹出,如图2.16所示。

该窗口显示的是Wireshark默认启用的配色规则,包括TCP数据包、路由协议数据包以及匹配某些协议事件的数据包的配色规则。

..\18-1175(1-10章节)\0216.tif{75%}

图2.16

4.2 操作方法

要调整配色规则,请按以下步骤行事。

..\18-1175(1-10章节)\0217.tif{80%}

图2.17

注意

Coloring Rules窗口中配色规则的排放次序是有讲究的。请务必确保配色规则的排放次序与配色方案的执行次序相匹配。比方说,作用于应用层协议数据包的配色规则应置于作用于TCP/UDP数据包的配色规则之前,只有如此,方能避免Wireshark为了应用层协议数据包而干扰TCP/UDP数据包的颜色。

4.3 幕后原理

Wireshark软件中的许多操作都与显示过滤器紧密关联,定义配色规则也是如此,因为受配色规则约束的数据包都是经过预定义的显示过滤器过滤的数据包。

4.4 进阶阅读

5 配置时间参数

对时间显示格式的调整,会在Wireshark抓包主窗口数据包列表区域的Time列(默认为左边第2列)的内容里反映出来。在某些情况下,有必要让Wireshark以多种时间格式来显示数据包。比方说,在观察隶属同一连接的所有TCP数据包时,每个数据包的发送间隔时间是应该关注的重点;当所要观察的数据包抓取自多个来源时,则最应关注每个数据包的确切抓取时间。

5.1 准备工作

要配置Wireshark抓包主窗口数据包列表区域中数据包的时间显示格式,请进入View菜单,选择Time Display Format菜单项,其右边会出现如图2.18所示的子菜单。

..\18-1175(1-10章节)\0218.tif{65%}

图2.18

5.2 配置方法

图2.18所示的Time Display Format菜单项的上半部分子菜单包含以下子菜单项。

:当通过Wireshark抓包来帮助排除网络故障,且故障发生的时间也是定位故障的重要依据时(比如,已获悉了故障发生的精确时间,且还想知道相同时间网络内发生的其他事件时),就应该根据具体情况,选择该子菜单项。

:Epoch是指通用协调时间(格林威治标准时间的前称)的1970年1月1日早晨0点。这也是UNIX系统问世的大致时间。

:此乃Wireshark默认选项。

:这也是一个常用选项,此菜单项一经点选,数据包列表区域的Time列将显示每个数据包的抓取时间差。当监控时间敏感型数据包(比如,TCP流量、实时视频流量、VoIP语音流量)时,就应该点选该子菜单项,因为此类数据包的发送时间间隔对用户体验有至关重要的影响。

:在应用过显示过滤器,让Wireshark只显示抓包文件中部分数据的情况下(比如,在只显示隶属于某条TCP流的所有数据包的情况下),通常都应该点选该子菜单项。此时,网管人员更关心的应该是隶属于某条TCP数据流的各个数据包之间的抓取时间差。

:提供UTC时间。

Time Display Format菜单项的下半部分子菜单项涉及对时间精度的调整。只有对时间精度要求很高的情况下,才建议更改默认设置。

可使用Ctrl+Alt+任意数字键来调整上述时间格式选项。

5.3 幕后原理

为抓到的数据包留下时间烙印时,Wireshark依据的是操作系统的时间。在默认情况下,生效的是Seconds Since Beginning of Capture子菜单项功能。

6 构建排障使用的配置模板

可定义Wireshark配置模板,来保存针对Wireshark软件自身的各种配置(比如,外观、预定义的配色规则、抓包及显示过滤器等)。要如此行事,请进入Edit菜单,选择Configuration Profile菜单项。

Wireshark配置模板会保存下列信息。

所有配置模板文件都会保存在Wireshark软件Personal Configuration目录的 profiles目录下。

6.1 准备工作

运行Wireshark软件,点击主工具条上的Capture按钮,开始抓包(或打开一个已保存的抓包文件)。

6.2 操作方法

要打开现有的配置模板文件,请执行如下操作。

1.可点击状态栏最后边的Profile区域,选择准备采用的现有配置模板,如图2.19所示。

..\18-1175(1-10章节)\0219.tif{55%}

图2.19

2.还可以进入Edit菜单,选择Configuration Profiles菜单项,在Configuration Profiles窗口中选择准备采用的现有配置模板,如图2.20所示。

..\18-1175(1-10章节)\0220.tif{60%}

图2.20

要创建一个新的配置模板,可执行如下步骤。

1.右键单击状态栏最后边的Profile区域,在弹出的菜单中选择New菜单项,或者在图2.20所示的窗口中点击“+”号按钮。

2.新的配置模板创建之后,在profiles目录下会创建一个新的目录,如图2.21所示。

..\18-1175(1-10章节)\0221.tif{80%}

图2.21

3.由图2.21可知,在新建的配置模板目录下(本例为Wireless模板及Wireless目录),可以看到包含抓包过滤器的cfilter文件、包含配色规则的colorfilters文件、保存HTTP字段配置的custom_http_header_fields文件,以及保存preference菜单项功能配置的preference文件。

6.3 幕后原理

创建新的模板时,Wireshark软件会在profiles目录下新建一个同名目录。此后,在关闭Wireshark或加载另一个配置模板时,一个名为recent的文件会诞生在那个新的模板目录内。该文件包含了常规的Wireshark窗口设置,包括可视工具栏、时间戳显示、字体缩放级别和列宽等配置。若在创建了新的配置模板之后还创建了抓包过滤器、显示过滤器和配色规则,则在那个新的模板目录内还会诞生别的文件(分别为cfilters、dfilters和colorfilters)。

6.4 拾遗补缺

如前所述,保存模板配置参数的文件都位于profiles目录下。那么,自然可以在不同的配置模板之间转移配置参数,比如,在默认的preference文件中,包含了以下与启动窗口中的显示过滤器工具条有关的配置参数。

若另一个配置模板也需要这样的配置参数,则只需将这些参数复制进该配置模板目录下的preference文件。

6.5 进阶阅读

在本书随后的相关章节内,会介绍具体的配置模板。第11章会介绍用于排除TCP性能故障的配置模板,第9章会介绍用于无线LAN分析的配置模板。

<hr />

本文摘自《Wireshark网络分析实战》(第2版)

image

本书扩充了上一版的主题,涵盖如何使用Wireshark监控TCP性能、网络安全、无线LAN以及云和虚拟系统,介绍了在单播/多播网络环境中如何借助Wireshark分析端到端的IPv4/IPv6连通性故障。读者将了解E-mail协议的正常运行机制,学会如何使用Wireshark来完成基本的故障分析和排除工作。利用Wireshark这款利器,读者可以解决企业网络中常用应用程序的故障。读者还将学习如何测量网络参数,如何检查并修复因网络参数引起的性能问题。
读完本书之后,读者将掌握如何分析流量,如何发现各种异常流量,以及如何加固自己的网络。

【京东购买】【样章试读】

上一篇下一篇

猜你喜欢

热点阅读