top of page
  • Foto del escritorThierry

Guía básica para el monitoreo de tráfico de red con MRTG y SNMPv3


Si alguna vez has pensado en monitorear el tráfico de su infraestructura de red, pero no tienes presupuesto para comprar licencias de las herramientas más populares en el mercado, pues quédate aquí, estás en el lugar correcto.


En este post veremos paso a paso como montar un servidor web de monitoreo con MRTG, una herramienta de monitoreo de red (Open Source) que permite visualizar el flujo de tráfico en las interfaces de un dispositivo, y el protocolo SNMP para la recolección de los datos.



Escenario


Montar un servidor web de monitoreo con MRTG para visualizar el flujo de tráfico en todos los PEs (Provider Edge) de la infraestructura IP/MPLS, incluyendo el monitoreo de todos los circuitos de servicios de los clientes.

 

Infraestructura de red:



Dispositivos/circuitos para monitorear:


  • PE201

  • PE202

  • PE203

  • PE204

  • C30001-TCCS

  • C30002-TCCS

  • C30003-TCCS


Herramientas:


  • Ubuntu

  • SNMP

  • MRTG

  • DNS.

  • Apache2



I. Instalación y configuración de SNMP


Aunque hoy en día hay muchas iniciativas nuevas para optimizar el monitoreo o la sanidad de una infraestructura de red, incluyendo la aparición de nuevos protocolos, pero la realidad es que SNMP sigue siendo el protocolo más dominante en el mercado a la hora de recolectar información crucial en los equipos de datos.


En cualquier implementación de SNMP es posible encontrar equipos con uno de estos dos roles SNMP Agent o SNMP Manager. Generalmente el SNMP Manager recolecta información en los agentes, basándose en la arquitectura Cliente-Servidor.




SNMP - Instalación (Ubuntu)

 

La instalación de SNMP en Ubuntu es bastante sencilla, basta con utilizar el comando:


sudo apt install snmp



Configuración de SNMPv3 en los PEs (Agentes SNMP)


En cisco IOS-XE / IOS-XR, una configuración básica y muy segura de SNMPv3 (AuthPriv) se implementa de la siguiente forma:


snmp-server group MRTG_GROUP v3 priv
snmp-server user lab_user MRTG_GROUP v3 auth sha cisco2424 priv aes 128 cisco4242

Se aplicada la misma configuración en todos los Routers (PE201-4)



Validación

Desde el servidor de monitoreo (Ubuntu), con la herramienta snmpwalk, incluido en el paquete SNMP recientemente instalado, se puede realizar pruebas contundentes para validar la configuración y el funcionamiento de SNMP en los agentes (PE201-4). Para ello, se hará uso del siguiente comando:


snmpwalk -v3 -a SHA -l authPriv -x AES -A cisco2424 -X cisco4242 198.18.190.204 -u lab_user

Como se puede apreciar en la imagen, después de enviar el comando, casi de forma instantánea se observa una recolección de datos vía SNMP, es el indicio de una prueba exitosa. Con eso confirmamos que SNMPv3 es operacional y está funcionando correctamente en los agentes.

 

En caso de no recibir respuesta, se tendrá que realizar troubleshooting básico de conectividad entre el host y servidor, revisar puertos de firewall, parámetros de configuración (SNMP) en los agentes, etc.




II . WEB-SERVER (Apache2) - Instalación


  • Instalación

Para publicar o mostrar la información de monitoreo desde páginas web, en el servidor implementaremos un servicio web con Apache2, mismo se puede instalar con el comando:


sudo apt install apache2


  • Verificación

Para validar que el servicio web recién instalado es operacional, desde un navegador se envía una petición HTTP a la IP del servidor. Como se puede observar en la siguiente imagen se ha cargado la página web por defecto de Apache2.



Así confirmamos que el servicio WEB está totalmente habilitado. En las siguientes secciones trabajaremos en la personalización del servicio.



  • DNS para el servicio WEB


