(企业诊断)借助诊断网
络故障
借助 sniffer诊断 Linux网络故障
嗅探器(sniffer)在网络安全领域是一把双刃剑,一方面常被黑客作为网络攻击工具,从
而造成密码被盗、敏感数据被窃等安全事件;另一方面又在协助网络管理员监测网络状
况、诊断网络故障、排除网络隐患等方面有着不可替代的作用。嗅探器是企业必不可少
的网络管理工具。本文以 Linux平台下三个常用的网络嗅探器 Tcpdump、Ethereal和
EtherApe为例,介绍如何借助 sniffer来诊断网络故障,从而保障网络高效安全地运行。
简介
嗅探器(sniffer)又称为包嗅探器,是用来截获计算机网络通信数据的软件或硬件。与电
话电路不同,计算机网络是共享通信通道的,从而意味着每台计算机都可能接收到发送
给其它计算机的信息,捕获在网络中传输的数据信息通常被称为监听(sniffing)。嗅探
器常常作为一种收集网络中特定数据的有效方法,是利用计算机的网络接口截获目的地
为其它计算机数据报文的一种工具。
嗅探器工作在网络环境中的底层,可以拦截所有正在网络上传送的数据,从而成为网络
安全的一个巨大威胁。通过对网络进行嗅探,一些恶意用户能够很容易地窃取到绝密文
档和敏感数据,因此嗅探器经常被黑客当作网络攻击的一种基本手段。
任何工具都有弊有利,嗅探器既可以作为黑客获得非法数据的手段,但同时对网络管理
员来讲又是致关重要的。通过嗅探器,管理员可以诊断出网络中大量的不可见模糊问题。
这些问题通常会涉及到多台计算机之间的异常通信,而且可能会牵涉到多种通信协议。
借助嗅探器,管理员还可以很方便地确定出哪些通信量属于某个特定的网络协议、占主
要通信量的主机是哪台、各次通讯的目标是哪台主机、报文发送占用多少时间、各主机
间报文传递的间隔时间等。这些信息为管理员判断网络问题及优化网络性能,提供了十
分宝贵的信息。
作为一种发展比较成熟的技术,嗅探器在协助监测网络数据传输、排除网络故障等方面
有着不可替代的作用,倍受网络管理员的青睐。可以通过分析网络流量来确定网络上存
在的各种问题,如瓶颈效应或性能下降;也可以用来判断是否有黑客正在攻击网络系统。
如果怀疑网络正在遭受攻击,通过嗅探器截获的数据包可以确定正在攻击系统的是什么
类型的数据包,以及它们的源头,从而可以及时地做出响应,或者对网络进行相应的调
整,以保证网络运行的效率和安全。
网络管理员在检测网络故障及维护网络正常通信的过程中,经常需要借助嗅探器提供的
某些功能。一般的嗅探器都提供以下一些功能:
1.自动从网络中过滤及转换有用的信息;
2.将截获的数据包转换成易于识别的格式;
3.对网络环境中的通讯失败进行分析;
4.探测网络环境下的通讯瓶颈;
5.检测是否有黑客正在攻击网络系统,以阻止其入侵;
6.记录网络通信过程。
本文介绍如何在 Linux平台下利用嗅探器来截获在网络中传递的数据信息,从而检测出
是否存在网络瓶颈,以及可能存在的网络故障。在 Linux平台下可用的嗅探器非常多,
各自的功能和长处也不尽相同,本文主要以 Tcpdump、Ethereal和 EtherApe三种嗅探器
为例,讲述如何利用各自的优点来对 Linux网络的性能和故障进行系统的分析和检测。
◆Tcpdump
Tcpdump是一个命令行方式的网络流量监测工具。它诞生的时间较早,是许多图形化嗅
探器的雏形。
◆Ethereal
Ethereal是一个图形化的网络流量监测工具,比命令行方式的 Tcpdump友好很多,可以
实时地观看捕获过程。
◆EtherApe
EtherApe也是一个图形化的网络流量监测工具。与 Ethereal不同,EtherApe可以通过
对主机间的连接进行检测,图形化地显示网络活动,因而能更加直观地显示出整个网络
所处的状态。
sniffer工作原理
在基于 TCP/IP协议的局域网中,当数据由应用层自上而下传递时,首先在网络层形成 IP
数据包,然后再向下到达数据链路层,由数据链路层将 IP数据包分割为数据帧,加上以
太网包头后向下发送到物理媒体上。以太网包头中包含着本地主机和目标主机的 MAC地
址,位于链路层的数据帧是依靠 48位的 MAC地址而非 IP地址来寻址的,网络接口卡的
驱动程序不会关心 IP数据包的目的 IP地址。它所需要的仅仅是数据包中的 MAC地址。
当局域网内的主机都通过集线器(HUB)等方式连接时,一般采用的是共享式的连接。这种
共享式的连接有一个很明显的特点:发送数据时物理上采用的是广播方式。当一台主机
向另一台主机发送数据时,共享式的 HUB会将接收到的所有数据向 HUB上的每个端口转
发。也就是说,当主机根据 MAC地址发送数据包时,尽管发送端主机告知目标主机的地
址,但并不意味着一个网络内的其它主机不能监听到发送端和接收端之间传递的数据。
因此从理论上说,当采用共享式连接时,位于同一网段的每台主机都可以截获在网络中
传输的所有数据。
正常情况下,局域网内同一网段的所有网卡虽然都具有访问在物理媒体上传输的所有数
据的能力,但通常一个网卡只响应以下两种数据帧:
◆数据帧的目标 MAC地址与网卡自身的 MAC地址一致;
◆数据帧的目标 MAC地址为广播地址。
只有当接收到上面两种类型的数据帧时,网卡才会通过 CPU产生一个硬件中断,然后再
由操作系统负责处理该中断,对帧中所包含的数据做进一步处理。也就是说,虽然网络
上所有主机都可以“监听”到所有的数据,但对不属于自己的报文不予响应,只是简单
地忽略掉这些数据。
但是,如果网络中的某台主机不愿意忽略掉不属于自己的数据帧,只需将网卡设置为混
杂(Promiscuous)模式,对接收到的每一个帧都产生一个硬件中断,以提醒操作系统处理
经过该网卡的每一个数据包,这样网卡就可以捕获网络上所有的数据了。如果一台主机
的网卡被配置为混杂模式,那么该主机及其相关的软件就构成了一个嗅探器。
嗅探器工作在网络环境中的底层,它会拦截所有正在网络上传送的数据,通过借助相应
的软件进行处理。嗅探器可以实时分析这些数据的内容,进而可以帮助网络管理员分析
整个网络的状态、性能或故障。正因如此,在检测网络故障时,嗅探器对管理员来说是
一种不可或缺的强力工具。
用 Tcpdump过滤数据包
对于网络管理人员来说,使用嗅探器可以随时掌握网络的实际情况,在网络性能急剧下
降的时候,可以通过嗅探器来分析原因,找出造成网络阻塞的根源。Tcpdump就是 Linux
平台下一个以命令行方式运行的网络流量监测工具。它能截获网卡上收到的数据包,并
能够协助网络管理员对其中的内容进行相应的分析。
嗅探器能够截获指定接口或所有接口的数据包,这取决于如何对嗅探器进行配置。缺省
情况下嗅探器一般会显示所有从网络上截获的数据包,但通常会因为数据量过大而使网
络管理员理不清头绪。因此,嗅探器一般都提供有相应的机制来对截获的数据包进行过
滤,从而只显示符合特定要求的数据包。Tcpdump提供了一整套完善的规则来对截获的
数据包进行过滤,由于大多数图形化的嗅探器都使用类似的过滤机制,因此对 Linux网
络管理员来说,了解如何使用 Tcpdump来捕获感兴趣的数据包是一项必须掌握的基本功。
Tcpdump的安装
在一些 Linux发行版中,Tcpdump通常作为标准的软件包被默认安装,执行“tcpdump”
命令可以确定是否已经安装了 Tcpdump。如果系统中还没有安装 Tcpdump,可以去“网站
上可以下载到最新的 Ethereal源码包。下面以 为例,讲述如何安装
Ethereal,此处使用的操作系统是 。
首先下载最新的源码包,并将其解压缩:
#
#cdlocal
#
#
同 Tcpdump一样,在编译 Ethereal之前应先确定已经安装 pcap库(libpcap),这是编
译 Ethereal时所必需的。如果该库已经安装,就可以执行下面的命令来编译并安装
Ethereal:
#
#./configure
#make
#makeinstall
设置 Ethereal的过滤规则
当编译并安装好 Ethereal后,就可以执行“ethereal”命令来启动 Ethereal。在用
Ethereal截获数据包之前,应该为其设置相应的过滤规则,可以只捕获感兴趣的数据包。
Ethereal使用与 Tcpdump相似的过滤规则,并且可以很方便地存储已经设置好的过滤规
则。要为 Ethereal配置过滤规则,首先单击“Edit”选单,然后选择
“CaptureFilters...”菜单项,打开“EditCaptureFilterList”对话框(如图 1所示)。
因为此时还没有添加任何过滤规则,因而该对话框右侧的列表框是空的。
图 1Ethereal过滤器配置对话框
在 Ethereal中添加过滤器时,需要为该过滤器指定名字及规则。例如,要在主机
和间创建过滤器,可以在“Filtername”编辑框内输入过滤器名字
“sohu”,在“Filterstring”编辑框内输入过滤规则“”,然后
单击“New”按钮即可,如图 2所示。
图 2为 Ethereal添加一个过滤器
在 Ethereal中使用的过滤规则和 Tcpdump几乎完全一致,这是因为两者都基于 pcap库
的缘故。Ethereal能够同时维护很多个过滤器。网络管理员可以根据实际需要选用不同
的过滤器,这在很多情况下是非常有用的。例如,一个过滤器可能用于截获两个主机间
的数据包,而另一个则可能用于截获 ICMP包来诊断网络故障。
当所有需要的过滤器都创建好后,单击“Save”按钮保存创建的过滤器,然后单击
“Close”按钮来关闭“EditCaptureFilterList”对话框。要将过滤器应用于嗅探过程,
需要在截获数据包之前或之后指定过滤器。要为嗅探过程指定过滤器,并开始截获数据
包,可以单击“Capture”选单,选择“Start...”选单项,打开“CaptureOptions”对
话框,单击该对话框中的“Filter:”按钮,然后选择要使用的过滤器,如图 3所示。
图 3为 Ethereal指定过滤器
注意在“CaptureOptions”对话框中,“Updatelistofpacketsinrealtime”复选框被选
中了。这样可以使每个数据包在被截获时就实时显示出来,而不是在嗅探过程结束之后
才显示所有截获的数据包。
在选择了所需要的过滤器后,单击“OK”按钮,整个嗅探过程就开始了。Ethereal可以
实时显示截获的数据包,因此能够帮助网络管理员及时了解网络的运行状况,从而使其
对网络性能和流量能有一个比较准确的把握。
用 Ethereal分析数据包
Ethereal和其它的图形化嗅探器使用基本类似的界面,整个窗口被分成三个部分:最上
面为数据包列表,用来显示截获的每个数据包的总结性信息;中间为协议树,用来显示
选定的数据包所属的协议信息;最下边是以十六进制形式表示的数据包内容,用来显示
数据包在物理层上传输时的最终形式。
使用 Ethereal可以很方便地对截获的数据包进行分析,包括该数据包的源地址、目的地
址、所属协议等。图 4是在 Ethereal中对一个 HTTP数据包进行分析时的情形。
在图 3最上边的数据包列表中,显示了被截获的数据包的基本信息。从图中可以看出,
当前选中数据包的源地址是 ,目的地址为 ,该数据包所属
的协议是超文本传输协议(HTTP)。更详细的信息表明该数据包中含有一个 HTTP的 GET命
令,要求下载文件到客户端的 Web浏览器。
图 4用 Ethereal分析数据包内容
图 4中间是协议树,通过协议树可以得到被截获的数据包的更多信息,如主机的 MAC地
址(EthernetII)、IP地址(InternetProtocol)、TCP端口号
(TransmissionControlProtocol),以及 HTTP协议的具体内容
(HypertextTrnasferProtocol)。通过扩展协议树中的相应节点,可以得到该数据包中携
带的更详尽的信息。
图 4最下边是以十六制显示的数据包的具体内容,这是被截获的数据包在物理媒体上传
输时的最终形式,当在协议树中选中某行时,与其对应的十六进制代码同样会被选中,
这样就可以很方便地对各种协议的数据包进行分析。
Ethereal提供的图形化用户界面非常友好,管理员可以很方便地查看到每个数据包的详
细信息,协议树及其对应的十六进制表示对分析每个数据包的目的很有帮助,综合使用
Ethereal和 Tcpdump能够基本满足网络管理员在 Linux系统上的所有嗅探要示。
用 EtherApe查看网络流量
EtherApe也是一个图形化的网络嗅探器。与 Ehtereal不同,EtherApe通过验证主机与
主机之间的链接,图形化地显示网络目前所处的状态。EtherApe使用不同颜色的连线来
表示位于不同主机之间的连接,而连线的粗细则表明主机间数据流量的大小。这些信息
都是实时变化的,因而能够协助管理员随时了解到网络中各部分流量的变化情况。
EtherApe的安装
EhterApe支持 Ethernet、FDDI和 TokenRing等多种网络,能够实时地从网络或文件中
读取网络流量的变化情况。此外它还可以将网络流量信息保存下来,以便在之后需要时
再显示出来。在 etherape/网站上可以下载到最新的 EtherApe源码包。下面以
为例,讲述如何安装 EtherApe(使用的操作系统是 )。
首先下载最新的源码包并将其解压缩,代码如下:
#
#cdlocal
#.
EtherApe使用的是 GNOME这一图形用户接口库。与 Ethereal和 Tcpdump一样,它也使
用 pcap库(libpcap)对网络上传输的数据包进行截获和过滤。在编译 EtherApe之前,应
先确定所需的这些库已经安装好,因为这是编译 EtherApe时所必需的。如果这些库已经
安装,就可以执行下面的命令来编译并安装 EtherApe:
#
#./configure
#make
#makeinstall
用 EtherApe分析网络流量
当编译并安装好 EtherApe后,就可以执行“etherape”命令来启动 EtherApe。
当用 EtherApe截获在网络上传输的数据包时,也需要先为其指定过滤规则,否则
EthreApe将捕获网络中的所有数据包。单击工具栏上的“Pref.”按钮,打开“Preferences”
对话框,在该对话框中的“Capture”属性页中,可以找到用于设置过滤规则的
“Capturefilter”下拉框。由于采用的都是 pcap库,因此 EtherApe过滤规则的设置与
Tcpdump和 Ethereal是相同的。
设置好过滤规则后,单击工具栏上的“Start”按钮,就可以开始对网络中感兴趣的数据
包进行嗅探。EhterApe图形化地显示网络流量,图 5是当 EtherApe处于 Ethernet模式
下时的网络流量图。
图 5EtherApe监测的 Ethernet流量图
EtherApe提供了 TokenRing、FDDI、Ethernet、IP和 TCP五种监听模式。当处于 Ethernet
模式下时,EtherApe会截获所有符合过滤规则的以太网数据包,但有时网络管理员可能
只对 IP数据包感兴趣,这时可以将 EtherApe切换到 IP模式。单击“Capture”菜单,
选择“Mode”菜单项,然后再选择相应的模式,就可以完成模式之间的切换。图 6是当
EhterApe处于 IP模式下时的网络流量图。
图 6EtherApe监测的 IP流量图
EtherApe能够以图形的方式显示网络流量。用户看到的是一个很直观的用于表示网络上
各主机间流量大小的图,而不是单个的数据包,因而更容易从整体上把握整个网络的运
行状况,在定位网络故障时相对来说也变得更加容易。
感谢阅读