Estoy implementando una solución de monitoreo de red para una red muy grande (aproximadamente 5000 dispositivos de red). Nos gustaría que todos los dispositivos de nuestra red envíen trampas SNMP a una sola caja (técnicamente, esto probablemente sea un par de cajas HA) y luego que esa caja pase las trampas SNMP a las cajas de procesamiento reales. Esto nos permitirá tener múltiples trampas de manejo de cajas de back-end y distribuir la carga entre esas cajas de back-end.
Una característica clave que necesitamos es la capacidad de reenviar las trampas a un cuadro específico dependiendo de la dirección de origen de la trampa. ¿Alguna sugerencia sobre la mejor manera de manejar esto?
Entre las cosas que hemos considerado están:
- Usar snmptrapd para aceptar las trampas y hacer que las pase a un script de controlador perl escrito personalizado para reescribir la trampa y enviarla al cuadro de procesamiento adecuado
- Usar algún tipo de software de equilibrio de carga que se ejecute en una caja de Linux para manejar esto (teniendo algunas dificultades para encontrar muchos programas de equilibrio de carga que manejen UDP)
- Uso de un dispositivo de equilibrio de carga (F5, etc.)
- Uso de IPTables en un cuadro de Linux para enrutar las trampas SNMP con NATing
Actualmente hemos implementado y estamos probando la última solución, con una caja de Linux con IPTables configuradas para recibir las trampas, y luego, dependiendo de la dirección de origen de la trampa, reescribirla con un destino nat (DNAT) para que el paquete se envíe a El servidor adecuado. Por ejemplo:
# 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
Esto debería funcionar con una excelente eficiencia para el enrutamiento de trampa básico, pero nos deja completamente limitados a lo que podemos mecanizar y filtrar con IPTables, por lo que nos preocupa la flexibilidad para el futuro.
Otra característica que realmente nos gustaría , pero que no es "imprescindible", es la capacidad de duplicar o duplicar los paquetes UDP. Sería muy útil poder tomar una trampa entrante y dirigirla a múltiples destinos.
¿Alguien ha intentado alguna de las posibles soluciones anteriores para el equilibrio de carga de trampas SNMP (o Netflow, UDP general, etc.)? ¿O alguien puede pensar en alguna otra alternativa para resolver esto?