Para evitar acceder por IP al servicio web, crearemos un DNS Record (A) para la dirección IP del servicio web. Para lograr eso, se requiere acceder al servidor DNS (th.lab - 198.18.135.3) y agregar un A Record en el archivo de zona.

 

El servicio web de monitoreo se llamará MONIFNET, por lo cual crearemos un A Record para monifnet asociado a la IP 198.18.135.4 (IP del servicio web).

 

(FQDN: monifnet.th.lab)

 

Para más detalles acerca del proceso de implementación de DNS y creación de A Records, es altamente recomendable consultar el siguiente post: implementación de DNS



Creación del A Record en el servidor DNS



Validación

Después de la configuración del DNS Record, con una prueba de ping o una petición HTTP (con CURL o desde un navegador) al nombre de dominio recién creado, se puede confirmar que el DNS para el servicio web está funcionando de acuerdo con las expectativas.


ping monifnet.th.lab


curl -v monifnet.th.lab





III . WEB-SERVER (Apache2) - Configuración



Implementación del servicio WEB

Ahora es momento de implementar el sitio web de monitoreo, primero se crea el directorio (monifnet_dir) que servirá de ruta raíz, prácticamente es donde se hospedarán todos los archivos del sitio web, la página principal (Landing Page) y cualquier otro subdirectorio con paginas HTMLs o dependencias del sitio web.

sudo mkdir /var/www/monifnet_dir


Justo a dentro del directorio, se crea el archivo index.html y pegamos el código HTML del Landing Page del sitio.

sudo nano /var/www/monifnet_dir/index.html


Configuración de Apache2 para " monifnet.th.lab "


Después de crear el index.html del sitio web ¿Ahora qué debemos hacer para mostrar el Landing Page del sitio web de monitoreo en lugar de la página de prueba de apache2?

 

Bueno, para ello se requiere crear un archivo de configuración (.conf) en apache2 para el sitio web y dar de baja el sitio por defecto (000-default.conf) de apache 2.  

 

Como primer paso, se copia el contenido del archivo de configuración original (000-default.conf) a monifnet.conf para tener la configuración base, misma que modificaremos para satisfacer las necesidades de nuestro sitio web.

cd /etc/apache2/sites-available/
cp 000-default.conf monifnet.conf

Configuración del nuevo sitio

Para este caso en particular, se requiere configurar o modificar 2 parámetros en el archivo de configuración del sitio (monifnet.conf):  el ServerName y DocumentRoot.

 

En la opción ServerName, se coloca el nombre de dominio del sitio y en DocumentRoot se pone la ruta raíz donde se encuentra el archivo index.html de nuestro sitio.


sudo nano monifnet.conf



ServerName monifnet.th.lab
DocumentRoot /var/www/monifnet_dir


Puesto en marcha del sitio web (monifnet).

Como primer paso, hay que desactivar el sitio por defecto (000-default.conf), luego activar el sitio nuevo (monifnet.conf) y al final reiniciar el servicio apache2 en el servidor.


Desactivación

sudo a2dissite 000-default.conf
sudo systemctl reload apache2


Activación

sudo a2ensite monifnet.conf
sudo systemctl reload apache2

Validación



Como se puede apreciar en la imagen, enviando una petición HTTP al servidor, muestra el Landing Page del sitio (ubicado en /var/www/monifnet_dir/), con eso se valida que el sitio nuevo (monifnet.conf) que acabamos de implementar está totalmente operacional.



IV . MRTG - Instalación


Instalación

MRTG está presente en el repositorio de Ubuntu, así que se puede realizar su instalación como cualquier otro paquete. Como en este escenario vamos a usar SNMP en su versión más segura (v3) y (obviamente) se hará uso de algoritmos de cifrado y de hasheo, además de MRTG se requiere agregar 3 paquetes adicionales.


(no sería necesario instalar paquetes adicionales, en caso de usar SNMP v1/v2c)


