Introdução
É interessante observar como existem perguntas que são feitas repetidamente. Enquanto é muito mais fácil assumir que “quem pergunta não sabe perguntar” ou “não entende a resposta”, por outro lado a frequência da pergunta pode indicar que a resposta não é boa. No meu ponto de vista, isto acontece com o Net-SNMP. Existem muitas fontes de informação, em geral dispersas. Vários detalhes são respondidos via código fonte apenas, o que pode atrapalhar também. Associe isto a um assunto com jargão e conceitos próprios e tudo fica ainda mais complexo.
Foi pensando neste cenário que resolvi escrever um tutorial de como iniciar com o Net-SNMP. Não quero publicar um monte de código fonte, como geralmente encontramos por aí. Quero discutir os princípios envolvidos e levar o leitor para um ponto de entendimento verdadeiro, não um mero digitador de tutorial, um escriba digital. É uma meta audaciosa, daí o título pretensioso da série. No entanto, como já consegui realizá-la em outros tutoriais, como o super referenciado tutorial de “VLAN em Linux” ou sobre a série “criação de um RTOS”, acredito que posso conseguir novamente. Contarei com a ajuda do meu amigo Alan Carvalho como revisor desta série. Como ambos já implementamos equipamentos com Net-SNMP, pode ser uma boa chance de diminuir possíveis erros.
Uma observação final: não espere encontrar tudo sobre SNMP nesta introdução. Na verdade, o objetivo é justamente o inverso: espere encontrar apenas o necessário para conseguir entender o próximo post. A ideia é ir aumentando o conhecimento de forma gradual, omitindo detalhes que podem apenas tornar o primeiro passo mais difícil. Livros e RFCs podem ajudar a refinar os conceitos quando você decidir que é realmente a hora ou precisar de algo mais avançado.
O que é o SNMP ?
A tradução livre de SNMP (Simple Network Management Protocol) pode ser Protocolo Simples de Gerenciamento de Rede [1]. Como o nome indica, ele foi criado com o foco em gerência de rede, permitindo avaliar e monitorizar, em tempo real, as condições de switches, roteadores, impressoras, entre outros. O SNMP foi criado pelo IETF (Internet Engineering Task Force), sendo normatizado através de vários RFC (Request For Comments), cada um descrevendo aspectos particulares do protocolo e da sua implementação, sendo que os mais antigos datam de 1990. Ao final do texto existe uma lista de RFCs relacionados ao SNMP.
O SNMP não segue sempre o paradigma cliente/servidor e gera um jargão próprio para denominar os seus elementos. Em geral, os elementos envolvidos com o SNMP se dividem em “managed devices” (dispositivos gerenciados) e “managers” (gerentes). Os dispositivos gerenciados executam Agentes (agents, em inglês) que se comunicam com os Sistemas de Gestão de Redes (Network-Management Systems, em inglês).
Esta comunicação, na maior parte do tempo é cliente/servidor, com o sistema de gestão (cliente) pedindo ou enviando informações para o agente (servidor). Por exemplo, existem comandos como GET, usado para pedir uma informação, ou SET, usado para enviar um novo valor de informação.
No entanto, o agente pode também enviar informações para o sistema de gestão, sem que este tenha requisitado, agindo como cliente e este último como servidor, neste caso. Esta é uma situação comum para envio de alarmes, denominados traps, em inglês. O seu roteador poderia ser configurado para enviar um alarme quando a taxa de utilização do link atingisse um determinado valor, por exemplo, sem que o manager fizesse uma requisição explícita.
Na figura a seguir temos um exemplo da comunicação entre um manager (executando num servidor) e de um agente, rodando num switch. Fluxos do tipo cliente/servidor e trap estão representados.
Versões do SNMP
O SNMP vem sempre evoluindo, agregando mais segurança e funcionalidades com o decorrer do tempo. No entanto, características sofisticadas de segurança só são encontradas na versão mais recente, infelizmente nem tão utilizada como as versões anteriores. De forma rápida, as versões estão listadas a seguir [3]:
- SNMP Version 1 (SNMPv1): versão inicial, definida no RFC 1157 e grandemente suportada. Pouco segura por usar passwords em texto puro.
- SNMP version 2 (SNMPv2): devinida nos RFC 3416, 3417 e 3418 e conhecida como SNMPv2c (c de community), com categorias de acesso ao agente definidas como “comunidades”.
- SNMP version 3 (SNMPv3), com grandes melhorias em segurança, tais como autenticação, criptografia, etc. Definida através de vários RFCs: 3410, 3411, 3412, 3413, 3414, 3415, 3416, 3417, 3418 e 2576. Ainda relativamente pouco usada.
O que é o Net-SNMP ?
O Net-SNMP é um grande projeto de fonte aberta iniciado em 1992 e responsável por um conjunto de programas usados para a implementação das várias versões do SNMP e com suporte a IPv4 e IPv6. Licenciado por licenças que se assemelham a BSD (existem algumas pequenas variações), o Net-SNMP pode ser executado em vários sistemas Unix, Linux e até mesmo Windows. Será através da infraestrutura do Net-SNMP que desenvolveremos todos os nossos exemplos.
Está bom por hoje. No próximo post, vamos discutir mais alguns conceitos, como MIBs e OIDs. Você pode me seguir no twitter para receber notificações dos futuros posts desta série através do usuário @marcelobarros. Até lá !
Referências:
[1] SNMP: detalhes técnicos, RFCs, etc: http://en.wikipedia.org/wiki/Simple_Network_Management_Protocol
[2] Net-SNMP: http://www.net-snmp.org/
[3] Essential SNMP, 2nd Edition, Douglas Mauro, Kevin Schmidt, Editora O’Reilly
