Sto implementando una soluzione di monitoraggio della rete per una rete molto grande (circa 5000 dispositivi di rete). Vorremmo avere tutti i dispositivi sulla nostra rete che inviano trap SNMP a una singola scatola (tecnicamente questa sarà probabilmente una coppia di scatole HA) e quindi fare in modo che quella scatola passi le trap SNMP alle scatole di elaborazione reali. Questo ci consentirà di avere più scatole back-end che gestiscono trappole e di distribuire il carico tra quelle scatole back-end.
Una caratteristica chiave di cui abbiamo bisogno è la possibilità di inoltrare le trap a una casella specifica in base all'indirizzo di origine della trap. Qualche suggerimento per il modo migliore di gestirlo?
Tra le cose che abbiamo considerato sono:
- Utilizzo di snmptrapd per accettare le trap e farle passare a uno script di gestore perl scritto personalizzato per riscrivere la trap e inviarla alla casella di elaborazione appropriata
- Utilizzando una sorta di software di bilanciamento del carico in esecuzione su una scatola Linux per gestire questo (avendo qualche difficoltà a trovare molti programmi di bilanciamento del carico che gestiranno UDP)
- Utilizzo di un dispositivo di bilanciamento del carico (F5, ecc.)
- Utilizzo di IPTables su un box Linux per instradare le trap SNMP con NATing
Al momento abbiamo implementato e stiamo testando l'ultima soluzione, con una scatola Linux con IPTables configurata per ricevere le trap, quindi, a seconda dell'indirizzo di origine della trap, riscriverla con un nat nat (DNAT) in modo che il pacchetto venga inviato a il server corretto. Per esempio:
# 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
Questo dovrebbe funzionare con un'eccellente efficienza per il routing delle trap di base, ma ci lascia completamente limitati a ciò che possiamo manipolare e filtrare con IPTables, quindi siamo preoccupati per la flessibilità per il futuro.
Un'altra caratteristica che vorremmo davvero , ma non è assolutamente un "must have" è la possibilità di duplicare o duplicare i pacchetti UDP. Essere in grado di prendere una trappola in arrivo e instradarla verso più destinazioni sarebbe molto utile.
Qualcuno ha provato una delle possibili soluzioni sopra per il bilanciamento del carico di trap SNMP (o Netflow, UDP generale, ecc.)? O qualcuno può pensare ad altre alternative per risolvere questo?