sudo apt install mrtg
sudo apt-get install libcrypt-des-perl
sudo apt-get install libdigest-hmac-perl
sudo apt install libcrypt-rijndael-perl

Instalación de MRTG


Instalación de libcrypt-des-perl


Instalación de libcrypt-rijndael-perl


Instalación de libdigest-hmac-perl





V . MRTG - Configuración


La configuración de MRTG para recolectar datos en un dispositivo y generar gráficas del flujo de tráfico, casi siempre involucra 3 pasos:


Paso 1 - La creación de un directorio nuevo.


Adentro del directorio raíz (DocumentRoot) del servicio web, donde se pretende mostrar la información de monitoreo de MRTG (en este caso el DocumentRoot de monifnet.th.lab es “/var/www/monifnet_dir”), se crea un directorio nuevo (a dentro de monifnet_dir ) para cada uno de los dispositivos que pretendamos monitorear.


sudo mkdir /var/www/monifnet_dir/PE201
sudo mkdir /var/www/monifnet_dir/PE202
sudo mkdir /var/www/monifnet_dir/PE203
sudo mkdir /var/www/monifnet_dir/PE204

Paso 2 - La creación de un archivo de configuración (.cfg)


Gracias a la herramienta cfgmaker incluida con MRTG, se puede generar de forma automática el archivo de configuración (.cfg) de cada Router a partir de los datos recolectados en el dispositivo vía SNMP. cfgmaker conlleva muchos parámetros opcionales que permiten filtrar o personalizar a su gusto la información que será mostrada por MRTG.


Para más información acerca de los parámetros de configuración, favor de consultar el siguiente enlace: MRTG cfgmaker



Creación del archivo de configuración - PE201.cfg


sudo cfgmaker --global 'WorkDir: /var/www/monifnet_dir/PE201' \
		 --global 'Language: spanish '	\
		 --global 'Options[_]: bits,growright,nolegend,nobanner'	\
		 --global 'Background[^]:#DAF4F7'	\
		 --global 'PageFoot[^]:Thierry-lab.com'	\
		 --ifref=descr --ifdesc=alias '--if-filter=$default && $if_is_ethernet' –nodefaultglobal           \
       	 --output /etc/mrtg/PE201.cfg \
		 --snmp-options=:::::3	\
        	 --username=lab_user \
         	 --privpassword=cisco4242 \
         	 --privprotocol=aes \
         	 --authprotocol=sha \
         	 --authpassword=cisco2424 \
         	 --contextengineid=NULL \
         	 PE201


En WorkDir, se específica siempre el directorio creado para el dispositivo en el primer paso.


En output, se específica donde se guardará el archivo de configuración, aquí por fines prácticos lo nombramos con el mismo nombre que el dispositivo.


En snmp-options, se especifica la versión de SNMP a utilizar, en este caso la versión 3, seguido de todos los atributos para la autenticación y cifrado.


En la última línea se especifica el hostname o la IP del dispositivo, en este caso PE201


Se genera una configuración similar para cada dispositivo, los demás parámetros no mencionados son opcionales. Para más información acerca de los parámetros de configuración, favor de consultar el siguiente enlace: MRTG cfgmaker



En cuestión de segundos, se observa la recolección de datos en el equipo vía SNMPv3.




Se repite el mismo paso para PE202, PE203, PE204.


PE202




PE203



PE204



Paso 3 - La creación del archivo index.html y otros archivos (.html)


Gracias a la herramienta indexmaker incluida con MRTG, se puede generar de forma automática la página index.html (y otros archivos web) de los dispositivos a partir del archivo de configuración (.cfg) generado en el paso 2.


Es muy importante mencionar que cada vez que haya cambio en el archivo de configuración se debe volver a generar los archivos HTMLs para que se reflejan los cambios en las páginas web.


Creación de la página index.html y otros archivos web para PE201


