The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

Использование ng_ipacct (netgraph traffic freebsd)


<< Предыдущая ИНДЕКС Правка src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: netgraph, traffic, freebsd,  (найти похожие документы)
From: Южанинов А. В. <citrin dog citrin.ru> Date: Mon, 20 Sep 2004 18:21:07 +0000 (UTC) Subject: Использование ng_ipacct Оригинал: http://citrin.pp.ru/my/ng_ipacct.html Мой опыт использования ng_ipacct Система учета трафика ng_ipacct работает с использованием netgraph и выполнена в виде подгружаемого модуля ядра. Новая реализация проекта ipacctd. Формат управления и статистики похожи на Cisco ip accounting. На мой взгляд - одна из лучших систем учета трафика для FreeBSD, когда требуется подробная статистика. Т. е. не только количество байт, которое скачал клиент, но и откуда (с каких ip) скачал и по какому протоколу. Помогает при разрешении спорных ситуаций и выявлении аномалий (например, сетевые черви). Автор ng_ipacct - Роман Палагин. Установить не сложно: fetch ftp://ftp.wuppy.net.ru/pub/FreeBSD/local/kernel/ng_ipacct/ng_ipacct-20040109.tar.gz tar -xzf ng_ipacct-20040109.tar.gz cd ng_ipacct make make install Для FreeBSD 5 нужно использовать ng_ipacct-20040109-freebsd5.tgz. На момент написания заметки версия для 5.3 еще не была выпущена. Я ставил под 5.2.1 Ман там на русском в koi8-r. Не знаю как в 4-ке, а в 5.2.1 это ман нечитался из за того, что некорректно преформатироваплся ман в кои8. Чтоб его можно было читать, пришлось это сделать ручками: zcat /usr/share/man/man8/ipacctctl.8.gz | nroff -man | gzip > /usr/share/man/cat8/ipacctctl.8.gz И еще в мане есть опечатка, там написано В случае использования опции verbose статистика выводится в виде: ip_from s_port ip_to d_port proto bytes packets А на самом деле (по крайней мере, в версии 20040109 для 5-ки) ip_from s_port ip_to d_port proto packets bytes Использовать несколько сложнее. Желательно (хотя не обязательно) представлять, что такое Нетграф и как он работает. Можно почитать статью All About Netgraph на daemonnews (http://www.daemonnews.org/200003/netgraph.html) или её перевод на русский (http://citrin.pp.ru/daemonnews/netgraph.html). Чтоб он начал работать и собирать статистику его нужно подключить. Примеры скриптов есть в каталоге scripts в архиве с ng_ipacct Я сделал скрипт для инициализации на его базе, 030.ng_ipacct_init.sh и кинул его в /usr/local/etc/rc.d/ Далее эту информацию нужно периодически считывать. Очень похоже на ip accounting в циске. По команде checkpoint данные переносятся из активной базы в checkpoint базу где их можно посмотреть командой show. У меня раз в 10 минут запускается скрипт ipacct.sh, который считывает эти данные и скалывает в лог, а раз в сутки эти текстовые логи архивируются скриптом ipacct-comress.sh. В кроне прописано: */10 * * * * /root/scripts/ipacct.sh 7 4 * * * /root/scripts/ipacct-comress.sh В принципе несложно сделать так, чтоб суммарные данные складывались в базу, просто у меня задача была другая - иметь максимально подробные логии, в случае чего по которым можно посмотреть достаточно подробную информацию по трафику. Извлекается она оттуда самописными перловыми скриптами. И еще есть очень важный параметр treshold Он определяет сколько данных может накопить в внутренних структурах ng_ipacct. Если его сделать маленьким, то данные будут теряться при большом трафике. Если сделать очень большим, то в 5.2.1 возможна паника ядра. Как с этим в 4-ке не знаю. К счастью если трешхолда не хватает, и данные теряются он об этом явно говорит. У меня вывод скрипта ipacct.sh шлется на почту, и если трешхолд будет превышен, об этом придет письмо. По этому я бы рекомендовал при 128 метрах оперативки начать с 5000 и если этого будет нахватать, постепенно увеличивать. Нагрузка на процессор от ng_ipacct минимальная, поскольку он работает в ядре и нет дополнительных накладных расходов, которые присутствуют при других методах учета, например через divert. Если памяти мало вместо увеличения трешхолда можно по чаще снимать данные, например раз в 3 минуты. Но тогда логи будут занимать больше места на диске. 445 порт мне пришлось зафильтровать на маршрутизаторах локальной сети, чтобы трафик, котрый в большом объеме генерирует эпидемия червя Sasser не доходил до шлюза где работает ng_ipacct. Трешхолда не стало хватать именно из-за него, да и логи в архивированном виде были больше 200 Мб в день. Южанинов Антон <citrin@mail.ru.>, сентябрь 2004 г.
#!/bin/sh # http://citrin.pp.ru/my/ipacct.sh # # Written by Anton V. Yuzhaninov <citrin % mail.ru> # traffic logger based on ng_ipacct by Roman V. Palagin # ftp://ftp.wuppy.net.ru/pub/BSD/FreeBSD/local/kernel/ng_ipacct/ # File name format # YYYY-MM-DD-hour ##################################################################################### # # Формат лога # При использовании команды show выводится содержимое checkpoint базы данных в формате # ip_from ip_to packets bytes # Этот формат аналогичен выводу команды IOS show ip accounting # В случае использования опции verbose статистика выводится в виде: # # ip_from s_port ip_to d_port proto packets bytes # # Если proto - ICMP, то s_port - ICMP type, d_port - ICMP sub-code. # ##################################################################################### IPACCTCTL="/usr/local/sbin/ipacctctl" IFACE="xl0" DIR=/var/log/ipacct SDIR=`date -v-9M "+%Y-%m-%d"` if [ ! -e "$DIR/$SDIR" ]; then mkdir $DIR/$SDIR fi NAME=`date -v-9M "+%Y-%m-%d-%H"` $IPACCTCTL ${IFACE}_ip_acct:$IFACE checkpoint $IPACCTCTL ${IFACE}_ip_acct:$IFACE show >> $DIR/$SDIR/$NAME $IPACCTCTL ${IFACE}_ip_acct:$IFACE clear /usr/bin/tail -1 $DIR/$SDIR/$NAME | /usr/bin/fgrep exceed
#!/bin/sh # http://citrin.pp.ru/my/ipacct-comress.sh # Written by Anton V. Yuzhaninov <citrin % mail.ru> # traffic logger based on ng_ipacct by Roman V. Palagin # ftp://ftp.wuppy.net.ru/pub/BSD/FreeBSD/local/kernel/ng_ipacct/ # File name format # YYYY-MM-DD-hour ##################################################################################### # # Формат лога # При использовании команды show выводится содержимое checkpoint базы данных в формате # ip_from ip_to packets bytes # Этот формат аналогичен выводу команды IOS show ip accounting # В случае использования опции verbose статистика выводится в виде: # # ip_from s_port ip_to d_port proto packets bytes # # Если proto - ICMP, то s_port - ICMP type, d_port - ICMP sub-code. # ##################################################################################### DIR=/var/log/ipacct SDIR=`date -v-1d "+%Y-%m-%d"` files=`ls $DIR/$SDIR` for file in $files; do nice /usr/bin/gzip $DIR/$SDIR/$file # даем процесору и винту отстыть sleep 150 done # delete old logs (older than 180 days) find $DIR -mtime +180 -mindepth 1 -delete
#!/bin/sh # http://citrin.pp.ru/my/030.ng_ipacct_init.sh # ng_ipacct traffic counter # # memory size approximately ((threshold * 40) + (8192 * sizeof(void *))) in FreeBSD 5 THRESHOLD=3000 VERBOSE=1 IPACCTCTL="/usr/local/sbin/ipacctctl" INTERFACES="xl0" case "$1" in start) # XXX should check via kldstat is module already loaded /sbin/kldload netgraph > /dev/null 2>&1 /sbin/kldload ng_ether > /dev/null 2>&1 /sbin/kldload ng_socket > /dev/null 2>&1 /sbin/kldload ng_tee > /dev/null 2>&1 /sbin/kldload ng_ipacct > /dev/null 2>&1 for IFACE in $INTERFACES; do /usr/sbin/ngctl mkpeer ${IFACE}: tee lower right /usr/sbin/ngctl connect ${IFACE}: lower upper left /usr/sbin/ngctl name ${IFACE}:lower ${IFACE}_acct_tee /usr/sbin/ngctl mkpeer ${IFACE}_acct_tee: ipacct right2left ${IFACE}_in /usr/sbin/ngctl name ${IFACE}_acct_tee:right2left ${IFACE}_ip_acct /usr/sbin/ngctl connect ${IFACE}_acct_tee: ${IFACE}_ip_acct: left2right ${IFACE}_out $IPACCTCTL ${IFACE}_ip_acct:$IFACE verbose $VERBOSE $IPACCTCTL ${IFACE}_ip_acct:$IFACE threshold $THRESHOLD done ;; stop) for IFACE in $INTERFACES; do /usr/sbin/ngctl shutdown ${IFACE}_acct_tee: /usr/sbin/ngctl shutdown ${IFACE}: done /sbin/kldunload ng_ipacct ;; *) echo "" echo "Usage: `basename $0` { start | stop }" echo "" ;; esac

<< Предыдущая ИНДЕКС Правка src Установить закладку Перейти на закладку Следующая >>

Ваш комментарий
Имя:         
E-Mail:      
Заголовок:
Текст:





  Закладки на сайте
  Проследить за страницей
Created 1996-2017 by Maxim Chirkov  
ДобавитьРекламаВебмастеруГИД  
Hosting by Ihor