Ich implementiere eine Netzwerküberwachungslösung für ein sehr großes Netzwerk (ca. 5000 Netzwerkgeräte). Wir möchten, dass alle Geräte in unserem Netzwerk SNMP-Traps an eine einzelne Box senden (technisch handelt es sich wahrscheinlich um ein HA-Paar von Boxen) und diese Box die SNMP-Traps dann an die realen Verarbeitungsboxen weiterleiten lässt. Auf diese Weise können mehrere Back-End-Boxen Fallen verwalten und die Last auf diese Back-End-Boxen verteilen.
Eine wichtige Funktion, die wir benötigen, ist die Möglichkeit, die Traps abhängig von der Quelladresse der Trap an eine bestimmte Box weiterzuleiten. Irgendwelche Vorschläge, wie Sie am besten damit umgehen können?
Unter den Dingen, die wir betrachtet haben, sind:
- Verwenden Sie snmptrapd, um die Traps zu akzeptieren, und geben Sie sie an ein benutzerdefiniertes Perl-Handler-Skript weiter, um die Trap neu zu schreiben und an die richtige Verarbeitungsbox zu senden
- Verwenden einer Art von Lastausgleichs-Software, die auf einer Linux-Box ausgeführt wird, um dies zu handhaben (es gibt einige Schwierigkeiten, viele Lastausgleichsprogramme zu finden, die mit UDP umgehen können)
- Verwenden einer Load Balancing-Appliance (F5 usw.)
- Verwenden von IPTables auf einer Linux-Box zum Weiterleiten der SNMP-Traps mit NAT
Wir haben die letzte Lösung derzeit implementiert und testen sie mit einer Linux-Box mit IPTables, die für den Empfang der Traps konfiguriert ist, und schreiben sie dann abhängig von der Quelladresse der Traps mit einem Ziel-Nat (DNAT) neu, damit das Paket gesendet wird der richtige Server. Beispielsweise:
# 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
Dies sollte für das grundlegende Trap-Routing mit hervorragender Effizienz funktionieren, lässt uns jedoch völlig auf das beschränkt, was wir mit IPTables bearbeiten und filtern können, sodass wir uns Sorgen um die Flexibilität für die Zukunft machen.
Ein weiteres Merkmal , dass wir würden wirklich wie, ist aber nicht ganz ein „must have“ ist die Fähigkeit , die UDP - Pakete zu duplizieren oder zu spiegeln. In der Lage zu sein, eine eingehende Falle zu nehmen und sie an mehrere Ziele weiterzuleiten, wäre sehr nützlich.
Hat jemand eine der oben genannten möglichen Lösungen für SNMP-Traps (oder Netflow, allgemeines UDP usw.) für den Lastenausgleich ausprobiert? Oder kann sich jemand andere Alternativen vorstellen, um dies zu lösen?