J'implémente une solution de surveillance réseau pour un très grand réseau (environ 5000 périphériques réseau). Nous aimerions que tous les appareils de notre réseau envoient des interruptions SNMP à une seule boîte (techniquement, ce sera probablement une paire de boîtes HA), puis que cette boîte transmette les interruptions SNMP aux vraies boîtes de traitement. Cela nous permettra d'avoir plusieurs boîtiers dorsaux manipulant des pièges et de répartir la charge entre ces boîtiers dorsaux.
Une fonctionnalité clé dont nous avons besoin est la possibilité de transmettre les pièges à une boîte spécifique en fonction de l'adresse source du piège. Des suggestions sur la meilleure façon de gérer cela?
Nous avons notamment envisagé:
- Utilisation de snmptrapd pour accepter les interruptions et les faire passer à un script de gestionnaire perl écrit personnalisé pour réécrire l'interruption et l'envoyer dans la boîte de traitement appropriée
- Utiliser une sorte de logiciel d'équilibrage de charge fonctionnant sur une boîte Linux pour gérer cela (avoir du mal à trouver de nombreux programmes d'équilibrage de charge qui géreront UDP)
- Utilisation d'un dispositif d'équilibrage de charge (F5, etc.)
- Utilisation d'IPTables sur une boîte Linux pour router les pièges SNMP avec NATing
Nous avons actuellement implémenté et testons la dernière solution, avec une boîte Linux avec IPTables configurée pour recevoir les interruptions, puis en fonction de l'adresse source de l'interruption, réécrivez-la avec une destination nat (DNAT) pour que le paquet soit envoyé à le bon serveur. Par exemple:
# Range: 10.0.0.0/19 Site: abc01 Destination: foo01
iptables -t nat -A PREROUTING -p udp --dport 162 -s 10.0.0.0/19 -j DNAT --to-destination 10.1.2.3
# Range: 10.0.33.0/21 Site: abc01 Destination: foo01
iptables -t nat -A PREROUTING -p udp --dport 162 -s 10.0.33.0/21 -j DNAT --to-destination 10.1.2.3
# Range: 10.1.0.0/16 Site: xyz01 Destination: bar01
iptables -t nat -A PREROUTING -p udp --dport 162 -s 10.1.0.0/16 -j DNAT --to-destination 10.3.2.1
Cela devrait fonctionner avec une excellente efficacité pour le routage de piège de base, mais cela nous laisse complètement limités à ce que nous pouvons mach et filtrer avec IPTables, nous sommes donc préoccupés par la flexibilité pour l'avenir.
Une autre fonctionnalité que nous aimerions vraiment , mais qui n'est pas tout à fait un "must have" est la possibilité de dupliquer ou de refléter les paquets UDP. Être capable de prendre un piège entrant et de l'acheminer vers plusieurs destinations serait très utile.
Quelqu'un a-t-il essayé l'une des solutions possibles ci-dessus pour les interruptions SNMP (ou Netflow, UDP général, etc.)? Ou peut-on penser à d'autres alternatives pour résoudre ce problème?