Por David Guerrero, LinuxFocus enero 1998 Traducido por Ismael Ripoll Este artculo apareci por primera vez en Linux Journal. Lo hemos reimpreso y traducido con permiso del autor Introduccin En el mundo actual, en el que la informtica gira en torno al concepto de red, el trabajo de los administradores de sistemas es muy complejo. Su misin consiste en mantener en funcionamiento recursos tales como encaminadores (routers), concentradores (hubs), switches, servidores, as como cada dispositivo crtico que conforma la red. Hay gran cantidad de motivos por los cuales un administrador necesita monitorizar entre otros : la utilizacin del ancho de banda, el estado de funcionamiento de los enlaces, la deteccin de cuellos de botella, detectar y solventar problemas con el cableado, administrar la informacin de encaminamiento entre mquinas, etc. La monitorizacin de la red es tambin un buen punto desde el que comenzar el estudio de los problemas de seguridad. En muchos casos, la red de una organizacin est enlazada mediante costosos enlaces a redes de rea extensa (WAN) o con la Internet, y cuyos costes dependen del volumen de trfico. Es muy importante mantener un registro estadstico del trfico que circula por estos enlaces. sta situacin es bastante comn en Europa, donde los enlaces X.25 son todava de uso corriente. La tarificacin de este tipo de lneas se realiza en funcin del nmero de paquetes enviados y recibidos. Otros tipos de enlaces, como los punto a punto (Frame relay), son de tarifa plana. En stos la compaa telefnica ha de garantizar un ancho de banda, el cual es importante monitorizar. En la ltima parte de este artculo, se presenta una herramienta que permite hacer un seguimiento grfico del trfico en los encaminadores (router). sta es fcilmente configurable para poder monitorizar otras clases de informacin de la red. Qu es SNMP ? La respuesta a todas las necesidades antes expuestas, es el protocolo llamado Simple Network Management Protocol (SNMP). Diseado en los aos 80, su principal objetivo fue el integrar la gestin de diferentes tipos de redes mediante un diseo sencillo y que produjera poca sobrecarga en la red. SNMP opera en el nivel de aplicacin, utilizando el protocolo de transporte TCP/IP, por lo que ignora los aspectos especficos del hardware sobre el que funciona. La gestin se lleva a cabo al nivel de IP, por lo que se pueden controlar dispositivos que estn conectados en cualquier red accesible desde la Internet, y no nicamente aquellos localizados en la propia red local. Evidentemente, si alguno de los dispositivos de encaminamiento con el dispositivo remoto a controlar no funciona correctamente, no ser posible su monitorizacin ni reconfiguracin. El protocolo SNMP est compuesto por dos elementos: el agente (agent), y el gestor (manager). Es una arquitectura cliente-servidor, en la cual el agente desempea el papel de servidor y el gestor hace el de cliente. El agente es un programa que ha de ejecutase en cada nodo de red que se desea gestionar o monitorizar. Ofrece un interfaz de todos los elementos que se pueden configurar. Estos elementos se almacenan en unas estructuras de datos llamadas "Management Information Base" (MIB), se explicarn ms adelante. Representa la parte del servidor, en la medida que tiene la informacin que se desea gestionar y espera comandos por parte del cliente. El gestor es el software que se ejecuta en la estacin encargada de monitorizar la red, y su tarea consiste en consultar los diferentes agentes que se encuentran en los nodos de la red los datos que estos han ido obteniendo. Hay un comando especial en SNMP, llamado trap, que permite a un agente enviar datos que no han sido solicitados de forma explcita al gestor, para informar de eventos tales como: errores, fallos en la alimentacin elctrica, etc. En esencia, el SNMP es un protocolo muy sencillo puesto que todas las operaciones se realizan bajo el paradigma de carga-y-almacenamiento (load-and-store), lo que permite un juego de comandos reducido. Un gestor puede realizar slo dos tipos diferentes de operaciones sobre un agente: leer o escribir un valor de una variable en el MIB del agente. Estas dos operaciones se conocen como peticin-de-lectura (get- request) y peticin-de-escritura (set-request). Hay un comando para responder a una peticin-de-lectura llamado respuesta-de-lectura (get- response), que es utilizado nicamente por el agente. La posibilidad de ampliacin del protocolo est directamente relacionado con la capacidad del MIB de almacenar nuevos elementos. Si un fabricante quiere aadir un nuevo comando a un dispositivo, como puede ser un encaminador, tan slo tiene que aadir las variables correspondientes a su base de datos (MIB). Casi todos los fabricantes implementan versiones agente de SNMP en sus dispositivos: encaminadores, hubs, sistemas operativos, etc. Linux no es una excepcin, existen varios agentes SNMP disponibles pblicamente en la Internet. La cuestinde la seguridad SNMP ofrece muy poco soporte para la autentificacin. Tan slo ofrece el esquema de dos palabras clave (two-passwords). La clave pblica permite a los gestores realizar peticiones de valores de variables, mientras que la clave privada permite realizar peticiones de escritura. A estas palabras clave se les llama en SNMP communities. Cada dispositivo conectado con una red gestionada con SNMP, ha de tener configuradas estas dos communities. Es muy comn tener asignando por defecto el valor "public" al community pblico, y "private" al privado. Por lo que es muy importante cambiar estos valores para proteger la seguridad de tu red. Ques el MIB ? SNMP define un estndar separado para los datos gestionados por el protocolo. Este estndar define los datos mantenidos por un dispositivo de red, as como las operaciones que estn permitidas. Los datos estn estructurados en forma de rbol; en el que slo hay un camino desde la raz hasta cada variable. Esta estructura en rbol se llama Management Information Base (MIB) y se puede encontrar informacin sobre ella en varios RFC's. La versin actual de TCP/IP MIB es la 2 (MIB-II) y se encuentra definida en el RFC-1213. En ella se divide la informacin que un dispositivo debe mantener en ocho categoras (ver Tabla 1). Cualquier variable ha de estar en una de estas categoras. Tabla 1. Categoras TCP/IP Categora Informacin system Informacin del host del sistema de encaminamiento interfaces Informacin de los interfaces de red addr-translation Informacin de traduccin de direcciones ip Informacin sobre el protocolo IP icmp Informacin sobre el protocolo ICMP tcp Informacin sobre el protocolo TCP udp Informacin sobre el protocolo UDP egp Informacin sobre el protocolo (Exterior Gateway) La definicin de un elemento concreto MIB implica la especificacin del tipo de dato que puede contener. Normalmente, los elementos de un MIB son enteros, pero tambin pueden almacenar cadenas de caracteres o estructuras ms complejas como tablas. A los elementos de un MIB se les llama "objetos". Los objetos son los nodos hoja del rbol MIB, si bien, un objeto puede tener ms de una instancia, como por ejemplo un objeto tabla. Para referirse al valor contenido en un objeto, se ha de aadir el nmero de la instancia. Cuando slo exista una instancia del objeto, est es la instancia cero. Por ejemplo, el objeto ifNumber de la categora "interfaces" es un entero que representa el nmero de interfaces presentes en el dispositivo; mientras el objeto ipRoutingTable de la categora "ip" contiene la tabla de encaminamiento del dispositivo. Hay que acordarse de utilizar el nmero de la instancia para leer el valor de un objeto. En este caso, el nmero de interfaces presentes en un encaminador puede ser observado mediante la instancia ifNumber.0. En el caso de ser un objeto tabla, se ha de utilizar el ndice a la tabla como ltimo nmero para especificar la instancia (fila de la tabla). Existe otro estndar que define e identifica las variables MIB, llamado "Structure of Management Information" (SMI). SMI especifica las variables MIB, stas se declaran empleando un lenguaje formal ISO llamado ASN.1, que hace que tanto la forma como los contenidos de estas variables sean no ambiguos. El espacio de nombres ISO (rbol) est situado dentro de un espacio de nombres junto con otros rboles de otros estndares de otras organizaciones. Dentro del espacio de nombres ISO hay una rama especfica para la informacin MIB. Dentro de esta rama MIB, los objetos estn a su vez jerarquizados en subrboles para los distintos protocolos y aplicaciones, de forma que esta informacin puede representarse unvocamente. La Figura 1 muestra el espacio de nombres del MIB del TCP/IP, ste est situado justo bajo el espacio del IAB "mgmt". La jerarqua tambin especfica el nmero para cada nivel. Figura 1. TCP/IP Organizational Tree
Es importante constatar que la mayor parte del software necesita el punto raz (.) para localizar el objeto en el MIB. Si no se incluye el punto raz, se asume que el path es relativo desde .iso.org.dod.internet.mgmt.mib-2. De esta forma, el objeto ifNumber de la categora "interfaces" se puede llamar: .iso.org.dod.internet.mgmt.mib-2.interfaces.ifnumber o el equivalente numrico: .1.3.6.1.2.1.2.1 y la instancia es: .iso.org.dod.internet.mgmt.mib-2.interfaces.ifnumber.0 o el equivalente numrico: .1.3.6.1.2.1.2.1.0 Adicionales MIB se pueden aadir a este rbol conforme los vendedores definen nuevos objetos y publican los correspondientes RFC. Cul es el futuro de SNMP ? Una nueva especificacin llamada SNMPv2 est actualmente en rpido desarrollo. Esta versin trata de solucionar la laguna existente en cuestiones de seguridad del protocolo actual mediante mecanismos que se centran en la privacidad, la autentificacin y el control de acceso. Tambin permitir un complejo mecanismo de especificacin de variables, as como algunos comandos nuevos. El problema del SNMPv2 es que an no es un estndar ampliamente aceptado, a diferencia del SNMPv1. No es fcil encontrar versiones de SNMPv2 de agentes ni de software que haga uso de los nuevos comandos. Dejemos que pase el tiempo y ya veremos que sucede en el futuro prximo... SNMP en Linux Uno de los paquetes ms populares de SNMP es el CMU-SNMP. Diseado originalmente en la Universidad de Carnegie Mellon, ha sido transportado a Linux por Juergen Schoenwaelder y Erik Schoenfelder. Es completamente compatible con el estndar SNMPv1 e incluye algunas de las nuevas funcionalidades de SNMPv2. La distribucin contiene algunas herramientas de gestin que permiten, desde la lnea de comandos, enviar peticiones a dispositivos que ejecuten agentes SNMP. Tambin contiene un programa agente SNMP, diseado para ejecutarse sobre Linux, que ofrece a gestores ejecutndose en la red (o en el propio sistema), informacin sobre el estado de los interfaces, tablas de encaminamiento, instante de inicio (uptime), informacin de contacto, etc. Una valiosa caracterstica aadida que viene con CMU-SNMP es un SNMP C-API, que permite a los programadores construir complejas herramientas de gestin basadas en las capacidades de red de la distribucin. La instalacin en un sistema Linux es sencilla, si bien algo diferente de la instalacin original. Existe una distribucin con los ejecutables pre- compilados de las herramientas de gestin, el demonio y la biblioteca API. Lo primero que se ha de hacer es decidir si "bajarse" la distribucin con los fuentes, o la distribucin con los ejecutables. No es difcil encontrar este paquete en la Internet. La distribucin binaria se instala y ejecuta sin problema alguno en los Linux que soporten ELF. Si bien explicaremos cmo instalar la distribucin binaria, es una buena prctica el bajarse las distribuciones binarias nicamente de servidores Internet de confianza para evitar caballos de Troya y otros problemas de seguridad. Copia el fichero cmu-snmp-linux-3.4-bin.tar.gz en el directorio raz (/). Descomprmelo y extrae los fichero del tar con con la siguiente orden: tar zxvf cmu-snmp-linux-3.4-bin.tar.gz Ahora tendrs todas las utilidades y bibliotecas correctamente instaladas en el sistema, a excepcin del fichero de configuracin del agente: /etc/snmpd.conf. Lo puedes crear ejecutando el siguiente "script": /tmp/cmu-snmp-linux-3.4/etc/installconf con los siguientes parmetros: /tmp/cmu-snmp-linux-3.4/etc/installconf -mini password donde password es la palabra clave pblica (community) que se vaya a utilizar. Ahora se puede editar el nuevo fichero de configuracin /etc/snmpd.conf. En l, se pueden cambiar el valor de puerto UDP empleado por el agente, las variables systemContact, sysLocation y sysName, as como los parmetros de velocidad del interface para las tarjetas de red y los puertos PPP. Las herramientas ms importantes de gestin de este paquete son: /usr/bin/snmpget Un programa diseado para consultar un valor concreto a un agente MIB de la red (una encaminador, un hub, etc). /usr/bin/snmpgetnext Permite leer el siguiente objeto de un rbol MIB sin necesidad de conocer el nombre. /usr/bin/snmpset Una herramienta para escribir valores en los objetos de agentes remotos. /usr/bin/snmpwalk Herramienta que lee un objeto completo o una serie de objetos sin necesidad de especificar la instancia exacta. Es til para pedir objetos tipo tabla. /usr/bin/snmpnetstat /usr/bin/snmptrapd Demonio que escucha los "traps"de los agentes. /usr/bin/snmptest Herramienta interactiva diseada para demostrar las posibilidades del API. El agente se encuentra en el directorio /usr/sbin/snmpd. CMU_SNMP tambin instala un fichero MIB en /usr/lib/mib.txt. ste es un buen lugar en donde buscar qu tipo de informacin se le puede pedir a un dispositivo de red. El agente se tiene que lanzar a ejecucin cuando se pone en marcha la mquina. sto se puede hacer aadiendo el siguiente comando en alguno de los ficheros de arranque (por ejemplo en /etc/rc.f/rc.local): /usr/sbin/snmpd -f ; echo 'Arrancando snmpd' Una vez se tiene el agente SNMP en ejecucin en la mquina Linux, se puede comprobar su funcionamiento con alguna de las herramientas de gestin, por ejemplo: /usr/bin/snmpget localhost public interfaces.ifNumber.0 la cual retornar el nmero de interfaces configurados en el sistema, y: /usr/bin/snmpwalk localhost public system devuelve todos los valores en el subrbol "system" del MIB. (Vase en la Figura 2 el resultado de esta orden). Figura 2 dragon:~$ /usr/bin/snmpwalk usage: snmpwalk gateway-name community-name object-identifier dragon:~$ /usr/bin/snmpwalk localhost public system system.sysDescr.0 = "Linux version 2.0.24 (root@dragon) (gcc version 2.7.2) #6 Mon Nov 25 15:08:40 MET 1996" system.sysObjectID.0 = OID: enterprises.tubs.ibr.linuxMIB system.sysUpTime.0 = Timeticks: (39748002) 4 days, 14:24:40 system.sysContact.0 = "David Guerrero" system.sysName.0 = "dragon " system.sysLocation.0 = "Madrid (SPAIN)" system.sysServices.0 = 72 system.sysORLastChange.0 = Timeticks: (39748006) 4 days, 14:24:40 system.sysORTable.sysOREntry.sysORID.1 = OID: enterprises.tubs.ibr.linuxMIB.linuxAgents.1 system.sysORTable.sysOREntry.sysORDescr.1 = "LINUX agent" system.sysORTable.sysOREntry.sysORUpTime.1 = Timeticks: (39748007) 4 days, 14:24:40 dragon:~$ El C-API est en el directorio /lib/libsnmp.so.3.4. Se pueden ojear los ficheros de cabecera relacionados con la biblioteca en : /usr/include/snmp/snmp.h /usr/include/snmp/snmp_impl.h /usr/include/snmp/asn1.h /usr/include/snmp/snmp_api.h Se puede encontrar ms informacin en las pginas del manual snmp_api(3) y varibles(5). Existe tambin un mdulo Perl de interface con CMU C_API con el que se pueden realizar fcilmente llamadas a esta biblioteca desde programas Perl (Perl-scripts). MRTG: Multi Router Traffic Grapher MRTG es una avanzada utilidad grfica escrita por Tobias Oetiker y Dave Rand para representar grficamente los datos que los gestores SNMP leen de los agentes SNMP. Produce unas vistosas pgimas HTML con grficos GIF sobre el trfico entrante y saliente en los interfaces de red prcticamente tiempo real. Con esta herramienta se evita el tener que trabajar directamente con las utilidades CMU-SNMP mediante lnea de comandos. sta es la herramienta ms potente y fcil de utilizar que he encontrado en la Internet. MRTG utiliza una implemantacin de SNMP escrita completamente en Perl, por tanto, no es necesario instalar otros paquetes. El programa principal est escrito en "C" para acelerar el proceso de toma de muestras y la generacin de imgenes GIF. Los grficos son generados con la ayuda de la biblioteca GD escrita por Thomas Boutell, autor de la FAQ WWW. El paquete contiene algunas utilidades para analizar los interfaces de enlace, extraer sus caractersticas y generar los ficheros de configuracin base, que luego se pueden modificar para adaptarlos a las necesidades concretas. Otra caracterstica interesante del MRTG es la cantidad de informacin que produce. Permite cuatro niveles de detalle para cada interface: trfico en las ltimas 24 horas, la ltima semana, el ltimo mes y un grfico anual. sto permite recoger informacin para realizar estadsticas. Guarda toda esta informacin en una base de datos utilizando un algoritmo de consolidacin que impide que los ficheros crezcan de forma desmesurada. Tambin genera una pgina principal que contiene las imgenes GIF de los detalles diarios de cada interface del encaminador, lo que permite hacerse una idea general de qu es lo que est pasando en el encaminador con un slo vistazo. Se puede ver la pgina principal generada por MRTG en las Figuras 3 y 4. Figura 3. Interfaz de la pgina principal Figura 4. Interfaz de la pgina detallada del interface
Haz click en las figuras para verlas en grande. Veamos el procedimiento bsico de instalacin. Lo primero que se necesita es la distribucin. En el momento de escribir este artculo, la ltima versin es la 2.5.1 (est disponible en castellano (espaol) y pre- compilada); puedes encontrar la direccin URL del servidor principal al final de este artculo. Antes de comenzar la instalacin del MRTG es necesario instalar la biblioteca GD la direccin URL tambin est al final del artculo. La versin actual es la 1.2 y no deberan haber problemas en compilarla e instalarla. Sencillamente hay que ejecutar make en el directorio en el que se ha desempaquetado la distribucin y se genera como resultado el fichero llamado libgd.a. Se copia este fichero al directorio /usr/local/lib y los ficheros con extensin .h al directorio /usr/local/include/gd. En este punto el paquete GD debe estar correctamente instalado. Ahora se puede compilar el paquete MRTG. Extrae la distribucin y edita el fichero Makefile para indicar donde se encuentra la biblioteca y los archivos de cabecera de GD, as como cual es el fichero ejecutable Perl 5.003: normalmente se encuentra en /usr/bin/perl o en /usr/local/bin/perl. Construye el programa principal tecleando make rateup; cuando termine la compilacin, teclea make substitute para incluir el path correcto del interprete de Perl en los scripts de Perl que utiliza MRTG. Copia los siguientes ficheros su directorio destino final (por ejemplo: /usr/local/mrtg): BER.pm, SNMP_Session.pm, mrtg y rateup. Tambin se han de copiar en este directorio los dos ficheros de configuracin: indexmaker y cfgmaker. Asegrese que todos los programas tienen permiso de ejecucin. Ya est todo listo para crear un fichero de configuracin sencillo. Es necesario tener acceso SNMP de lectura al encaminador. Para un encaminador de la marca Cisco, las lneas de configuracin que dan permiso son: access-list 99 permit 193.147.0.8 access-list 99 permit 193.147.0.9 access-list 99 permit 193.147.0.130 snmp-server community public RO 99> Esto permite peticiones de slo lectura desde las direcciones especificadas en la lista 99, empleando la palabra clave "public" como community. Si lo que se quiere es permitir el acceso desde cualquier mquina en modo slo lectura al encaminador, entonces la lnea ha de ser la siguiente: snmp-server community public RO Si el encaminador de la red es de otra marca, entonces se ha de consultar el manual para determinar cmo permitir el acceso SNMP. El script cfgmaker simplifica mucho la tarea de construir el fichero de configuracin. Todo lo que hay que hacer es ejecutarlo con los siguientes parmetros: cfgmaker <community>@<router-host-name or IP> Por ejemplo: cfgmaker public@mec-router.rediris.es > mrtg.cfg Localizar todos los interfaces del encaminador mec-router.rediris.es y escribir una seccin en el fichero con las especificaciones del nmero de interfaces, velocidad mxima, descripcin, etc., junto con algunas etiquetas HTML para que puedan ser incluidas en la pgina detallada. Es posible editar este fichero HTML para traducirlo al idioma y preferencias propias. Se puede ver en la Figura 5 la salida de uno de los interfaces de mi encaminador. Figura 5 Target[mec-router.1]: 1:public@mec-router MaxBytes[mec-router.1]: 1250000 Title[mec-router.1]: mec-router.rediris.es (mec-router.mec.es): Ethernet0 PageTop[mec-router.1]: <H1>Estadisticas del puerto Ethernet0<BR> Red del MEC (MECNET)</H1> <TABLE> <TR><TD>System:</TD><TD>mec-router.rediris.es en RedIRIS </TD></TR> <TR><TD>Maintainer:</TD><TD>david@mec.es</TD></TR> <TR><TD>Interface:</TD><TD>Ethernet0 (1)</TD></TR> <TR><TD>IP:</TD><TD>mec-router.mec.es (193.147.0.1)</TD></TR> <TR><TD>Max Speed:</TD> <TD>1250.0 kBytes/s (ethernetCsmacd)</TD></TR> </TABLE> Ahora se puede ejecutar el programa mrtg por primera vez. Sencillamente ejecuta: ./mrtg mrtg.cfg Si todo va bien, el programa se pondr en contacto con el encaminador, pedir algunos valores y generar algunos ficheros de registro y algunos ficheros GIF en el directorio actual. No hay que sorprenderse por las quejas respecto los ficheros de registro y de grficos que no ha encontrado, esto slo sucede la primera vez que se ejecuta. Elimina los ficheros de grficos que genera y vuelve a ejecutar el programa otra vez. El grfico generado mostrar el trfico producido en el intervalo desde la ltima ejecucin del programa. Tambin genera pginas HTML para cada interface. Ahora vamos a indicarle a MRTG como ejecutarse adecuadamente en el sistema. Primero se ha de crear un directorio dentro del directorio principal del web servidor (suponiendo que en el sistema haya un servidor web en funcionamiento) para contener las pginas y grficos que MRTG generar cada vez que se ejecute. Aade este directorio en la cabecera del fichero de configuracin con la directiva WorkDir: /usr/local/web/mrtg (suponiendo que el directorio raz est situado en /usr/local/web). La prxima vez que MRTG se ejecute, crear los ficheros de registro y de grficos en este directorio, pudiendo accederse va http://your_host.domain/mrtg. Ahora vamos a construir la pgina principal para todos los interfaces como la que aparece en la Figura 3. sto se puede llevar a cabo con la utilidad indexmaker. Ejecuta: indexmaker mrtg.cfg <router-name regexp> > /usr/local/web/mrtg/index.html Se generar un documento HTML con grficos diarios de aquellos interfaces cuyo nombre de encaminador coincida con la expresin regular anterior y los enlaza con la pgina individual detallada. Como se puede imaginar, el programa MRTG se ha de ejecutar a intervalos regulares para recoger datos en cada intervalo y generar los grficos peridicamente, de forma que de la impresin de ser una monitorizacin en tiempo real. Esto se puede conseguir mediante la siguiente lnea en el fichero /etc/crontab (suponiendo /usr/local/mrtg-bin como el directorio donde reside el programa mrtg): 0,5,10,15,20,25,30,35,40,45,50,55 * * * * \ /usr/local/mrtg-bin/mrtg \ /usr/local/mrtg-bin/mrtg.cfg > \ /dev/null 2>&1 En caso de tratarse de una distribucin Red Hat, la lnea que se tendra que aadir sera: 0,5,10,15,20,25,30,35,40,45,50,55 * * * * root \ /usr/local/mrtg-bin/mrtg \ /usr/local/mrtg-bin/mrtg.cfg > \ /dev/null 2>&1 Si no se ha producido ningn problema, ahora se puede dedicar algn tiempo para acabar de configurar y ajustar la pgina ndice HTML. Una buena mejora consiste en incluir en la seccin de cabecera de esta pgina un cdigo <META .....> para obligar al visor web a recargar la informacin cada 300 segundos. Otra mejora que se puede incluir en el fichero de configuracin es la directiva WriteExpire, que fuerza a MRTG a crear ficheros ".meta" para cada fichero GIF y pgina HTML, eliminando innecesarias operaciones de "cache" tanto en los servidores proxy como en los propios visores web. Para ello tambin es necesario configurar el servidor Apache (suponiendo que sea ste el servidor) para que lea estos ficheros ".meta" y enve correctamente las cabeceras "Expire" con la directiva MetaDiren el fichero XXXX. Se pueden encontrar ms directivas en el fichero de configuracin ejemplo que viene con la distribucin; que por cierto, est muy bien documentado. Es posible modificar la disposicin de las imgenes generadas por MRTG. Espero que te guste este programa, si es as, enviarle a los autores una tarjeta; puedes encontrar su direccin en la pgina web de MRTG.