Chinaunix首页 | 论坛 | 博客
  • 博客访问: 444544
  • 博文数量: 403
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: -70
  • 用 户 组: 普通用户
  • 注册时间: 2016-09-05 12:45
文章分类

全部博文(403)

文章存档

2014年(3)

2013年(1)

2012年(3)

2011年(21)

2010年(13)

2009年(64)

2008年(9)

2007年(36)

2006年(253)

分类: 系统运维

2006-08-01 18:36:16

Netflow提供网络流量的会话级视图,记录下每个TCP/IP事务的信息。也许它不能象tcpdump那样提供网络流量的完整记录,但是当汇集起来是,它更加易于管理和易读。Netflow由Cisco创造。

这篇文章主要参考和这两篇文章,由于自行加入了ng_netflow和修改了部分程序,勉强算做原创吧

Netflow

Netflow提供网络流量的会话级视图,记录下每个TCP/IP事务的信息。也许它不能象tcpdump那样提供网络流量的完整记录,但是当汇集起来是,它更加易于管理和易读。Netflow由Cisco创造。

Netflow结构

一个Netflow系统包括三个主要部分:探测器,采集器,报告系统。探测器是用来监听网络数据的。采集器是用来收集探测器传来的数据的。报告系统是用来从采集器收集到的数据产生易读的报告的。

探测器设置

探测器有很多种,常用的如softflowd,freebsd自带的ng_netflow。

(1)softflowd

a.安装

#/usr/ports/net-mgmt/softflowd/make install clean

b.运行

#softflowd -i 监听网卡 -n 采集器IP:端口

c。监控程序

#softflowctl statistics 查看状态,还有很多参数,自己看man

(2)ng_netflow

a.配置

1./boot/loader.conf

ng_ether_load="YES"

ng_one2many_load="YES"

2.ng配置文件/etc/ng_conf

mkpeer 监听网卡: netflow lower iface0

name 监听网卡:lower netflow

connect 监听网卡: netflow: upper out0

mkpeer netflow: ksocket export inet/dgram/udp

msg netflow:export connect inet/采集器IP:端口

b.运行

#/usr/sbin/ngctl -f /etc/ng_conf

如果需要自动运行,需要在/usr/local/etc/rc.d/目录下加入相应的启动脚本

采集器设置

(1)安装flow-tools

#/usr/ports/net-mgmt/flow-tools/make install clean

(2)运行

#/usr/local/bin/flow-capture -p /var/run/flow-capture.pid -n 287 -N 0 -w /var/log/netflows/ -S 5 本地监听IP/远端IP/监听端口
:D
其中,/var/log/netflows/目录为日志目录,需要手动创建;本地监听IP为0,则在所有IP监听;远端IP为0,接受任意探测器的数据;其它可以不用更改。

一旦启动flow-capture,日志目录下就会出现日志文件。例如tmp-v05.2005-12-12.174000+0800,表示临时的,Netflow版本5的数据,采集开始时间是2005-12-12,17:40:00,距离GMT(标准时间)+8小时。每隔5分钟,flow-capture就会把临时文件移动到永久位置,并开始记录新的临时文件。永久文件就是把tmp替换成ft,文件名的其它部分一样,文件也在同样的日志目录下。

报告系统

(1)Cflow.pm

日志文件是二进制形式,需要特殊的工具阅读。很多工具均利用Cflow.pm。你可以把它当作一个简单的命令行工具。

a.安装

#/usr/ports/net-mgmt/p5-Cflow/make install

注意,这里没有用"clean"这个参数,因为,安装过程可能出错,错误提示包括这样一行

"Note (probably harmless): No library found for -lnsl"

如果是这样你还需要做下面的工作:

# cd /usr/ports/net-mgmt/flow-tools/work/flow-tools-0.68/contrib

# tar -xzvf Cflow-1.051.tar.gz

# cd Cflow-1.051

# perl Makefile.PL

# make

# make install

这样才算安装成功,可以"clean"了

b.使用

#flowdumper -s ft-v05.2005-12-12.174000+0800

后面会出来很多记录信息。结果很容易阅读。但是没有我们关心的汇总之类的图形化的东西,当然你可以在flowdumper的基础上自行书写程序,但是,当然,肯定已经有很多非常棒的程序在那里等着我们了。

(2)flowscan和CUFlow

flowscan是把采集器采集到的数据(/var/log/netflows/ft-*)分类整理,输出rrd格式的文件;CUFlow是flowscan使用的模块(或者插件)。同时CUFlow包含一个程序,方便我们通过WEB访问定制的图形化数据。

