Я внедряю решение для мониторинга сети для очень большой сети (около 5000 сетевых устройств). Мы хотели бы, чтобы все устройства в нашей сети отправляли ловушки SNMP в один ящик (технически это, вероятно, будет пара блоков HA), а затем передавали этот ловушку SNMP ловушкам в реальные блоки обработки. Это позволит нам иметь несколько внутренних блоков, обрабатывающих ловушки, и распределять нагрузку между этими внутренними блоками.
Одна ключевая особенность, которая нам нужна, - это возможность пересылать ловушки в конкретный ящик в зависимости от исходного адреса ловушки. Любые предложения для лучшего способа справиться с этим?
Среди вещей, которые мы рассмотрели:
- Использование snmptrapd для принятия ловушек и передачи их в специальный сценарий обработчика perl, чтобы переписать ловушку и отправить ее в соответствующий блок обработки
- Для этого используется какое-то программное обеспечение для балансировки нагрузки, работающее на Linux, (возникают трудности с поиском многих программ балансировки нагрузки, которые будут обрабатывать UDP)
- Использование устройства балансировки нагрузки (F5 и т. Д.)
- Использование IPTables на Linux-боксе для маршрутизации SNMP-ловушек с NATing
В настоящее время мы внедрили и тестируем последнее решение. Ящик Linux с IPTables настроен на прием прерываний, а затем, в зависимости от исходного адреса прерывания, переписывает его с помощью 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
Это должно работать с превосходной эффективностью для базовой маршрутизации ловушек, но оставляет нас полностью ограниченными тем, что мы можем обработать и отфильтровать с помощью IPTables, поэтому мы обеспокоены гибкостью в будущем.
Еще одна особенность, которая нам действительно нравится, но не является обязательной, - это возможность дублировать или отражать UDP-пакеты. Было бы очень полезно иметь возможность взять одну входящую ловушку и направить ее по нескольким направлениям.
Кто-нибудь пробовал какое-либо из приведенных выше решений для балансировки нагрузки SNMP-ловушек (или Netflow, общего UDP и т. Д.)? Или кто-нибудь может придумать другие альтернативы, чтобы решить эту проблему?