Gerenciando redes com Perl e SNMP

Muitas empresas utilizam softwares de código aberto nas mais diversas atividades. Em minha carreira deparei-me com sistemas de gerência de rede que não atendiam as necessidades do cliente. Minha intenção aqui é demonstrar de forma prática como o SNMP funciona, como entender as MIBs e principalmente, como usar o Perl para melhorar os sistemas de gerência, ou mesmo, criar o seu próprio.

[ Hits: 49.992 ]

Por: Perfil removido em 23/03/2010


Legal! E como eu faço para minha rede responder ao protocolo SNMP?



Os elementos que se deseja gerenciar com SNMP devem ter um daemon ou serviço que responda as queries enviadas pelo software de gerência. Elementos de rede como switches, impressoras e roteadores precisam ter o SNMP implementado no firmware e habilitado via configuração. Elementos de fabricantes diferentes possuem formas diferenciadas para habilitar o Agente SNMP, portanto não irei abordar isto aqui. A figura abaixo mostra as opções de configuração SNMP em um roteador CISCO:
Linux: Gerenciando redes com Perl e SNMP
A primeira escolha a ser feita para iniciar a gerencia de uma rede com SNMP é o que será gerenciado. Quais elementos da sua rede - roteadores, switches, servidores, no-breaks ou máquinas de usuários - e quais objetos da MIB serão monitorados ou configurados - estado da interface, temperatura, softwares instalados, tensão da fonte. Esta escolha depende do tipo de informação, disponibilidade e equipamentos sob sua responsabilidade.

A segunda escolha será como gerenciar os elementos. Irei usar "traps" ou enviar comandos "get"? Ou ambos? Se queremos informações de mudanças na rede que necessitamos conhecer no momento do evento é interessante utilizarmos um "trap" ou um "notification" (ver abaixo). Se eu desejo verificar que as configurações estão de acordo com um padrão eu poderei usar um "get".

Se eu desejo poder configurar meus elementos via SNMP posso usar o "set". Dentro desta escolha temos mais uma pergunta: Existe um software no mercado que contemple minha necessidade ou terei de criar esta solução? Tenho verba para adquiri-lo ou será melhor desenvolver uma solução caseira e economizar alguns dólares, tão raros nos anos de crise? Existe o sistema gratuito Net-SNMP, em http://net-snmp.sourceforge.net. É uma opção gratuita para gerencia SNMP que oferece bibliotecas para desenvolvimento em C, Perl e Python.

A terceira escolha diz respeito à versão do SNMP que iremos adotar. SNMPv1, SNMPv2 ou SNMPv3. O SNMPv3 é o único que tem autenticação de usuário criptografada. O SNMPv1 e SNMPv2 enviam a "community" de autenticação em texto puro pela rede, o que é considerado inseguro pois a mesma pode ser obtida por um equipamento promíscuo na rede. Community, em SNMP, nada mais é que uma senha de autenticação. O SNMPv2 possuí mais opções de comando em relação ao SNMPv1. A tabela abaixo apresenta os comandos que podem ser executados por cada versão do SNMP:

ComandoVersãoO que faz?
gettodasRetorna o valor de um Objeto no element de rede.
getnexttodasPermite obter os OIDs dentro de um nível da arquitetura. É utilizado juntamente com o getresponse.
getresponsetodasrealiza um get no OID definido pelo getnext.
traptodasO trap é enviado do elemento da rede para o sistema de gerência a fim de informar mudanças em algum objeto monitorado.
settodasPermite editar valores em propriedades gerenciadas via SNMP.
getbulkSNMPv2 e SNMPv3Permite receber todos os valores de um objeto que representa uma tabela. Um exemplo deste tipo de objeto é iso.org.dod.internet.mgmt.mib-2.interfaces.ifTable.
informSNMPv2 e SNMPv3Funcionamento idêntico ao trap.
notificationSNMPv2 e SNMPv3Funcionamento idêntico ao trap porém gera uma resposta do software da gerência para o elemento afim de confirmar o recebimento da notificação.
reportSNMPv2 e SNMPv3Não implementada.


Apesar da melhor segurança oferecida pelo SNMPv3 a maioria das implementações SNMP em uso hoje utiliza a versão 2 do protocolo.

Página anterior     Próxima página

Páginas do artigo
   1. Gerenciando a rede com Perl e SNMP
   2. O que você deve saber sobre MIBs
   3. Legal! E como eu faço para minha rede responder ao protocolo SNMP?
   4. Criando uma solução SNMP personalizada com o Perl
   5. Moral da história...
Outros artigos deste autor

Slitaz Linux, uma distro pequena mas...

Instalação OpenMeettings no Debian 7

Utilizando GMail (Google Mail) em seu cliente de email favorito

Turck MMcache completo e sem mistérios

Qual distribuibuição GNU/Linux devo utilizar?

Leitura recomendada

Manipulação de sockets em Perl usando o IO::Socket::INET

Enviando notificações do Nagios para o MSN

Instalação de MRTG em ambiente Windows

Impressão remota via WEB

Catalyst Framework Perl (parte 1)

  
Comentários
[1] Comentário enviado por removido em 23/03/2010 - 09:37h

Se tiver dúvidas ou comentários pode me enviar um e-mail: thiago@nerdsland.net
Estamos às ordens!

[2] Comentário enviado por irado em 24/03/2010 - 17:55h

caramba, um artigo de fôlego, muito bem explicado. Parabéns, thiago.
ps: vou tomar coragem e experimentar - risos.

[3] Comentário enviado por removido em 24/03/2010 - 21:15h

Escrever também me deixou um pouco sem folego. Mas o feedback das pessoas tem sido positivo.
Muito obrigado.

[4] Comentário enviado por juniomundo em 25/03/2010 - 00:32h

Muito obrigado Thiago, foi de grande valia. Paz e saúde pra ti.

[5] Comentário enviado por removido em 25/03/2010 - 05:01h

Muito obrigado Júnio. É sempre um prazer ajudar.

[6] Comentário enviado por alexandre035 em 18/06/2011 - 15:35h

Excelente.

[7] Comentário enviado por j3f1nh0 em 21/09/2012 - 14:30h

Pow cara, muito bom! Meu ajudou muito para o meu TCC!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts