Netflow网络流量分析手册作者:聂晓亮(毛蛋哥)目录一、作者简介 (4)二、为什么会有这本书 (5)三、流量分析原理 (6)(一)原始流量分析方式 (6)(二)Netflow分析方式 (6)四、流量采样 (8)(一)在网络设备上开启Netflow功能 (8)(二)网络设备不支持Netflow (9)1.部署方式 (9)2.安装Fprobe (11)3.启动Fprobe (11)4.镜像流量至Fprobe服务器 (12)5.检测是否收到Netflow数据 (12)五、部署服务器 (13)(一)硬件需求 (13)(二)安装FreeBSD (13)(三)安装Nfsen (14)1.安装apache22 (14)2.安装php5 (14)3.安装nfsen (15)(四)安装PortTracker (15)(五)访问Nfsen (16)六、抓贼攻略 (18)(一)了解网络运行状况 (18)(二)什么协议吞了带宽 (22)(三)抓出罪魁祸首 (25)七、感谢 (30)一、作者简介本书作者聂晓亮,网名毛蛋哥。
2004年毕业于北京联合大学信息工程学院,热爱网络相关知识及摄影,机缘巧合参加了Cisco认证培训,并获得了一些成绩。
本书写于2008年10月,作者目前状态工作较为舒适,故有空闲时间完成此书。
聂晓亮(毛蛋哥)拥有自己的Blog及Wiki空间,其中记录了作者的工作、生活、学习。
作者希望通过此书以及Blog、Wiki同全世界的网络爱好者分享其知识与快乐。
聂晓亮(毛蛋哥)的Blog:聂晓亮(毛蛋哥)的Wiki:欢迎交流:pharaohnie@二、为什么会有这本书在工作的几年当中,经常有朋友和一些网友问我一些关于流量分析的问题,诸如:●我们局域网怎么这么慢,是不是有人在下BT?●192.168.0.1也没人用,怎么网卡疯狂闪烁,它在做什么?●老板让我查查服务器为什么总是那么大流量,可我不知道从何下手。
●公司出口带宽不够了,但一时有没那么多带宽预算,我在考虑是不是要关掉一些和公司业务无关的协议,但不知道应该关哪些协议。
诸如这类问题还有很多,对于专业的网络人员当然不是什么难题,但对于一般非IT类公司的网管人员也许就是一个不可能完成的任务。
因此,才有了这本书,也就是说,这本书的目的就是帮助一般的网管人员了解他们所管理的网络运行情况,排查网速慢、个别主机大量占用带宽的问题。
三、流量分析原理(一)原始流量分析方式原始流量分析是通过复制网络流量至分析端,然后对其进行分析。
采用此类分析方式的好处是完全获取了网络的所有流量,可以对其进行深度分析,甚至是用户使用的搜索关键字;弊端是由于需要分析的流量较大,分析端负载会非常高,并不适合进行需要保存历史数据的长期分析。
(二)Netflow分析方式Netflow是Cisco公司开发出的一套协议,用于专门解决原始流量方式所产生的问题。
当在网络设备或其接口上开启Netflow功能后,网络设备会对需要进行分析的流量进行采样分析,并把采样分析的结果发送至分析段进行流量分析,当然这些采样分析的结果要比原始数据小的多的多。
其中网络设备采样分析的结果数据会包含源地址、目的地址、源端口、目的端口、数据流的大小、数据流经过的接口、数据流的到达时间、数据流的送出时间等参数。
使用Netflow分析方式的好处显而易见,分析端得到的已经不再是原始数据,而是一个初步分析结果,只要对这些初步结果进行二次分析即可获得更多的数据。
由于网络设备发送过来的初步分析结果远小于原始数据,因此分析端可以充分利用CPU做更多的历史分析,也就解决了原始数据分析方式所导致的无法分析较长时间数据的问题。
当然,在Netflow分析方式中,由于分析端得到的不是原始数据,自然也无法获得像用户搜索关键字这样的详细信息。
两种分析方式各有特点,建议在进行长期数据分析或进行流量统计分析时使用Netlfow分析方式。
在需要对网络协议进行分析时,如Skype无法连接服务器这样的情况时使用原始数据分析方式。
四、流量采样(一)在网络设备上开启Netflow功能这里只列出如何在Cisco设备上开启Netflow功能。
一般情况下,Cisco 路由器都能支持Netflow功能,而交换机只有一些高端系列能够支持Netflow 功能。
下面以一台Cisco 4507R交换机配置为例说明如何在Cisco交换机上开启Netflow功能。
其中需要Cisco 4507R和Netflow分析端可以相互Ping通,才能确保Netflow数据可以顺利的送达分析端进行分析。
4507R上的Netflow基本配置如下:ip flow ingress infer-fieldsip flow ingress layer2-switchedip flow-export destination 192.168.1.1 9995192.168.1.1为Netflow分析端的IP地址,9995表示Cisco 4507R向Netflow分析端的UDP 9995发送Netflow数据。
验证一下Cisco 4507R是否已经开始发送Netflow数据:Cisco-4507R#show ip flow exportFlow export v5 is enabled for main cacheExporting flows to 192.168.1.1 (9995)Exporting using source interface Loopback0Version 5 flow records40 flows exported in 3 udp datagrams0 flows failed due to lack of export packet0 export packets were sent up to process level多进行几次验证,如果看到橘黄色字体的部分保持持续增长,则表明已经开始发送Netflow数据了。
(二)网络设备不支持Netflow在一些非IT行业的中小企业以及一些中小学校中,网络环境相对简单,网络设备不一定支持Netflow功能。
对于这样的环境也有相应的解决方法-Fprobe。
1.部署方式Fprobe是一款在FreeBSD(FreeBSD的安装方法见五-(二))下运行的软件,它可以将其接口收到的数据转化为Netflow数据,并发送至Netflow分析端。
我们可以通过部署这样一台服务器,并将网络流量镜像至此服务器来实现对网络流量进行Netflow分析。
其部署方式如下:如果经费不足,可以将Fprobe和Netflow部署在同一台服务器中,如下图:Fprobe和Netflow部署在同一台服务器的方式较为普遍,因此我们将按下图举例Fprobe的安装及配置网络设备镜像流量,此处所使用的网络设备为Cisco 4507R。
Cisco 4507R与服务器使用2跟线缆连接,左边的线缆用于将进入4507R 的gi1/3的流量镜像至服务器的fxp0,由于fxp0接口用于接收镜像流量,因此fxp0可以不分配IP地址。
右边的线缆用于保持服务器的网络连通性,这样可以使网络管理员从任何位置都可以用192.168.1.1访问服务器并进行流量分析。
2.安装Fprobefb# cd /usr/ports/net-mgmt/fprobe/fb# make install cleanfb# rehash3.启动Fprobe查看服务器的接口名称。
fb# ifconfigfxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500options=8<VLAN_MTU>ether 00:90:27:a5:58:16media: Ethernet autoselect (100baseTX <full-duplex>)status: active确认接口名称为fxp0后,启动fprobe。
fb# fprobe -i fxp0 127.0.0.1:9555上面的命令表示把接口fxp0收到的数据转化为Netflow数据并发送至本机的UDP 9555。
如果采用Fprobe和Netflow分开部署的方式,请将127.0.0.1改为Netflow分析端的IP地址,并保证Fprobe服务器和Netflow服务器可以相互ping通。
4.镜像流量至Fprobe服务器Cisco-4507R(config)#monitor session 1 source interface gi1/3rxCisco-4507R(config)#monitor session 1 destination interface gi1/4上面的命令表示将gi1/3收到的流量复制到gi1/4。
5.检测是否收到Netflow数据fb# tcpdump -n -i lo0 dst port 9555tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on lo0, link-type NULL (BSD loopback), capture size 96 bytes14:00:44.016020 IP 127.0.0.1.65504 > 127.0.0.1.9555: UDP, length 1464 14:00:49.018368 IP 127.0.0.1.65504 > 127.0.0.1.9555: UDP, length 1464 14:00:54.018791 IP 127.0.0.1.65504 > 127.0.0.1.9555: UDP, length 1464 14:00:59.018328 IP 127.0.0.1.65504 > 127.0.0.1.9555: UDP, length 1464如果能收到如上所示信息(桔黄色部分),则表示已经成功的将4507R发送的数据转化为Netflow数据并发送至本机的UDP 9555。
五、部署服务器Netflow数据的收集及分析是通过Nfsen来实现的,Nfsen同样是FreeBSD 下的免费软件。
它完全基于浏览器进行分析和控制。
(一)硬件需求Nfsen对于CPU的要求较内存的更高一些,我们部署了一台服务器,CPU 为Xeon 3.0,内存为2G,硬盘60G。
这台服务器处理双向共为1.8Gbps的原始数据,Netflow数据为1Mbps。
从这里也可以看出原始数据与Netflow数据的大小对比。