Tcpdump(linux)下载、安装、使用说明
对于网络管理人员来说,使用嗅探器能够随时掌控网络 的实际情况,在网络性能急剧下降的时候,能够通过嗅探器来分析原因,找出造成网络阻塞的根源。
Tcpdump就是Linux平台下一个以命令行方式运行的网络流量监测工具。他能截获网卡上收到的数据包,并能够协助网络管理员对其中的内容进行相应的分析。
嗅探器能够截获指定接口或任何接口的数据包,这取决于如何对嗅探器进行配置。缺省情况下嗅探器一般会显示任何从网络上截获的数据包,但通常会因为数据量过大而使网络管理员理不清头绪。因此,嗅探器一般都提供有相应的机制来对截获的数据包进行过滤,从而只显示符合特定需要的数据包。
Tcpdump提供了一整套完善的规则来对截获的数据包进 行过滤,由于大多数图像化的嗅探器都使用类似的过滤机制,因此对Linux网络管理员来说,了解如何使用Tcpdump来捕获感兴趣的数据包是一项必须掌控的基本功。
Tcpdump的安装
在一些Linux发行版中,Tcpdump通常作为标准的软件包被默认安装,执行“tcpdump”命令能够确定是否已安装了Tcpdump。假如系统中还没有安装Tcpdump
1、下载地址
可到“http://www.tcpdump.org”下载最新的Tcpdump源码包。
注意:
因tcpdump的运行需要pcap的支持,所以最好先行安装pcap软件包,另外还要注意软件的版本问题,建议按照网站上匹配的软件包tcpdump和pcap一同下载。
前期在测试时我使用的yum 安装的pcap包(版本0.9.*),然后在网上下载了tcpdump(版本为4.3.0),在后期编译安装tcpdump时总是出错!!!后来我yum remove pcap 后重新使用源码包安装,一次成功!
2、下面以tcpdump-4.3.0.tar.gz libpcap-1.3.0.tar.gz为例,讲述如何安装Tcpdump
此处使用的操作系统是 CentOS release 5.5 (Final)
在编译Tcpdump之前,应先确定pcap库(libpcap)已安装完毕。这个库是编译Tcpdump时所必需的。
安装过程非常简单如下示:
tar -zxvf libpcap-1.3.0.tar.gz
cd libpcap-1.3.0
./configure
make
make install
该库已安装完毕,下面执行下面的命令来编译并安装Tcpdump:
tar -zxvf tcpdump-4.3.0.tar.gz
cd tcpdump-4.3.0
./configure
make
make install
Tcpdump的输出结果
在对网络中的数据包进行过滤后,Tcpdump的输出结果中包含网络管理员关心的网络状态信息。由于Tcpdump只是个命令行方式的嗅探器,因而其输出结果不是很直观,下面以几种典型的输出信息为例,介绍如何对Tcpdump的输出结果进行分析。
1. 数据链路层头信息
使用“tcpdump -e host tiger”命令截获主机“tiger”任何发出和收到的数据包,并在输出结果中包含数据链路层的头部信息。
“tiger”是一台装有Linux的主机,其MAC地址是00:D0:59:BF:DA:06;“mag”是一台装有SCO Unix的工作站,其MAC地址是08:90:B0:2F:AF:46,上述命令的输出结果如下:
20:15:20.735429 eth0
< 08:90:b0:2f:af:46 00:d0:59:bf:da:06 ip 60: mag.36579 >
tiger.ftp 0:0(0) ack 25565 win 8970 (DF)
在 输出的信息中,“20:15:20”为截获数据包的时间,“735429”是毫秒数,“eth0 <”表示从网络接口eth0接收该数据包(若为“eth0 >”,则表示从网络接口eth0发送数据包)。“08:90:b0:2f:af:46”是主机mag的MAC地址,指明发送该数据包的源主机为 “mag”,“00:d0:59:bf:da:06”是主机tiger的MAC地址,指明该数据包发送的目标主机为“tiger”。“ip”表明该数据包 是IP数据包,“60”是数据包的长度,“mag.36579 > tiger.ftp”表明该数据包是从主机“mag”的36579端口发往主机“tiger”的FTP(21)端口。“ack 25565”表示对序列号为25565的包进行确认,“win 8970”则指明发送窗口的大小为8760。
2. ARP包的输出信息
若使用“tcpdump arp -c 2”命令截获ARP数据包,得到的输出结果可能是:
20:42:22.713502 eth0
> arp who-has mag tell tiger
(00:d0:59:bf:da:06)
20:42:22.713907 eth0
< arp reply mag is-at 08:90:b0:2f:af:46
(00:d0:59:bf:da:06)
在 输出的信息中,“20:42:22”为截获数据包的时间;“713502”和“713907”为毫秒数;“eth0 >”表明从主机发出该数据包;“eth0 <”表明从主机接收该数据包。“arp”表明该数据包是ARP请求,“who-has mag tell tiger”表明是主机“tiger”请求主机“mag”的MAC地址,“00:d0:59:bf:da:06”是主机“tiger”的MAC地址。 “reply mag is-at”表明主机“mag”响应“tiger”的ARP请求,“08:90:b0:2f:af:46”是主机“mag”的MAC地址。
3. TCP包的输出信息
用Tcpdump截获的TCP包的一般输出格式如下:
src > dst: flags data-sequno ack window urgent options
“src > dst:”标明从源地址到目的地址;flags是TCP包中的标志信息,包括S(SYN)标志、F(FIN)标志、P(PUSH)标志、R(RST)标志 和“.”(没有标志);data-sequno是数据包中的数据序列号;ack是下次期望的数据序列号;window是接收缓存的窗口大小;urgent 标明数据包中是否有紧急指针;options是可能的选项值。
4. UDP包的输出信息
用Tcpdump截获的UDP包的一般输出格式如下:
src.port1 > dst.port2: udp lenth
UDP中包含的信息很简单。上面的输出结果表明从主机“src”的“port1”端口发出的一个UDP数据包被送到主机“dst”的“port2”端口,数据包的类型是UDP,其长度为“lenth”。
通 过上面的介绍能够知道,Tcpdump是个命令行方式的嗅探器。他能够根据需要显示出经过一个网络接口的任何数据包,供网络管理员对网络进行检测。但由于 采用的是命令行方式,对这些数据包的分析可能会比较困难。利用Tcpdump提供的表达式过滤一些截获的数据包,能够从截获的大量数据包中提取出有用的信 息,从而能够有针对性地对网络进行监测。
由于任何网络嗅探器的原理都大体相似,因而Tcpdump的基本知识能够应用于几乎任何的嗅 探器。Tcpdump是基于命令行方式的嗅探器,其输出结果比较难于分析,因此很多网络管理员都使用图像化的嗅探器来检测网络故障,并处理可能存在的安全 问题。下次将介绍两个图像化的网络嗅探器—Ethereal和EhterApe。同Tcpdump相比,使用这两个嗅探器的分析过程要简单许多。