SwordArMor

Proxy SNMP pour une table précise (ifAlias)

État des lieux

Sous FreeBSD nous avons le choix entre deux implémentations SNMP : bsnmp et le classique net-snmp. Le premier a des soucis sur les modèles de CPU et ne remonte pas les IPv6 des interfaces, alors que le second ne remonte pas la description des interfaces.
En clair, on a le choix entre la peste et le choléra.

Façon propre de résoudre le souci

Une bonne chose aurait été de patcher le code de net-snmp pour remonter les descriptions comme il faut. Mais, je ne sais pas programmer, surtout pas en C, et je n’ai pas le temps (ni vraiment l’envie) d’apprendre.

Façon pragmatique de résoudre le souci

Donc, j’ai choisi de faire autrement : laisser net-snmp sur le port standard, et proxéiser la table ifAlias vers bsnmp.

Configuration de bsnmp

Commençons par configurer correctement notre bsnmp, cela se passe dans /etc/snmpd.config.

read := "public"				# communauté publique en lecture
begemotSnmpdPortStatus.127.0.0.1.1161 = 1	# écoute sur localhost:1161

Maintenant, nous pouvons bien récupérer notre description depuis bsnmp :

root@budic:~ # snmpwalk -v2c -c public localhost:1161 ifAlias.6
IF-MIB::ifAlias.6 = STRING: Transit: Quantic

Configuration de net-snmp

Maintenant, il faut dire à net-snmp d’aller interroger bsnmp pour la table ifAlias. Pour cela, nous utilisons la directive proxy :

proxy -v 2c -c public localhost:1161 .1.3.6.1.2.1.31.1.1.1.18

Et maintenant, .1.3.6.1.2.1.31.1.1.1.18 (soit ifAlias) est redirigé vers bsnmp, et nous pouvons le vérifier :

alarig@conan ~ $ snmpwalk -v2c -c public budic.grif ifAlias.6
IF-MIB::ifAlias.6 = STRING: Transit: Quantic
alarig@conan ~ $ snmpwalk -On -v2c -c public budic.grif ifAlias.6
.1.3.6.1.2.1.31.1.1.1.18.6 = STRING: Transit: Quantic