fightclub

ntopng使用简介

ntopng是什么?

ntopng是一个开源的网络流量分析平台。是传统的网络监控平台ntop的新一代产品。
通常我们使用wireshark抓包工具对特定的网络接口进行抓包来进行详细流量分析。
但是,这样操作会有以下几个问题:

  1. 前期准备十分麻烦。如果采取旁路抓包的方式,需要先在交换机做流镜像,并且需要在该端口进行抓包。
  2. wireshark需要耗费大量内存,导致程序不稳定。难以进行持久的抓包统计分析。
  3. 无法进行大范围统计,不能了解全网网络情况。

我们再来看ntopng是如何解决以上几个问题的。

  1. ntopng是一个B/S架构的平台。管理员只需要配置好采集部分就可以通过浏览器查看统计结果
  2. ntopng专门为大数据量采集进行设计。在不需要持续存储的情况下,采用rrd数据库进行数据保存。而且ntopng社区专门设计了一个高性能的持续存储方案n2disk进行大量数据包采集。
  3. ntopng使用配套的nprobe来支持sflow,netflow流量采集协议。能够以极小的成本进行大范围的流量分析。

部署

ntopng的部署有源码安装和二进制安装两种方式。
源码安装需要从社区官网下载源码编译,而二进制安装需要切换到互联网,把yum指向指定的软件安装源进行安装。
社区网站有下面几个产品:

  • ntopng —web平台
  • nprobe —一个可扩展的采集器。支持多种采集架构和插件,并且支持sflow协议和netflow协议采集。
  • n2disk —抓包数据存储库
  • pf_ring —高性能的抓包库,可以让普通pc也能进行大数据包采集
  • ndpi —跨平台的高层协议解析库
  • nbox —小型嵌入式采集系统

我都安装了,但实际使用起来只有ntopng和nprobe有用到。ndpi已经集成在ntopng内部。其他组件并没有用到。
另外,二进制安装默认安装的是企业试用版,如果一段时间不激活,会降成社区版。
企业版的dashboard界面和社区版有所不同,并且提供了报表功能。对,社区版不含报表功能。升级企业版需要150欧元。

配置

我把ntopng和nprobe装在同一台虚拟机上。nprobe做sflow采集,将结果发送到本地的zmq消息队列上,ntopng再从该队列读取信息。
nprobe启动参数如下:

1
/usr/local/bin/nprobe --zmq tcp://127.0.0.1:5556 -i none -n none --collector-port 6343 -b 2

由于ntopng参数较多,我把他们放入了配置文件中

1
2
3
4
5
-G=/var/tmp/ntopng.pid
-d=/storage/ntopng
-i=tcp://127.0.0.1:5556
-p=/etc/ntopng/protos
-F=es;ntopng;ntopng-%Y.%m.%d;http://169.24.2.96:9200/_bulk

配置文件中指定了pid文件位置,存储地点,需要采集的zmq队列接口,ndpi协议文件位置以及elasticsearch参数。
其中,比较主要的是ndpi协议文件,我们通过该文件进行协议自定义。

格式是 [tcp|udp]:端口号@自定义协议名。

我们的示例文件内容如下:

1
2
3
tcp:42966@HP-RGS
tcp:49152-49157@vmware-tools
udp:4172@vmware-view

历史信息统计

标准安装后,ntopng显示的是实时信息。官方提供两种方式来进行历史数据统计。

  • 安装mysql数据库
  • 使用elasticsearch

目前我配置的是elasticsearch,但是并没有做具体的字段优化。我还没有试验本地mysql的效果如何。
另外,elasticsearch提供一个packetbeat的数据包统计方案,我也没试过这两种方案的对比。

交换机上的sflow协议配置

我们使用的h3c交换机主要通过rmon,netstream,sflow三种协议实现流量采集。rmon是对snmp的增强,主要实现的是流量报警。netstream,sflow实现的是对报文的采样和统计。因为是采样分析,所以并不占用多少带宽而且性能也很不错。但是因为缺少了信息,采集精度上会打折扣。如果想要更大的精度可以再添加一个抓包模式的nprobe。

sflow配置样例:

配置sflow collector地址:

1
sflow collector 1 ip 169.24.2.200 description ntop

配置监控端口:

1
2
3
4
5
6
7
8
9
10
interface GigabitEthernet7/0/10
port link-mode bridge
description dell
port link-type trunk
port trunk permit vlan all
broadcast-suppression 1
sflow flow collector 1 #采集器编号
sflow sampling-rate 4000 #采样频率,这里是1/4000.即每4000个包采一个
sflow counter collector 1 #计数采集器编号
sflow counter interval 120 #采集周期120秒

其他问题

ntopng只针对tcp,ip的流量、协议的分布进行统计。并没有细致到tcp的具体参数,比如包大小分布统计、tcp往返周期统计等等。好在这些需求并不常见。如果有这种需求,还得用wireshark