- 青云网帮助电脑爱好者在各自领域取得成功!QQ群:77719397
- 友情链接,合作,联盟
在Linux下利用TCPDump进行网络管理
对于网络管理员来说,要保证整个网络的正常运行,就必须随时了解网络中存在的异常流量、网络阻塞等现象。打个比方,一部电话的窃听装置,可以用来窃听双方通话的内容,而计算机网络嗅探器则可以窃听计算机程序在网络上发送和接收到的数据。但是,计算机所传送的数据是大量的二进制数据。因此,一个网络窃听程序也必须使用特定的网络协议来分析数据,进行正确的解码。如图27所示,就是一个Windows下的嗅探器。

图 27
那么,对于钟爱Linux的网络安全爱好者来说,能否找到这样一款强大的Linux下的嗅探器呢?TCPDump就是一款免费的网络分析工具,它可以将网络中传送的数据包的“头”完全截获下来提供分析,它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。
(1)安装和启动
在Linux下TCPDump的安装十分简单,一种是以rpm包的形式来进行安装,另一种是以源程序的形式安装。以rpm包的安装方法比较简单,通过rpm命令可以直接安装,rpm包是将软件编译后打包成二进制的格式,不需要修改任何东西。安装时,以超级用户登录,参考命令如下:#rpm -ivh TCPDump.rpm。这样,TCPDump就可以顺利地安装到Linux系统中。不过,现在较高版本的Linux操作系统都自带了这个工具,关于TCPDump更详细的信息,可以查看Man TCPDump。
普通情况下,不带参数执行TCPDump,即:#TCPDump,截获的是通过第一个网络界面的数据包。直接启动TCPDump将监视第一个网络界面上所有流过的数据包。如图28所示。

图 28
从上面的输出结果来看,TCPDump的基本输出格式为:“系统时间 来源主机.端口 > 目标主机.端口 数据包参数”。仔细观察,我们会发现,和上面的Windows界面相比,数据包格式有很多相似之处,这样也有助于我们来了解这个软件的使用方法。
(2)参数分析
TCPDump支持多种不同参数,如使用-i参数指定TCPDump监听的网络界面,这在计算机具有多个网络界面时非常有用;使用-c参数可以指定要监听的数据包数量;使用-w参数指定将监听到的数据包写入文件中保存,等等。然而,在数据的海洋中,TCPDump中更复杂的参数主要是用于过滤。这是为什么呢?
因为在实际操作中,网络中流量很大,如果将所有的数据包都截留下来,数据量就会很大,反而不容易发现所需要的数据包。如果不带任何参数,TCPDump就会搜索系统中所有的网络接口,并显示它截获的所有数据,这些数据对我们不一定全都需要,而且数据太多不利于分析。所以,我们应当先想好需要哪些数据,TCPDump的语法为:
TCPDump [-adeflnNOpqStvx][-c<数据包数目>][-dd][-ddd][-F<表达文件>][-i<网络界面 >][-r<数据包文件>][-s<数据包大小>][-tt][-T<数据包类型>][-vv][- w<数据包文件>][输出数据栏位]
在实际使用中,我们可以灵活应用。现列举几个比较常用的例子:
1、截获所有192.168.10.1的主机收到的和发出的所有数据包。命令为:
TCPDump host 192.168.10.1
实际效果如图29所示。

图 29
2、截获主机192.168.10.1和主机192.168.10.2或192.168.10.3的通信,使用命令(在命令行中适用括号时,一定要):
#tcpdump host 192.168.10.1 and \ (192.168.10.2 or 192.168.10.3 \)
3、如果想要获取主机192.168.10.123接收或发出的telnet包,使用如下命令:
#tcpdump tcp port 23 host 192.168.10.123
4、获取主机192.168.10.1除了和主机192.168.10.2之外所有主机通信的ip包,使用命令:
#tcpdump ip host 192.168.10.1 and ! 192.168.10.2
E-mail:epcos0607@sina.com QQ群:77719397

