Netflow(FreeBSD)

 本文转自http://www.chinaunix.net 作者:eliumao  发表于:2005-12-13 22:17:40

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

这篇文章主要参考http://www.onlamp.com/lpt/a/6137和http://www.onlamp.com/lpt/a/6177这两篇文章,由于自行加入了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

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

http://net.doit.wisc.edu/~plonka/list/flowscan/archive/att-0848/01-FlowScan.pm

下载升级版本(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

在这里(http://www.columbia.edu/acis/networks/advanced/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.浏览

http://youip/topten.html #Top10列表

http://youip/overall.html #总汇总列表

http://youip/cgi-bin/CUGrapher.pl #可定制输出

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;

}

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

找到上面这部分,全部注释掉。

由于我较懒,所以采用了回避(注释)的方法。

图形结果也许不那么令你满意,当然,你可以根据自己的需要修改CUGrapher.pl来定制。如果你有改好的文档,十分感谢能告诉我。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值