Monday, July 24th, 2017

Сбор статистики во FreeBSD через запуск ng_ipacct

Published on Март 30, 2009 by   ·   Комментариев нет

Статья не будет описывать опции ядра, его компиляцию, пошаговую
установку системы и прочих мелочей которые нужны для того чтоб начать
установку ng_ipacct.

Поскольку сам я не люблю мегабайтные конфиги то предложу свой вариант
запуска ipacct-а

И так, начнем:

Задача — начать сбор статистики как можно быстрее.

Что имеем — FreeBSD 6.4, пара сетевых карт em0, em1, ядро собранное с
поддержкой netgraph — options NETGAPH, свежие порты, вкомпилированный ipfw и
наверное всё.

Первое что делаем — ставим ng_ipacct:

        cd /usr/ports/net-mgmt/ng_ipacct
        make install

если на машине присутствует интернет (я обычно это проверяю ping
www.ru), то проблем с установкой появиться не должно, иначе учимся
ставить систему.

после установки в /usr/local/etc/rc.d/ и /usr/local/etc/ появляется
скрипты, находим их и убиваем, любопытные могут посмотреть что там
внутри :) я же в чужие скрипты зарекся лазить.

теперь на нашей машинке есть ng_ipacct, не знаю почему, но в мане информации по
нему не появилось, разбираться лениво, все что мне нужно было — я нашел
прямо в порте, советую посмотреть и вам, файлик ipacctctl.8

т.к. мне нужно забирать статистику не только с физического интерфейса em0, то
я принял решение перенаправлять необходимый для подсчета трафик с ipfw в
нетграф, т.е. по аналогии с простым дивертом

подгружаем необходимые модули в ядро

        kldload ng_ipfw  #модуль для передачи трафика с ipfw в нетграф
        kldload ng_ipacct #собственно сам ipacct
        kldload ng_tee #модуль для копирования трафика в ng_ipacct

смотрим что получилось

        kldstat

если модули загружены, то всё хорошо, иначе учимся ставить систему(с)
далее, при помощи утилиты ngctl даем команды нетграфу, их можно засунуть
в скрипт и поставить на автозагрузку:

        #!/bin/sh
        #####тело файла Strart.sh
        # именуем ноду
        ngctl name ipfw: ipfw1

        # создаем ноду tee и подрубаем её хуком left к ноде ipfw1 через хук 100
        ngctl mkpeer ipfw1: tee 100 left

        # даем имя ноде em0_tee (на место em0 можно написать что угодно, привязки
        # к карте никакой тут нет, в моём случае приписка em0 стечение обстоятельств)
        ngctl name ipfw1:100 em0_tee

        #коннектим фаервол хуком 200 к ноде em0_tee в хук right
        ngctl connect ipfw1: 100 200 right

        # создаем и подключаем ноду ipacct хуком em0_in (em0 тут опять же может
        # быть любым, если напишете vasya_in, то команду ipacctctl ip_acct:em0
        # checkpoint,show,clear нужн будет писать ipacctctl ip_acct:vasya
        # checkpoint,show,clear и хук out с префиксом vasya обязательно)
        ngctl mkpeer em0_tee: ipacct left2right em0_in

        # именуем ноду ipacct именем ip_acct
        ngctl name em0_tee:left2right ip_acct

        #коннектим ноды ip_acct и em0_tee хуками em0_out и right2left
        ngctl connect ip_acct: em0_tee: em0_out right2left

        # вкратце опишем процесс заново
        # у нас получились ноды - tee обозванная em0_tee, с хуками left, right для
        # приема трафа c ng_ipfw, хуки right2left и left2right для отдачи трафика к следующему
        # обработчику, в нашем случае ipacct, хуки эти переименовать нельзя и они
        # постоянные, имя ноды, как вы уже наверно заметили, можно задать произвольное
        # нода ipfw обозванная ipfw1 с хуками 100 и 200 (чуть ниже поймете откуда они
        # взяты), эти хуки произвольные, имя ноды произвольное, нода подрублена к ноде
        # em0_tee (см строкой выше)
        # нода ipacct названная ip_acct с хуками em0_in и em0_out в которые
        # нода em0_tee копирует трафик хуками left2right и right2left
        # чтоб это всё понять - рисуйте на бумажке - нода - это квадратик,
        # хук - линия к другому квадратику, у ноды может быть несколько хуков.
        # Нод существует тоже достаточно.

        # после выполнения команд мы имеем завязанный ng_ipacct с ng_tee,
        # а ng_tee с ng_ipfw, чтоб посмотреть все это наглядно - зайдите в
        # утилиту ngctl и дайте там команду ls

        # продолжаем:
       
        # теперь с этого же скрипта дадим команды ipacct-у

        # кол-во записей которые хранит ipacct в мозгах, подробней смотрите ipacctctl.8
        ipacctctl ip_acct:em0 threshold 10000

        # тип пакетов, смотрите всё тот же ipacctctl.8
        ipacctctl ip_acct:em0 dlt RAW

        # вид выдаваемой статистики, см ipacctctl.8
        ipacctctl ip_acct:em0 verbose off

