@bashkirian

Как написать Netflow сенсор с нуля?

Я пытаюсь понять, как написать сенсор Netflow версии 9 с нуля. Задача состоит в том, чтобы написать программу на языке C, которая:
1. Принимает два аргумента: имя интерфейса и ip:port коллектора Netflow (в моем случае я использую nfacpd)
2. Определяет потоки и отправляет их коллектору
Я уже написал программу, которая собирает udp, tcp, icmp и другие пакеты с заданного интерфейса, используя raw socket. Проблема в том, как мне модифицировать мою программу, чтобы она могла определять потоки и корректно отправлять их коллектору? Какие структуры я должен добавить в свою программу? Может быть, я должен использовать какие-то фреймворки, чтобы облегчить свою задачу?

Заранее спасибо.
  • Вопрос задан
  • 171 просмотр
Пригласить эксперта
Ответы на вопрос 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
как мне модифицировать мою программу, чтобы она могла определять потоки и корректно отправлять их коллектору?

Для этого тебе надо понять, что такое "потоки" о которых ты говоришь, где находится информация о принадлежности пакета потоку и как до неё добираться.

Если ограничиться определением по ссылке, то тебе надо будет разбирать сырые пакеты до сетевого уровня, откидывать не-IP, из IP извлекать IP-протокол, адрес источника, адрес назначения и тип сервиса, для протоколов TCP и UDP дополнительно извлекать порт источника и порт назначения. Всё это довольно просто сделать самому вооружившись RFC по упомянутым протоколам. Также надо будет понять, что делать с фрагментированными IP-пакетами.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы