매우 큰 네트워크 (약 5000 개의 네트워크 장치)에 대한 네트워크 모니터링 솔루션을 구현하고 있습니다. 네트워크의 모든 장치가 SNMP 트랩을 단일 상자 (기술적으로이 상자는 HA 상자 일 것임)로 전송 한 다음 해당 상자가 SNMP 트랩을 실제 처리 상자로 전달하도록하고 싶습니다. 이를 통해 트랩을 처리하는 백엔드 박스를 여러 개 보유하고 백엔드 박스간에 부하를 분산시킬 수 있습니다.
필요한 주요 기능 중 하나는 트랩의 소스 주소에 따라 트랩을 특정 상자로 전달하는 기능입니다. 이것을 처리하는 가장 좋은 방법에 대한 제안 사항이 있습니까?
고려한 사항은 다음과 같습니다.
- snmptrapd를 사용하여 트랩을 승인하고 사용자 정의 작성된 Perl 핸들러 스크립트로 전달하여 트랩을 다시 작성하고 적절한 처리 상자로 보내도록하십시오.
- Linux 박스에서 실행되는 일종의로드 밸런싱 소프트웨어를 사용하여이를 처리 (UDP를 처리 할 많은로드 밸런싱 프로그램을 찾는 데 어려움이 있음)
- 부하 분산 장치 (F5 등) 사용
- Linux 상자에서 IPTables를 사용하여 NAT를 사용하여 SNMP 트랩 라우팅
우리는 현재 트랩을 수신하도록 구성된 IPTables가있는 Linux 상자를 사용하여 마지막 솔루션을 구현하고 테스트 한 다음 트랩의 소스 주소에 따라 대상 NAT (DNAT)로 다시 작성하여 패킷을 전송합니다. 적절한 서버. 예를 들면 다음과 같습니다.
# 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
이것은 기본적인 트랩 라우팅을위한 탁월한 효율성으로 작동해야하지만 IPTable을 사용하여 필터링 및 필터링 할 수있는 기능으로 완전히 제한되므로 미래의 유연성에 대해 우려하고 있습니다.
우리가 정말로 원 하지만 "필수 사항"이 아닌 다른 기능 은 UDP 패킷을 복제하거나 미러링하는 기능입니다. 하나의 수신 트랩을 가져 와서 여러 대상으로 라우팅 할 수 있으면 매우 유용합니다.
SNMP 트랩 (또는 Netflow, 일반 UDP 등)로드 밸런싱에 대해 위의 가능한 솔루션을 시도한 사람이 있습니까? 아니면 누구든지 이것을 해결할 다른 대안을 생각할 수 있습니까?