Principe
SNMP (Simple Network Management Protocol) est un protocole permettant d'interagir avec des équipements réseau. À Grenode, il sert principalement à remonter des informations jusqu'à gaffe, pour surveiller et monitorer les systèmes de Grenode et/ou de ses membres.
Certains membres (le besoin est apparu en premier chez Rézine pour ne pas les nommer) ont eu le besoin d'interroger des équipements via snmp pour remonter des informations, mais ces équipements ne sont pas directement accessibles depuis gaffe.
La solution décrite ici pour remédier à ce problème consiste à faire transiter les requêtes snmp via une machine passerelle (entre gaffe et les équipements à surveiller) qui fait alors office de serveur mandataire pour le snmp.
Mise en œuvre
Installation de paquets
Sur le serveur faisant office de relai, il faut installer snmpd (par exemple sur debian) :
apt-get install snmpd
Configuration
Base snmpd
Dans le cas où le serveur relai n'est pas déjà utilisé pour répondre à des requêtes snmp, la configuration peut être tout à fait minimale. Les deux lignes suivantes définissent l'adresse d'écoute, ainsi que la communauté snmp (en lecture seule) par défaut :
agentAddress udp:161,udp6:[::1]:161
rocommunity grenode default
Si le serveur snmpd est déjà configuré, passer au point suivant.
Proxy snmp
On configure alors le proxy snmp :
Créer une vue (proxyview) qui permettra d'inclure tout ce qui est sous l'OID .1.3.6.1 :
view proxyview included .1.3.6.1
Autoriser ProxyUser sur la communauté utilisée (cf. ci-dessus) :
com2sec ProxyUser default grenode
Créer un groupe ProxyGroup et y affecter ProxyUser :
group ProxyGroup v1 ProxyUser group ProxyGroup v2c ProxyUser
Autoriser ProxyGroup à accéder aux objets de la vue proxyview :
access ProxyGroup "" any noauth exact proxyview none none
Pour chaque équipement vers lequel on relaie, il faut définir un contexte et une communauté (le contexte se définit avec le -Cn, le dernier champ définit la communauté qu'il faudra demander au proxy snmp lors d'une interrogation) :
com2sec -Cn rtr-marteau ProxyUser default marteau com2sec -Cn rtr-rabot ProxyUser default rabot com2sec -Cn rtr-scie ProxyUser default scie
Autoriser ProxyGroup à accéder aux contextes commençant par rtr (noter le
prefix
pour stipuler « tout ce qui commence par ») :access ProxyGroup rtr any noauth prefix proxyview none none
Enfin, faire correspondre le contexte à la communauté utilisée sur l'équipement distant (on suppose public ici), en spécifiant son IP ou nom de domaine :
proxy -Cn rtr-marteau -v 2c -c public 10.10.0.254 .1.3 proxy -Cn rtr-rabot -v 2c -c public 10.10.1.254 .1.3 proxy -Cn rtr-scie -v 2c -c public 10.10.2.254 .1.3
Tests
On peut alors récupérer l'arborescence snmp du routeur marteau :
snmpwalk -v2c -c marteau <nom du relai snmp>
ou obtenir un item spécifique en spécifiant un OID (.1.3.6.1.2.1.1.1.0 est
l'OID contenant l'équivalent de uname -a
sur GNU/Linux) :
snmpwalk -v2c -c rabot <nom du relai snmp> .1.3.6.1.2.1.1.1.0
snmpget -v2c -c scie <nom du relai snmp> .1.3.6.1.2.1.1.1.0