公司的网速不怎么给力,使用iptable+tc做为网关并进行了站点限制和流控限制。不过,公司领导还想了解每个人具体网络的使用情况,于是就又安装了ntop流量监控。ntop可以很方便地显示出特定的网络协议、占用大量带宽的 主机、各次通信的目标主机、数据包的发送时间、传递数据包的延时等详细信息。其功能如下:

  1. 自动从网络中识别有用的信息;
  2. 将截获的数据包转换成易于识别的格式;
  3. 对网络环境中通信失败的情况进行分析;
  4. 探测网络环境中的通信瓶颈;
  5. 记录网络通信的时间和过程。

上面简单介绍了下ntop的功能,下面着重介绍ntop的安装和使用。ntop的安装需要依赖rrdtool、libpcap、GeoIP等几个包。如果没有安装的话,在安装ntop时会报相关的错误,具体可以根据提示地址下载相应的包安装就行了。我因为使用了第三源rpmforge,所以直接yum -y install 进行了安装。

rrdtool包我是直接通过源码包安装的。在安装ntop时会有一个相关的项需要配置。

1tar zxvf rrdtool-1.4.7.tar.gz
2cd rrdtool-1.4.7
3./configure –prefix=/usr/local/rrdtool
4make
5make install

ntop的安装:

安装时可能会找不到configure文件,需要先运行autogen.sh安装工具,该工具会自动生configure文件并按照默认参数编译。如果不想用默认方式,可以在autogen.sh生成configure文件时,重新编译参数。

1tar zxvf ntop-4.1.0.tar.gz
2cd ntop-4.1.0
3./configure --prefix=/usr/local/ntop --with-rrd-home=/usr/local/rrdtool
4make
5make install

autogen编译时,可能会报某些包不存在,需要安装。这时安装相应的包即可,如:

1You must have svn/subversion installed to compile autogen.sh.
2Download the appropriate package for your distribution, or get the
3source from http://subversion.tigris.org
4[root@router ntop]# yum install subversion
5cp packages/RedHat/ntop.conf.sample /etc/ntop.conf

复制ntop.conf配置文件到相应目录。该配置文件中默认开启的几项配置项为:

1--user ntop
2--daemon
3--db-file-path /usr/share/ntop
4--interface eth0
5--trace-level 3 # Which is the default
6--http-server 3000

上面几项分别为启动用户,是否以后方式启动,监听的网卡,trace级别,http页面访问的端口。

1cp packages/RedHat/ntop.init/etc/init.d/ntop

想要配置service 支持,还要chkconfig –add ntop增加service配置命令的支持。不过不是按rpm包方式进行安装的话,其文件路径和该启动脚本的文件路径是有出入的,如果按我上面的方式进行的安装还需要打开配置文件进行相应的修改。

按上面的安装完成以后,记得给/usr/local/ntop/share/ntop/rrd路径为ntop启动用户可读写的权限。我这里以nobody方式启动(官方的安装说明是以新增ntop用户以启动ntop程序。)不过rrd存方文件的路径也不是绝对的,也可以通过启动时的-p参数指定路径。

上面配置完,需要/usr/local/ntop/bin/ntop -A 为http访问配置访问密码。(不可以为空,密码长度要求为至少要五位以上)

注:该处的http访问不需要额外安装apache的,其本身程序提供的有http服务。

程序启动可以使用/usr/local/ntop/bin/ntop @配置文件路径 -i eth1 -d 也可以通过上面提到的ntop.init程序启动。开启有iptable防火墙的,还要进行下面的配置:

1root@localhost ~]# vim /etc/sysconfig/iptables
2-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3000 -j ACCEPT

然后service iptable restart 。开启浏览器输入http://IP:3000,出现ntop 系统画面表示安装成功 

ntopl

从上图中不难看出,我在eth1上的几个虚拟网卡配置都已检测到。

默认所有人都可以通过http://IP:3000查看ntop检测到的信息。这样阿猫阿狗都可以连上看,感觉很不恰当。而且admin密码的设置岂不是只是配置参数之外,其他作用就没了不成。其实不然。我们可以点选画面的右上角Admin -> Configure -> ProtectURLs对所有的页面进行密码管理保护。即所有页面的访问都需要输入用户名密码后,才能进行访问。

ntop2

当我们按上面的选择进入上面的画面时, 选择下方Add URL,新增一个管理网址。

ntop3

按上图的格式新增一个*,代表所有的页面访问权限都需要admin用户才能访问。在重新连结到http://IP:3000 就会出现帐号密码输入的对话框,使用的帐密就是admin/password。

需要注意到的一些问题:

在访问时不出图:多是因为/usr/local/ntop/share/ntop/rrd或启动时的-p参数后面的路径没有ntop启动用户的写权限。涉及到密码的更改的参数:

1[-A]          Ask admin user password and exit
2[     | --set-admin-password=<pass>]   Set password for the admin user to <pass>

但具体使用/usr/local/ntop/bin/ntop –set-admin-password=进行密码更改时,往往不成功。此时可以通过将/usr/local/ntop/share/ntop目录的ntop_pw.db和prefsCache.db备份后删除。并将/usr/local/ntop/var/ntop目录的四个.db文件备份后,将其删除。然后再通过参数-A或 –set-admin-password=进行密码设置了。

注:2012年9月19日重新在别外一台编辑时,发现有了新的版本ntop5.0.1 。该版本安装时需要python2.6以上的版本支持。