a.flowscan设置

1.安装:

#/usr/ports/net-mgmt/flowscan/make install clean

由于一段时间来没有官方的升级版本,所以要从这里



下载升级版本(V1.5至V1.6)才能正确处理日志数据。然后

#cp 01-FlowScan.pm /usr/local/var/db/flows/bin/FlowScan.pm

2.配置:

#cd /usr/local/var/db/flows/bin/;

#cp flowscan.cf.sample flowscan.cf

#vi flowscan.cf /*修改配置文件flowscan.cf*/

------------------------------------------------------------------------------

FlowFileGlob /var/log/netflows/ft-v*[0-9] #需要分析的数据的位置

ReportClasses CUFlow #使用的分析模块

WaitSeconds 300 #分析数据产生间隔,单位是秒,这里是5分钟

Verbose 1 #详细日志,但是可以在系统调试完成后关闭它,设置为0

------------------------------------------------------------------------------

b.配置CUFlow

在这里()下载CUFlow。

#tar xvfz CUFlow-1.5.tgz;cd CUFlow-1.5

#cp CUFlow.pm CUFlow.cf /usr/local/var/db/flows/bin

#vi CUFlow.cf /*修改配置文件CUFlow.cf*/

---------------------------------------------------------------------------------------

Subnet 192.168.2/23 #告诉CUFlow内网的IP段高,意区分外出和进入流量

Network 192.168.1.3,192.168.1.5 webservers #设置要分别处理的流量,当然你

Network 192.168.1.9,192.168.1.1 mailservers #会得到分别的数据显示。注意:

Network 192.168.1.0/25 infrastructure #设置的地址可以交叠

OutputDir /var/log/cuflow #输出结果的位置(RRD)

Scoreboard 10 /usr/local/www/data/scoreboard /usr/local/www/data/scoreboard/topten.html

#产生过去5分钟内TopN用户的网页,这里N是10,就是头10位最大用户

AggregateScore 10 /var/log/cuflow/agg.dat /usr/local/www/data/overall.html

#产生所有5分钟采样的平均值,这里是头10位

Router 192.168.1.1 fred #如果你的网络有比较复杂,多个网段都有自己的探测器,这里就是区分各个

Router 192.168.2.1 barney #不同的探测器的流量

Service 20-21/tcp ftp #你感兴趣的服务,可以很多,可以自定义

Service 22/tcp ssh

Service 23/tcp telnet

Protocol 1 icmp #你感兴趣的协议

Protocol 6 tcp

Protocol 17 udp

#ASNumber 1 Genuity #这一项是Cisco专用的,所以我注释掉了

----------------------------------------------------------------------------------------

#mkdir /var/log/cuflow

#mkdir /usr/local/www/data/scoreboard

c.运行:

# /usr/local/var/db/flows/bin/flowscan

可以看到flowscan开始处理/var/log/netflows/下的文件了,处理完后就会sleep等待300秒了。

d.启动脚本

# cp /usr/local/etc/rc.d/cflowd-flowscan.sh.sample /usr/local/etc/rc.d/cflowd-flowscan.sh

日志在/var/log/flowscan.log

(3)图形结果

a.还记得刚才那个CUFlow的包么,里面有一个叫做CUGrapher.pl的文件,把它复制到/usr/local/www/cgi-bin/下。

b.修改

#vi /usr/local/www/cgi-bin/CUGrapher.pl

--------------------------------------------------------------------------------

my $rrddir = "/var/log/cuflow"; #要处理的rrd文件的位置

my $organization = "My Network"; #修改成自己公司的名字

--------------------------------------------------------------------------------

c.浏览

#Top10列表

#总汇总列表

#可定制输出

d.如果你配置无误,并且幸运的话,一切都会正常。但是我在这里遇到了问题。有些(除了Network之外的几乎全部)选项无法产生图象。在google了一通未能找到答案后,开始了痛苦的程序debug过程。好在CUGrapher.pl是个perl程序,并不很长,让我找到了问题的所在。需要修改一下CUGrapher.pl这个文件:

# vi CUGrapher.pl

--------------------------------------------------------------------------------

# router name

if( scalar @} || scalar @} || scalar @}

|| exists $total ) {

push @args, 'COMMENT: Router: '.$r;

}

---------------------------------------------------------------------------------

找到上面这部分,全部注释掉。
阅读(3585) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-07-07 21:22:21

hen hao