на этом скрипт можно завершить, но каждый для себя его может дополнить,
переписать и т.д., имхо краткокость — сестра … ;)

Осталось добавить в ipfw правила и начать сбор трафика и снятие статистики

        ipfw add 10 netgraph 100 ip from any to any in
        ipfw add 11 netgraph 200 ip from any to any out

переменной sysctl net.inet.ipfw.one_pass можно задать способ прохождения
трафика — либо пакет принят, либо продолжает сравнение. см man ipfw

снятие статистики:

        # перенос статистики в чекпоинт базу
        ipacctctl ip_acct:em0 checkpoint

        # показать статистику на экран, если нужно сохранить в файл,
        # то ipacctctl ip_acct:em0 show >> file.stat
        ipacctctl ip_acct:em0 show

        # очистили базу для последующей статистики.
        ipacctctl ip_acct:em0 clear

Все вышесказанное можно и нужно сделать немного красивее, так сказать
добавить автоматизма, но для старта этого вполне хватит. не претендую
ни на что, настоятельно рекомендую прочитать

1. http://citrin.ru/netgraph/
2. http://nexus.org.ua/weblog/message/406/ — позновательно

best mac antivirus software

3. http://www.opennet.ru/base/net/ng_ipacct_tips.txt.html — после осознания нетграфа

zp8497586rq





















Смотрите также:

Readers Comments (Комментариев нет)

Comments are closed.

Exchange 2007

Проведение мониторинга Exchange 2007 с помощью диспетчера System Center Operations Manager 2007 (часть 3)

Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам: Проведение мониторинга Exchange 2007 с помощью диспетчера System ... [+]

Практическое рассмотрение перехода с Exchange 2003 на Exchange 2007 (часть 1)

Введение В этой статье из нескольких частей я хочу показать вам процесс, который недавно использовал для перехода с существующей среды Exchange 2003 ... [+]

Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (часть 2)

Если вы пропустили первую часть этой серии, пожалуйста, прочтите ее по ссылке Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (Часть ... [+]

Мониторинг Exchange 2007 с помощью диспетчера System Center Operations Manager 2007 (часть 2)

Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Мониторинг Exchange 2007 с помощью диспетчера System Center Operations ... [+]

Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 5)

Если вы пропустили предыдущие части этой серии статей, перейдите по ссылкам: Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 1) ... [+]

Установка и настройка Exchange 2007 из командной строки (Часть 3)

If you missed the previous parts in this article series please read: Exchange 2007 Install and Configuration from the command line (Part ... [+]

Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (часть 1)

Инструмент ExRCA Текущий выпуск инструмента предоставляется только в целях тестирования и оснащен 5 опциями: Тест подключения Outlook 2007 Autodiscover Тест подключения Outlook 2003 RPC ... [+]

Развертывание сервера Exchange 2007 Edge Transport (часть 5)

Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам: Развертывание сервера Exchange 2007 Edge Transport (часть 1) Развертывание ... [+]

Установка и настройка Exchange 2007 из командной строки (часть 2)

Если вы пропустили первую статью данного цикла, пожалуйста, перейдите по ссылке: Exchange 2007 Install and Configuration from the command line (Part ... [+]

Использование интегрированных сценариев Using Exchange Server 2007 – часть 2: генерирование отчетов агента Transport AntiSpam Agent

Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Использование интегрированных сценариев Using Exchange Server 2007 – часть ... [+]