Archive

文章標籤 ‘ntopng’

建立 Ntopng 來作為收集與分析 SFlow 訊息

2015年7月1日 2 則評論

為了在內部網路統計監控封包流竄與流量狀態,我們可以透過 Cacti、MRTG、PRTG之類的軟體來收集這些訊息封包,如果你的交換機有支援 SFlow 或是 NetFlow 協定運作,我們也可以透過相關方式將這類的訊息拋給服務來進行統計與分析。在這篇文章我要介紹如何透過簡單的 Ntopng 來作為 SFlow 訊息的收集與分析作業:

  1. 筆者環境是使用 Extreme Switch,基本上大部分網管型 Switch 都有支援 SFlow 或是 Netflow 模式,讀者可以自行參考交換機的說明書,底下是針對Extreme Switch開啟 SFlow功能的步驟
    • enable sflow
    • configure sflow agent 192.168.1.254 (指定你交換機的 IP 位址 )
    • configure sflow collector 192.168.1.20 port 6343 vr “VR-Default” ( 指定接收 SFlow 訊息的主機 IP 與 Port,並且指定 Virtual Route 名稱是 VR-Default,這邊記得不要用 VR-Mgmt,不然你會收不到任何訊息)
    • configure sflow sample-rate 512
    • configure sflow poll-interval 30
    • enable sflow ports all
  2. 上面參數執行完畢後,你可以透過 show sflow statistics 來看一下有沒有在運作:
    • * Slot-1 Stack.9 # show sflow statistics

      SFLOW Statistics

      Received frames : 1294263515652
      Sampled Frames : 39020
      Transmitted Frames : 32236
      Broadcast Frames : 7092901550
      Multicast Frames : 1462448108
      Packet Drops : 0

  3. 接著,我們必須在 Linux 主機中安裝 Ntopng,在這邊筆者是用 Oracle Linux Server 7.1 來作為預設的安裝環境,請讀者安裝完畢後先透過 yum -y update 將套件更新到最新版本狀態
  4. 由於這台主機我只用來作為 Collector 使用,所以我將 SELinux 與 Firewalld 關閉
  5. 因為待會會需要一些相依性套件,因此我們得先將 EPEL 的套件庫裝上,安裝方式如下:
    • yum -y install http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
  6. 接著,我們在將 ntop 的套件庫添加到 /etc/yum.repos.d 目錄內
    • cat << EOT > /etc/yum.repos.d/ntop.repo
      [ntop]
      name=ntop packages
      baseurl=http://www.nmon.net/centos-stable/\$releasever/\$basearch/
      enabled=1
      gpgcheck=1
      gpgkey=http://www.nmon.net/centos-stable/RPM-GPG-KEY-deri
      [ntop-noarch]
      name=ntop packages
      baseurl=http://www.nmon.net/centos-stable/\$releasever/noarch/
      enabled=1
      gpgcheck=1
      gpgkey=http://www.nmon.net/centos-stable/RPM-GPG-KEY-deri
      EOT
  7. 最後我們將 ntopng、ntopng-data等套件安裝到系統中:
    • yum remove mysql-community-libs mysql-community-common postfix ( 由於在 OEL 預設的 SQL 是使用 Mariadb,因此等等我們在安裝 nprobe 時會有相依性套件問題,所以安裝前先將 mysql 一些函數庫套件移除)
    • yum -y install ntopng ntopng-data tcpdump postfix nprobe (這邊多安裝 tcpdump 主要是待會筆者要透過他來測試訊息傳遞的狀態使用,不裝也可以)

完成上述步驟的安裝,此時我們已經擁有一個具備 ntopng 的作業環境,接下來的步驟我們將進行 SFlow 訊息的接收配置,操作方式如下所示:

  1. 首先,我們可以先透過 tcpdump 來測試一下目前 SFlow 訊息是否已經乖乖的會拋到這台主機的 UDP 6343 Port:
    • tcpdump -i ens32 udp port 6343
      tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
      listening on ens32, link-type EN10MB (Ethernet), capture size 65535 bytes
      21:16:06.002473 IP 192.168.1.254.43373 > Intranet-Netflow.localdomain.sflow: sFlowv5, IPv4 agent 192.168.1.254, agent-id 0, length 1284
      21:16:06.002826 IP 192.168.1.254.43373 > Intranet-Netflow.localdomain.sflow: sFlowv5, IPv4 agent 192.168.1.254, agent-id 0, length 1208
      21:16:06.003107 IP 192.168.1.254.43373 > Intranet-Netflow.localdomain.sflow: sFlowv5, IPv4 agent 192.168.1.254, agent-id 0, length 1244
    • 如果你可以順利看到上面的類似訊息就表示目前 SFlow 訊息的傳遞沒有太大問題
  2. 接著我們必須將系統上的 Redis 服務啟動起來,並設定為預設開啟:
    • [root@localhost ~]# systemctl enable redis.service
      [root@localhost ~]# systemctl start redis.service
      [root@localhost ~]# systemctl status redis.service
      redis.service – Redis persistent key-value database
      Loaded: loaded (/usr/lib/systemd/system/redis.service; enabled)
      Drop-In: /etc/systemd/system/redis.service.d
      └─limit.conf
      Active: active (running) since 三 2015-07-01 21:18:13 CST; 51s ago
      Main PID: 11736 (redis-server)
      CGroup: /system.slice/redis.service
      └─11736 /usr/bin/redis-server 127.0.0.1:6379

      7月 01 21:18:13 Intranet-Netflow.localdomain systemd[1]: Starting Redis per…
      7月 01 21:18:13 Intranet-Netflow.localdomain systemd[1]: Started Redis pers…
      Hint: Some lines were ellipsized, use -l to show in full.

  3. 最後我們要開啟 Ntopng 與 Nprobe 來接收交換機所拋過來的 SFlow 訊息:
    • mkdir /ntopng && chown -R nobody.nobody /ntopng
    • ntopng -i tcp://127.0.0.1:5556 -d /ntopng -w 3000 -v >> /var/log/ntopng.log &
    • nprobe –collector-port 6343 –zmq tcp://127.0.0.1:5556 >> /var/log/nprobe.log &

完成相關配置之後,接著我們可以透過瀏覽器連線到 Ntopng 的網頁,http://IP:3000 (預設使用 admin/admin 登入),如下所示:

ntop01

 

順利的話你應該可以在登入後看到相關數據的呈現:

ntop02