Wdrażam rozwiązanie do monitorowania sieci dla bardzo dużej sieci (około 5000 urządzeń sieciowych). Chcielibyśmy, aby wszystkie urządzenia w naszej sieci wysyłały pułapki SNMP do pojedynczego urządzenia (technicznie prawdopodobnie będzie to para urządzeń HA), a następnie aby urządzenie to przesyłało pułapki SNMP do rzeczywistych urządzeń przetwarzających. Pozwoli nam to na posiadanie wielu skrzynek zaplecza obsługujących pułapki i rozdzielenie obciążenia między te skrzynki.
Jedną z kluczowych funkcji, których potrzebujemy, jest możliwość przekazywania pułapek do określonego pudełka w zależności od adresu źródłowego pułapki. Wszelkie sugestie dotyczące najlepszego sposobu rozwiązania tego problemu?
Rozważaliśmy między innymi:
- Używanie snmptrapd do akceptowania pułapek i przekazywania ich do niestandardowego napisanego skryptu obsługi perla w celu przepisania pułapki i wysłania jej do odpowiedniego pola przetwarzania
- Korzystanie z jakiegoś oprogramowania do równoważenia obciążenia działającego na Linux-ie, aby to obsłużyć (trudności z odnalezieniem wielu programów do równoważenia obciążenia, które będą obsługiwały UDP)
- Korzystanie z urządzenia do równoważenia obciążenia (F5 itp.)
- Używanie IPTables na Linux-ie do trasowania pułapek SNMP z NATingiem
Obecnie wdrożyliśmy i testujemy ostatnie rozwiązanie, używając Linux-a z IPTables skonfigurowanymi do odbierania pułapek, a następnie, w zależności od adresu źródłowego pułapki, przepisz go docelowym nat (DNAT), aby pakiet został wysłany do właściwy serwer. Na przykład:
# 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
Powinno to działać z doskonałą wydajnością dla podstawowego routingu pułapek, ale pozostawia nas całkowicie ograniczone do tego, co możemy obrabiać i filtrować za pomocą IPTables, dlatego martwimy się o elastyczność na przyszłość.
Inną funkcją, która naprawdę nam się podoba, ale nie jest „koniecznością”, jest możliwość duplikowania lub dublowania pakietów UDP. Bardzo przydatna byłaby możliwość wzięcia jednej przychodzącej pułapki i skierowania jej do wielu miejsc docelowych.
Czy ktoś wypróbował dowolne z powyższych rozwiązań równoważenia obciążeń SNMP (lub Netflow, ogólne UDP itp.)? Czy ktoś może wymyślić inne alternatywy, aby rozwiązać ten problem?