sudo indexmaker --nolegend	\
		    --title='Monitoreo -  ROUTER: PE201' 	\
		    --pageend=thierry-lab.com	\
		    --pagetop='<H1> TH.LAB </H1>'	\
		    --bodyopt='bgcolor="#DAF4F7" text="#000000"link="#000000" vlink="#000000" alink="#000000"' \
		   --output=/var/www/monifnet_dir/PE201/index.html /etc/mrtg/PE201.cfg

Aquí el único parámetro mandatorio es el output, ahí se indica donde se guardará las páginas HTMLs, incluyendo el index.html.


Se realiza un proceso similar para los demás dispositivos. Los parámetros no mencionados son de opcionales, para más información acerca de los parámetros del indexmaker, favor de consultar el siguiente enlace: MRTG indexmaker



Si todo está bien, no debe mostrar ningún mensaje. Ahora repetimos el mismo paso para PE202, PE203, PE204.






VI . MRTG - Ejecución


Una vez finalizada la configuración de MTRG, el siguiente paso sería ejecutar el programa cada determinado tiempo para ir actualizando las gráficas.


Esta tarea se podría realizar de forma manual con el comando “sudo mrtg /etc/mrtg/PE201.cfg” o también “sudo env LANG=C /usr/bin/mrtg /etc/mrtg/PE201.cfg” pero no es tan conveniente, requiere de una intervención humana.


A continuación, se usará la herramienta crontab de Linux para automatizar la ejecución de MRTG (cada minuto). A dentro de etc/crontab, se agrega las siguientes líneas, una para cada dispositivo, todas con la opción de logging para generar un log después de cada ejecución.


*/1 * * * *     root env LANG=C /usr/bin/mrtg /etc/mrtg/PE201.cfg --logging /var/log/mrtg/mrtg.log
*/1 * * * *     root env LANG=C /usr/bin/mrtg /etc/mrtg/PE202.cfg --logging /var/log/mrtg/mrtg.log
*/1 * * * *     root env LANG=C /usr/bin/mrtg /etc/mrtg/PE203.cfg --logging /var/log/mrtg/mrtg.log
*/1 * * * *     root env LANG=C /usr/bin/mrtg /etc/mrtg/PE204.cfg --logging /var/log/mrtg/mrtg.log


Pruebas

Después de automatizar la ejecución de MRTG, esperamos unos minutos para asegurar que MRTG capture algo de tráfico, y así poder validar su funcionamiento.


Desde un navegador, ingresando al URL del sitio web (más el nombre del dispositivo), por ejemplo  http://monifnet.th.lab/PE201/ , se puede visualizar el flujo de tráfico de las interfaces de PE201, capturado por MRTG.



Haciendo clic en la gráfica de cualquiera de las interfaces tendrá acceso a datos históricos y otros detalles tales como se muestran en la siguiente imagen.




Se observa resultados similares para los demás dispositivos, con eso se comprueba que MRTG es operacional, y funcionando de acuerdo con las expectativas.

 

“La cereza del pastel ” ahora es momento de modificar un poco la página principal (landing page) del sitio web de monitoreo, agregando enlaces directos hacia las páginas de MRTG así que de esta forma los usuarios pueden tener acceso a ellas desde la página principal.



Código HTML actualizado




Pruebas



Pruebas exitosas, se confirma que el servidor web de monitoreo está funcionando de acuerdo con las expectativas.




Conclusión

 

Esta demostración es un claro ejemplo de integración de MRTG con un servicio web, es uno de muchos casos prácticos e interesantes acerca de su uso en una infraestructura de red, quizá no es la herramienta más “Fancy” y sofisticada del mercado pero una cosa cierta es que a la hora de monitorear el flujo de tráfico en un dispositivo de red  ¡sí  cumple!

















58 visualizaciones0 comentarios
  • Facebook
  • Twitter
  • LinkedIn
  • YouTube

©2020 por Thierry-LAB

bottom of page