Windows linux命令 apache 微软 linux Python wordpress HTML5 mysql php Android centos google 程序员 Ubuntu Firefox java shell 开源 nginx

使用ntop监控系统网络状态

NTOP监控工具简述

NTOP是一种监控网络流量的工具,用NTOP显示网络的使用情况比其他一些网管软件更加直观、详细。NTOP甚至可以列出每个节点计算机的网络带宽利用率。NTOP是一个灵活的、功能齐全的,用来监控和解决局域网问题的工具。它同时提供命令行输入和Web界面,可应用于嵌入式Web服务

ntop主要提供以下一些功能:

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

它可以通过分析网络流量来确定网络上存在的各种问题;也可以用来判断是否有黑客正在攻击网络系统;还可以很方便地显示出特定的网络协议、占用大量带宽的 主机、各次通信的目标主机、数据包的发送时间、传递数据包的延时等详细信息。通过了解这些信息,网管员可以对故障做出及时的响应,对网络进行相应的优化调 整,以保证网络运行的效率和安全。

NTOP安装与配置

系统约定

  1. 系统环境:CentOS 6.3 X64
  2. 软件版本:ntop-5.0.1
  3. 软件源代码包存放位置:/opt

NTOP软件下载

官方网站:http://www.ntop.org,从网站上可以看到最新的稳定版是5.0.1,下载地址:http://nchc.dl.sourceforge.net/project/ntop/ntop/Stable/ntop-5.0.1.tar.gz

依赖包安装

yum -y install gdbm gdbm-devel rrdtool rrdtool-devel libtool libpcap libpcap-devel subversion

说明:如果缺少subversion你将会收到服务器抛出的如下错误

You must have svn/subversion installed to compile autogen.sh.
Download the appropriate package for your distribution, or get the
source from http://subversion.tigris.org

安装GeoIP:GeoIP是一个 ip 对应地理信息的数据库。所谓GeoIP,就是通过来访者的IP,定位他的经纬度,国家/地区,省市,甚至街道等位置信息。这里面的技术不算难题,关键在于有个精准的数据库。有了准确的数据源就奇货可居赚点小钱,可是发扬合作精神,集体贡献众人享用是我们追求的。

如果缺少该安装包,安装ntop时会抛出如下错误:

Removing dups and misplaced entries from LIBS and INCS...
checking for GeoIP_record_by_ipnum in -lGeoIP... no
checking for GeoIP_name_by_ipnum_v6 in -lGeoIP... no
Please install GeoIP (http://www.maxmind.com/)

如果安装GeoIP后仍然收到该错误提示,请参考补充内容。简要安装步骤

wget http://geolite.maxmind.com/download/geoip/api/c/GeoIP.tar.gz
tar zxvf GeoIP.tar.gz
cd GeoIP-1.4.8/
./configure
make && make install

补充:If you went to maxmind.com and compiled GeoIP-1.4.8 c api (downloaded here: http://www.maxmind.com/app/c )and you still get the same error with the ntop fix. Please install python-devel to solve that issue.

ntop安装

#tar zxvf ntop-5.0.1.tar.gz
#cd  ntop-5.0.1
#./autogen.sh --prefix=/usr/local/ntop  --with-tcpwrap //配置--with-tcpwrap选项用于支持TCP Wrappers访问控制
(或./configure --prefix=/usr/local/ntop)
#make
#make install

补充:安装过程中如果遇到下面这个python版本低的提示:

>>>> Unable to locate python-config: using workaround <<<<
checking for python... python
checking Checking python version... Old python installed
Please install python 2.6 or newer.

请升级python到新版本,具体参考:《Centos 6.3升级系统默认Python到2.7版本

ntop配置

# groupadd ntop  //创建ntop组
# useradd -M -s /sbin/nologin -g ntop ntop  //创建隶属于ntop组的用户ntop
# chown -R ntop.ntop /usr/local/ntop/share/ntop //修改ntop安装目录的拥有用户和组
# chown -R ntop.ntop /usr/local/ntop/var/ntop/
#cd /usr/local/ntop/bin
#./ntop -A  //设定admin密码

设置TCP Wrapper权限,在编译ntop时我们使用了--with-tcpwrap配置项,因此可以通过TCP Wrapper策略对ntop的访问进行控制:

#echo 'ntop:192.168.2.188' >> /etc/hosts.allow  //只允许主机192.168.2.188访问NTOP服务
#echo 'ntop:ALL' >> /etc/hosts.deny    //其它用户均拒绝

ntop程序常用的选项:

-A    设定admin密码
-c --sticky-hosts  保留非活动主机的记录 
-P   指定.db档存放路径,表示存放db文件的路径
-u   指定ntop的运行用户(run user)
-b --disable-decoders   关闭协议解码器
-n   使用数字形式的主机标识(不做DNS解析)
-w   指定监听HTTP访问的端口(默认为3000),如 #./ntop -P /usr/local/ntop/var/ntop -u ntop -w 4000(port)
-i   指定接口名称

更多请参考ntop帮助:# ./ntop --help

说明:创建ntop的运行用户ntop,这条命令同时还在/usr/local/ntop/var/ntop目录下创建了ntop_pw.db  prefsCache.db文件

启动和关闭ntop

启动ntop有2中方法:

#./ntop -P /usr/local/ntop/var/ntop -u ntop &  //以ntop用户、db为/usr/local/ntop/var/ntop在后台启动ntop服务(当前目录/usr/local/ntop/bin等同于/usr/local/ntop/bin/ntop -P /usr/local/ntop/var/ntop -u ntop &)

#ntop -d -i eth0  //以后台守护进程的方式(-d)运行 NTOP服务,并监测eth0网卡所连接的流量

如果有多块网卡,可以使用以下命令连接不同的局域网段:

# ntop -d -i eth0,eth1 -M

设置开机自动启动ntop:

# echo "/usr/local/ntop/bin/ntop -P /usr/local/ntop/var/ntop -u ntop &> /dev/null" >> /etc/rc.d/rc.local

补充:

加/dev/null是将标准输出和错误输出全部重定向到/dev/null中,也就是将产生的所有信息丢弃。command > file 2>file 的意思是将命令所产生的标准输出信息和错误的输出信息送到file 中。command  > file 2>file 这样的写法,stdout和stderr都直接送到file中, file会被打开两次,这样stdout和stderr会互相覆盖,这样写相当使用了FD1和FD2两个同时去抢占file 的管道;

command >file 2>&1 这条命令就将stdout直接送向file, stderr 继承了FD1管道后,再被送往file,此时,file 只被打开了一次,也只使用了一个管道FD1,它包括了stdout和stderr的内容。

所以,从IO效率上,前一条命令的效率要比后面一条的命令效率要低,所以在编写Shell脚本的时候,较多的时候我们会用command > file 2>&1 这样的写法,关闭ntop: 

pkill  ntop 
kill [-9]  pid(notp的pid进程号)

配置完成,运行ntop后,通过http://IP:3000就可以访问ntop的web界面了。

延伸阅读

评论