Instalar netflow para el monitoreo de tráfico de Mikrotik

Imagen de RazaMetaL

Tema: 

En el trabajo todos los usuarios tienen internet a través de un Mikrotik CCR1036, era necesario tener un registro del tráfico utilizado por cada uno de los usuarios si bien es cierto Mikrotik tiene una opción para hacer gráficos de las cosas y las interfaces pero tiene la desventaja que si el ruteador es reiniciado los gráficos también, y además esta tarea consume CPU.

Para poder lograr tener un historial con gráficas del tráfico de cada dirección IP podemos utilizar el protocolo netflow, el cual es soportado por Mikrotik. Netflow utiliza un exportadror que en mi caso es Mirkotik con la opciónes Traffic Flow  y un colector que es una computadora con Debian y el paquete pmacct.

Mikrotik envía la el registro netflow hacia el servidor que actúa como colector siendo este último el que se encarga de procesar los flujos y del almacenamiento. Pudiendo de esta manera visualizar a través de un navegador las gráficas con con consumo generado por cada dipositivo que utiliza al ruteador para salir a Internet.

El software que permite esta visualización se llama PNRG y se lo puede descargar desde http://www.pmacct.net/pnrg/.

Procedamos entonces a realizar la instalación y configuración, los requisitos  son los siguientes:

- Credenciales de administración del ruteador Mikrotik
- Un computador con Debian e Internet

Mi ruteador tiene la IP 172.16.0.1 y mi interface para la red local es bridge1
Mi servidor tiene la IP 172.16.0.11

Configuramos primero el ruteador:
/ip traffic-flow
set cache-entries=1k enabled=yes interfaces=bridge1
/ip traffic-flow target
add dst-address=172.16.0.11 port=5555 version=1

Ahora configuramos el colector. Primero se debe instalar pmacct:
apt install pmacct rrdtool
Configuramos pmacct editando el fichero /etc/pmacct/nfacctd.conf
!
debug: false
daemonize: true
!
plugin_buffer_size: 80524
plugin_pipe_size: 18052324
!
networks_file: /etc/pmacct/hosts.def
!
nfacctd_port: 5555
!
plugins: memory[in], memory[out]
!
aggregate[in]: dst_host
aggregate[out]: src_host
!
imt_path[in]: /tmp/pmacct_in.pipe
imt_path[out]: /tmp/pmacct_out.pipe
En el fichero /etc/pmacct/hosts.def agregamos las redes de las cuales nos interesa tener el monitoreo, yo he agregado las redes que asigno a mis usuarios:
172.16.0.0/24
172.16.0.1/24
10.8.0.0/24
Reiniciamos el servicio para aplicar los cambios:
systemctl restart nfacctd.service

Instalamos PNRG:
mkdir /usr/local/pnrg
cd /usr/local/pnrg
wget http://www.pmacct.net/pnrg/pnrg-0.1.tar.gz
tar zxvf pnrg-0.1.tar.gz
mv pnrg-0.1/* .
chown -R netflow:www-data /usr/local/pnrg
ln -sf /usr/local/pnrg/spool /var/www/html/pnrg
Creamos enlaces simbólicos hacia nuestra instalación de pnrg:
mkdir -p /usr/local/rrdtool/bin/
ln -s /usr/bin/rrdcgi /usr/local/rrdtool/bin/rrdcgi
ln -s /usr/bin/rrdtool /usr/local/rrdtool/bin/rrdtool
ln -s /usr/bin/pmacct /usr/local/bin/pmacct
Creamos una tarea programada para que cada 5 minutos se ejecute pnrg y actualize los gráficos:
echo "*/5 * * * * root ( cd /usr/local/pnrg/; ./pnrg-wrapper.sh )" > /etc/cron.d/pnrg
systemctl restart cron.service
Configurar Apache2 para la ejecución de CGI:
a2enmod cgi
systemctl restart apache2
Agregamos el directorio de PNRG para que Apache2 pueda ejecutar CGI, para esto se debe editar /etc/apache2/conf-available/cgi-enabled.conf y modificar la sección Directory:
<Directory "/var/www/html/pnrg/">
    Options +ExecCGI
    AddHandler cgi-script .cgi .pl .rb .py
</Directory>

Ahora podemos abrir en nuestro navegador el URL http://172.16.0.11/pnrg y podremos observar el consumo generado por cada uno de nuestros usuarios. En el lado izquierdo de la pantalla aparecerán las direcciones IP de las redes declaradas en el archivo de configuración /etc/pmacct/hosts.def .

Comentarios