Una pregunta recurrente que me suelen hacer es la siguiente…
¿…cómo monitorear el total de tráfico (subida y bajada), de nuestra red de clientes / hosts, de manera tal que podamos visualizar el tráfico IP por IP de manera individual…?
Algunos administradores directamente crean “queues simples” en el routeador Mikrotik , y luego, la herramienta graph (del menú
“tools“), crea automagicamente las gráficas dentro del propio Mikrotik.
Sin embargo, no siempre es efectiva esa herramienta, ya sea porque puede ser que no utilicemos queues simples, … o porque no queremos sobrecargar el router (ya que los gráficos son creados, actualizados, procesados y almacenados en el mismo), … o porque a veces sucede que el router pierde éstos gráficos, por diversos motivos.
Bien, desde mi punto de vista la mejor manera que yo he encontrado al día de hoy de hacerlo es mediante la utilización del protocolo NetFlow

Netflow se ha convertido en un estándar de la industria de monitoreo de tráfico de red,
y actualmente está soportado para varias plataformas (además de Cisco)
Dado a que Mikrotik dispone de NetFlow, al activar el mismo lo que sucede
es que el Router comienza a enviar pequeños trozos de información
a un servidor (también llamado “colector”) Netflow , que es quien recibe
información del router (o sonda o “exporter“), la almacena y procesa.
Luego con esta información es posible elaborar gráficos del tráfico.

Más información sobre NetFlow http://es.wikipedia.org/wiki/Netflow
Lo primero que vamos a necesitar es un servidor (colector) que reciba los paquetes NetFlowenviados por el router (sonda).
Para el desarrollo del presente ejemplo, optamos por un servidor Linux Debian.
No es el propósito de éste artículo indicar como se monta un Linux Debian. Quienes necesiten informacion al respecto recomiendo el sitio web HowToForge
https://www.howtoforge.com/
Una vez que tengamos en marcha nuestro equipo con Linux Debian, con los siguientes paquetes adicionales podremos montar nuestro colector “NetFlow“
- apache2 (para poder desplegar el gráfico por web)
- pmacct (paquete de linux que contiene el colector netflow)
- pnrg (pequeña aplicación que realiza gráficos a partir de los informes generados por pmacct)
Como señalamos, el paquete que contiene el colector NetFlow en Linux es PMACCT, el cual instalaremos así:

Dicho paquete pmacct incluye ademas:
- pmacctd: convierte al Linux en una sonda (o “exporter”), de cada paquete que lo atraviesa.
No lo vamos a utilizar dado a que en éste escenario el servidor Linux no actúa como sonda, sino en realidad lo vamos a configurar como “colector” - nfacctd: es la aplicación que vamos a utilizar y es la que realmente ”colecta” paquetes NetFlow proveniente de la “sonda” o “exporter”
- pmacct: (no confundir con pmacctd) es la aplicacion que lee los paquetes netFlow colectados por “nfacctd” y permite mostrar estadísticas y hacerlos humanamente
leibles.
Existen otras aplicaciones incluidas en el paquete como sfacctd y uacctd que son similares pero
trabajan sobre variaciones del protocolo NetFlow.
Rápidamente diremos que sfacctd es el colector del protocolo sFlow (http://www.sflow.org)
y uacctd es el colector basado en “Linux Netlink ULOG” (http://rlworkman.net/howtos/ulogd.html)
–
Lo siguiente que vamos a hacer es quitar del proceso de booteo el pmacctd ya que el paquete lo
activa automáticamente cada vez que arranca la maquina Linux. Para ello

Con ésto, sólo quedará activo el servicio “nfacctd“, es decir el colector NetFlow, el cual
es el que nos interesa ya que recibirá del router Mikrotik (“sonda“) los paquetes NetFlow
Ahora configuramos nfacctd:
Podemos renombrar el archivo original para no perderlo:

Y ahora creamos un archivo nuevo de configuración:


En éste archivo de configuración hacemos referencia al archivo hosts.def, en el cual debemos
indicar las subredes que nos interesan monitorear (en éste caso, las subredes de nuestros clientes)

Reiniciamos el servicio para que tome los cambios

Chequeamos que realmente se encuentre funcionando el colector, mediante el comando netstat.
Debería arrojarnos un resultado así:

Y con esto, finalmente hemos terminado de configurar el colector!
Debemos activar la sonda (Routeador MIKROTIK) para que envie los flujos NetFlow al colector,
es decir el Linux.
Esto es mucho más sencillo de hacer

Con esto, le estamos diciendo al Mikrotik que active el envio de paquetes
NetFlow a 172.16.21.2 (en este ejemplo, la IP de nuestro servidor “colector” Linux) , puerto 5055, usando la version 9 de NetFlow.
Podemos ver la evolución de envío de paquetes NetFlow en IP->TrafficFlow->Status
También podemos chequear la recepcion de paquetes NetFlow en el debian mediante el comando pmacct (no confundir con pmacctd)

o para ver el trafico OUT:

Se tiene que desplegar una tabla así como la siguiente:

PNRG como indicamos arriba es la aplicación que toma los datos almacenados
en el colector, leyéndolos con el comando pmaccct, y con esta información
genera los gráficos buscados.
Para que todo funcione más fácilmente y no tengamos que modificar
la configuración por defecto, lo ideal es instalarlo en /usr/local/pntg

Lo descargamos:

Descomprimimos:

De este modo en /usr/local/pnrg nos quedará instalada la aplicación.
Ahora instalamos algunos paquetes necesarios para el funcionamiento
de Pnrg

Ahora debemos indicarle a PNRG que actualice los gráficos cada 5 minutos

Y creamos algunos Symbolic Links para que no tengamos que modificar los scripts de Pnrg

Para que PNRG pueda desplegar los graficos debemos instalar y configurar
el servidor web apache
La instalación es sumamente sencilla:

Vamos a configurarlo de tal modo que podamos acceder a las gráficas
desde http://IP.SERVIDOR/pnrg
Entonces creamos el siguiente enlace simbolico.

Y habilitamos la ejecución de los archivos.cgi en /var/www/html/pnrg
Editamos /etc/apache2/sites-enabled/000-default
y agregamos lo siguiente

Por último, reiniciamos apache para que tome los cambios

Si todo ha salido bien, podemos acceder a las gráficas desde http://IP.SERVIDOR/pnrg
En el menú de la izquierda deberán aparecernos todas las direcciones IPs de los hosts pertenecientes
a nuestra red declarada en /etc/pmacct/hosts.def
El listado de direcciones IP y sus gráficos aparecen automáticamente…!!

En noviembre de 2015, en la MUM realizada en Buenos Aires, Argentina, realizamos una breve charla sobre el tema, con cerca de 400 asistentes, agradecemos mucho a la gente de Mikrotik por habernos permitido brindar esta breve introducción.

