NtopNG : version 3.1

Note Avril 2018 : voir l'article sur la version 3.5. 
Note décembre 2017 : cet article reste valable pour les versions 3.2 et 3.3.

Depuis quelques temps chaque connexion à l'interface WEB de NtopNG me rappelle qu'il existe une version 3.x ... que je vais essayer d'installer et de tester. 
Pour mémoire paquets de dev installés pour la V2.4 : 
apt-get install build-essential git bison flex libglib2.0 libxml2-dev libpcap-dev libtool rrdtool librrd-dev autoconf automake autogen redis-server wget libsqlite3-dev libhiredis-dev libgeoip-dev libcurl4-openssl-dev libpango1.0-dev libcairo2-dev libpng-dev libmysqlclient-dev libnetfilter-queue-dev libmysqlclient-dev zlib1g-dev libzmq3-dev

A priori quelques nouvelles bibliothèques ou include de développement a résoudre par : 
apt-get install default-libmysqlclient-dev libmariadbclient-dev libmariadbclient-dev-compat libpng-dev libcap-dev libldap2-dev 
En principe mes systèmes sont "à jour" de la dernière version. 
Par contre, pas de "tar.gz" à télécharger directement, tout passe par clonage de dépots "git". 
Créer un répertoire de compilation, par exemple "ntopng-3.0" dans un endroit tranquille, ici /usr/src/PGM/BUILD. 
Attention à l'ordre des opérations ! 
On récupère les sources de nDPI dans le dépot github :

cd le_répertoire_de_compilation 
git clone https://github.com/ntop/nDPI.git

On les compile :

cd nDPI 
./autogen.sh 2>&1 | tee LOG.AUTOGEN 
./configure 2>&1  | tee LOG.CONFIGURE 
make 2>&1         | tee LOG.MAKE

La lecture des fichiers résultats permet de repérer les erreurs éventuelles. 
Pour moi, tout s'est bien passé ... 
Si chacune des deux étapes s'est exécutée sans erreurs on peut passer à la suite. 
Récupérer les sources de Ntop :

cd le_répertoire_de_compilation ( ou cd .. si vous étiez dans nDPI) 
git clone https://github.com/ntop/ntopng.git 
cd ntopng 
Ici corriger éventuellement MyISAM --> InnoDB (détails ici). 
./autogen.sh 2>&1 | tee LOG.AUTOGEN 
./configure 2>&1  | tee LOG.CONFIGURE 
make 2>&1         | tee LOG.MAKE

Un petit message en fin d'exécution vous rappelle qu'il faudra charger les données GeoIP : 
Please do not forget to download GeoIP databases doing: "make geoip" 
On peut même le faire de suite ... 
La compilation se passe bien avec juste quelques "warnings" à la fin : 
/usr/bin/ld: warning: libssl.so.1.0.2, needed by /usr/lib/x86_64-linux-gnu/libcurl.so, may conflict with libssl.so.1.1 
/usr/bin/ld: warning: libssl.so.1.0.2, needed by /usr/lib/x86_64-linux-gnu/libcurl.so, may conflict with libssl.so.1.1 
/usr/bin/ld: warning: libcrypto.so.1.0.2, needed by /usr/lib/x86_64-linux-gnu/libcurl.so, may conflict with libcrypto.so.1.1 
Effectivement les systèmes Debian actuels disposent aujourd'hui de trois versions de libssl et libcrypto (1.0.0, 1.0.2 et 1.1), ce qui pourrait poser parfois des problèmes. 
Mais peut-être plus grave les warnings suivants : 
src/Utils.cpp:1468:67: warning: ‘int readdir_r(DIR*, dirent*, dirent**)’ is deprecated [-Wdeprecated-declarations] 
   for (ret = readdir_r(d, &entry, &result); result && !ret; ret = readdir_r(d, &entry, &result)) {                                                                   ^~~~~~~~~ 
In file included from /usr/include/features.h:364:0, 
                 from /usr/include/stdio.h:27, 
                 from /usr/src/PGM/BUILD/ntopng-3.0/ntopng/include/ntop_includes.h:33, 
                 from src/Utils.cpp:22: 
/usr/include/dirent.h:189:12: note: declared here 
 extern int __REDIRECT (readdir_r,

Il est possible que vous obteniez, comme moi, des messages lors du "make" tels que : 
"aclocal-1.11: command not found" 
En effet Debian Stretch est construit avec aclocal-1.15, une solution brutale : 
sudo ln -s /etc/alternatives/aclocal /usr/bin/aclocal-1.11

Lorsque vous exécuter le fatidique "make install 2>&1 | tee LOG.INSTALL"

  • Le binaire "ntopng" est copié dans /usr/local/bin
  • On vous rappelle de faire un "make geoip"
  • On vous donne au passage la méthode pour réaliser un RPM ou un DEB : 
            rpm - do 'make build-rpm' 
            deb - do 'cd packages/ubuntu;./configure;make

Si vous voulez créer un paquet Debian il faudra installer le paquet "dpkg-sig" ou modifier le Makefile.in en commentant les lignes "dpkg-sig .....". 
J'ai ensuite généré le package Debian, et obtenu deux paquets : 
ntopng_3.1.171028-3630_amd64.deb 
ntopng-data_3.1.171028_all.deb 
Que je me suis empressé d'installer, sans succès car il me manque "PF_RING" ! 
Remarque : les fichiers "GeoIP" sont chargés et installés dans le paquet "data". Il faudra néanmoins penser à les rafraîchir de temps en temps. 
Note : après usage NtopNG recharge régulièrement les données pour les "blacklisted hosts", je n'ai pas vu de rechargement des données GeoIP --> les rafraîchir ne peut pas faire de mal ! 
J'ai téléchargé un stock de ".deb" depuis : 
http://packages.ntop.org/debian/stretch/x64/PF_RING 
J'ai téléchargé le paquet le plus récent : pfring_7.1.0-1515_amd64.deb 
qui dépends de pfring-dkms-7.1.0 que l'on peut charger avec : 
http://packages.ntop.org/ubuntu/16.04/all/PF_RING-dkms 
et prendre la version 7.1.0 compatible avec la précédente. Son installation génère un module de kernel qui est installé dans la foulée, on peut alors installer "pfring_7.1.0-1515_amd64.deb" puis les deux paquets "ntopng". 
Le lancement semble OK et le port HTTP (3002 pour moi) est activé. 
Vite quelques essais !