Читать...
Как выяснилось, фревый ng_netflow умеет экспортировать flow'ы только в 5ю версию.
То есть, это
а) статичный набор полей и
б) поддержка только IPv4.
Необходимый нам IPv6 (и кучу других всяких вкусностей) умеет netflow версии 9. Протокол открыт, прост и позволяет передать достаточно много информации (свои поля в flow'ах, помимо большого списка стандартных полей, вообще произвольные вещи типа состояния коллектора и информации о системе). Как оказалось в процессе реализации экспорта - его абсолютно нормально умеет парсить wireshark, но не умеют ни в каком виде популярные flow-tools. Поэтому для отладки пришлось пользоваться flowd - маленьким секьюрным демоном, живущим в портах.
Несколько сложнее пришлось с собственно IPv6 - если в IPv4 длину заголовка можно посчитать на основании полей, находящихся практически в начале заголовка, то в IPv6 перед собственно upper layer header может быть (практически) произвольное количество разных extended заголовков (куда вынеслись опции фрагментации, IP, роутинга и шифрования) разной длины. "Прыжки" же по заголовкам осложняет то, что никто не обещает, что данные следующего заголовка живут в этом же mbuf (т.е. в этом же блоке памяти).
В результате: первый кое-как рабочий патч доступен для 7.2 и -current разлива этого месяца.
Добавленные control messages:
Версия экспорта: setversion { version=X }. 5я или 9я (по умолчанию)
MTU у интерфейса, куда льем netflow:
setmtu { mtu=X }. 1500 по умолчанию, на данный момент допустимо не больше 2000
Требования по настройке условий анонса шаблонов данных из RFC:
settemplateperiodic { time=X packets=Y }. Шлем шаблоны каждые X секунд или же Y пакетов. 10 минут и 500 пакетов по умолчанию
В планах допилить патч, перенести на все продакшены и попробовать пропихнуть в базу. Посмотрим, что получится.
0 comments:
Post a Comment