The OpenNET Project / Index page

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

Система учета трафика на основе net-acct (billing traffic isp statistic)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: billing, traffic, isp, statistic,  (найти похожие документы)
From: Ушаков Андрей <[email protected]> Newsgroups: email Date: Mon, 6 Oct 2003 14:31:37 +0000 (UTC) Subject: Система учета трафика на основе net-acct Рано или поздно перед каждым администратором встает вопрос о построении своей системы учета трафика, будь то небольшая локальная сеть или средних размеров ISP. Систем, направленных на эту задачу, существует немало и порой сложно с чего-то начать. Для того чтобы можно было что-то выбрать, необходимо сформулировать требования к системе, которую мы хотели бы использовать. Итак, какой же она должна быть? Во-первых, система должна выдавать подробный отчет по трафику, время, source и destination адреса, порты, сетевой интерфейс. Во-вторых, весьма желательно, чтобы система могла работать с базой данных, например с MySQL. В этом случае мы избавляемся от необходимости "низкоуровневой" обработки данных и самостоятельного занесения этих данных в базу, т.к. делать это рано или поздно все равно придется. Ну и в-третьих, это важно для многих пользователей интернета в регионах, система должна каким-либо образом разделять тип трафика на бесплатный (free), пиринговый (peer), и общий (world). Всем этим требованиям удовлетворяет система net-acct-mysql. Скачать архив можно с сайта http://exorsus.net/projects/net-acct/, причем я настоятельно рекомендую качать не самую последнююверсию, а версиюnetacct-mysql-0.73, т.к. все последующие версии были упрощены и не включают в себя некоторыхполезных опций. Net-acct необходимо сконфигурировать с опцией "--with-mysql" с указанием пути к mysql, например ./configure --with-mysql=/usr/local/mysql После компиляции и установки программы (make && make install) необходимо создать базу данных для net-acct с помощью дампа, который присутствует в архиве: mysql -u root -p < netacct.sql. После чего не забываем добавить пользователя в MySQL и предоставить ему права на базу netacct. mysql>grant all privileges on netacct.* to netacct identyfied by 'netacct'; mysql>flush privileges; Далее необходимо сконфигурировать поограмму. Для этого в нашем расопряжении имеются два файла конфигурации в каталоге /usr/local/etc: naccttab - главный файл конфигурации, nacctpeering - файл, содержащий список сетей, которые следует считать пиринговыми. Рассмотрим файл naccttab. В самом начале идет секция конфигурации доступа к базе данных: database mysql Первая строка описывает, в каком виде будет записываться информация о трафике, в нашем случае это запись в mysql, возможен также вариант file, при котором запись будет идти в текстовый файл /var/log/net-acct. Далее следуют параметры доступа к базе данных, название которых говорят сами за себя. mysql_user netacct #пользователь в MySQL mysql_password netacct #пароль пользователя для базы mysql_host localhost #хост mysql_database netacct #имя базы данных mysql_table accounting #имя таблицы Далее идет опция, указывающая pid файл процесса демона net-acct: pidfile /var/run/nacctd.pid Далее описываются сетевые параметры для работы net-acct. Мы рассмотрим следующую схему сети, для которой мы будем конфигурировать учет трафика: Небольшая локальная сеть с внутренними адресами вида 10.0.0.XXX подключена к интернет через nat на Linux машине с двумя интерфейсами eth0 и eth1, eth0 смотрит в интернет, eth1 - в локальную сеть. Итак, рассмотрим необходимые для такой схемы параметры (описание идет после каждой опции) flush 60 Задает период (в секундах), с которым данные записываются в базу. fdelay 60 Задает время (в секундах), в течении которого после завершения сетевой активности данные о трафике могут быть записаны в базу. dumpfile /var/log/net-acct-dump Задает имя файла дампа статистики. notdev eth0 Если машина имеет два интерфейса, то с помощью опции notdev мы указываем интерфейс, который следует исключить из диапазона отслеживаемых программой, дабы избежать дублирования записей о трафике, прошедшем через оба интерфейса. В нашем случае этим интерфейсом является eth0 device eth0 Данная опция задает тот интерфейс, который будет переводится в promiscuous режим. iflimit eth0 Эта опция в том случае, когда машина имеет несколько интерфейсов и только на одном из них неоходим учет трафика. ignorenet 127.0.0.0 255.0.0.0 Эта опция позволяет исключить из подсчета трафик идущий черех loopback интерфейс. debug 2 debugfile /tmp/nacctd.debug Опции для отладочной информации. headers lo 14 12 headers eth 14 12 Задает, с пакетами каких интерфейсов следует работать, в нашем случае lo и eth. Многие захотят отключить опцию первой строки, т.е. headers lo, но практика показывает, что данное действие приводит к нерабочему состоянию программы, так что делать это не рекомендуется. Цифры после каждого из параметров указывают следующее: в первом столбце - количество байт, после которых начинают идти данные в пакете, во втором - количество байт, приходящихся на поле типа пакета. И последнии опции, которые будут в нашем конфиге: hostlimit 10.0.0.2 hostlimit 10.0.0.3 hostlimit 10.0.0.4 Указывают на то, для каких адресов в подсети следует считать трафик. Служит своего рода фильтром и позволяет исключать некоторые адреса из учета. Если нет необходимости указывать адреса явно, можно указать адрес только той машины, на которой стоит net-acct, в этом случае будет считаться весь трафик пришедший на интфрфейс eth1. C первым конфигом мы разобрались. Далее идет файл nacctpeering, в котором, как было сказано выше, содержится список пиринговых сетей. Достаточно просто написать каждую подсеть или адрес в новойстроке, например: 195.58.1.134 194.226.148.0/24 213.140.111.224/255.255.255.224 Ну вот, с конфигами закончили, теперь можно запускать систему, для этого необходимо ввести команду /usr/local/sbin/nacctd.Если не было допущено ошибок в конфиге, то через некоторое время в базеужепоявлятся первые записи и весь трафик будет под конролем. Первый этап работы закончен, далее возникает необходимость просмотра информации о трафике. Для этого можно написать скрипт, например на PHP или PERL, а можно обращатся к базе напрямую. В обоих случаях необходимо сформулировать запросы к базе. Далее я приведу несколько запросов, которыме могут быть наиболее часто востребованы для получения информации о трафике. Эти же запросы можно будет использовать и в скриптах. Для удобства введем несколько символических перемнных: $IP - адрес для которого будем просматривать статистику; $monthday - день месяца, за который просматриваем статику (целое число от 1 до 31); $month - месяц, за который просматриваем статистику (целое число от 1 до 12); $peer - тип трафика, принимает значения 0 или 1 (если src адреса соответсвуют пиринговым адресам). Просматриваем суммарную статистику для адреса $IP за день $monthday месяца $month с типом трафика $peer: select SUM(data_size)/1024/1024 from accounting where dst_ip = '$IP' and DAYOFMONTH(data) = $monthday and MONTH(data) = $month and peer = $peer; Просматриваем суммарную статистику для адреса $IP за месяц $month с типом трафика $peer: select SUM(data_size)/1024/1024 from accounting where dst_ip = '$IP' and MONTH(data) = $month and peer = $peer; Просматриваем суммарную статисику по всем дням для адреса $IP за месяц $month с типом трафика $peer: select SUM(data_size)/1024/1024, data from accounting where dst_ip = '$IP' and MONTH(data) = $monthand peer = $peer group by data; Просмотр подробной статистки за весь день $monthday месяца $month с выводом адресов, с которых шел трафик, времени и типа трафика: select time, data_size/1024/1024, src_ip, peer from accounting where dst_ip = '$IP' and DAYOFMONTH(data) = $monthday and MONTH(data) = $month; Ну вот, на этом этапе система достигла рабочего состояния. Далее остается только более тонакая настройка и отладка, в случае допущения каких-либо ошибок.

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

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, anton (?), 11:46, 22/10/2003 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Поставил без проблем. Работает. Но считает трафик только на одном интерфейсе (внешнем или внутреннем). Не могу сообразить как сделать чтобы в базу сливался весь трафик, со всех интерфейсов? А там я его уже сам рассортировал бы.
     
     
  • 2.2, anton (?), 09:43, 28/10/2003 [^] [^^] [^^^] [ответить]  
  • +/
    Сорри, как обычно - RTFM!
    man nacctd:
    ...
    For now version which uses pcap can  only  listen  on  one interface.
    ...
    остается ждать новой "исправленной" версии...
     

  • 1.3, Alexander (?), 21:22, 11/11/2003 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Странно:
    демон запускается, но ни в mysql ни в файл ничего не выводит. И ошибок тоже никаких не выдает
     
     
  • 2.6, Alexey (??), 07:57, 22/04/2004 [^] [^^] [^^^] [ответить]  
  • +/
    У меня таже проблема. Решение есть ? Помоги . Линукс еще плохо знаю .
     
  • 2.11, mute luke (?), 09:57, 19/08/2004 [^] [^^] [^^^] [ответить]  
  • +/
    проверь чтобы имя и пароль в файле naccttab совпадали с правами доступа к базе данных netacct в MySQL.
    Приьерно так:
    Если в naccttab

    mysql_user acct
    mysql_password acct_password

    тогда

    mysql> grant all privileges on netacct.* to acct identyfied by 'acct_password';

     
     
  • 3.19, Алексей (??), 06:35, 29/10/2004 [^] [^^] [^^^] [ответить]  
  • +/
    а если и это не помогает?!?!
     

  • 1.4, qaz (?), 01:59, 04/12/2003 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Помогите мне решить эти проблемы

    Раньше я установил аpache, mysql,php4.xx, phpMyAdmin и они нормально работают.Я попытался установить netacct-mysql-7ххх но не удалось .
    Проблемы - нет mysql.h хотя я этот файл нашёл в /usr/local/mysql/include (где я установил mysql)
    Я также установил mysql-client, mysql-devel и libpcap но эта проблема не решается.Я не мог установить  netacct-mysql-7ххх.Пожалуйста Помогите мне решить эти проблемы, если у вас есть время давайте подробно мне указать как правильно установить mysql и какие нужные пакеты mysql, какие нужные опции mysql чтобы смочь использовать netacct-mysql-7ххх

    меня извините из-за такие вопросы,Я очень мало знаю о Линусе,Вам спасибо

     
     
  • 2.9, old (?), 08:19, 28/07/2004 [^] [^^] [^^^] [ответить]  
  • +/
    попробуй путь к MySQL изменить --> ./configure --with-mysql=/usr
    в RedHat 7.3 сразу подхватывает :))
     

  • 1.5, Stek (?), 18:35, 14/04/2004 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    У меня он считает локальный траффик только исходящий, а вот с международным всё путём, считает в обе стороны.
    Может кто сталкивался с такой проблеммой.
    Стоит Mandrake 9.2
     
     
  • 2.10, i_destr (??), 19:33, 11/08/2004 [^] [^^] [^^^] [ответить]  
  • +/
    >У меня он считает локальный траффик только исходящий, а вот с международным
    >всё путём, считает в обе стороны.
    >Может кто сталкивался с такой проблеммой.
    >Стоит Mandrake 9.2


    Точно, точно, у меня такая же проблема... Объясните, пожалуйста!
    Стоит FreeBSD 4.9

     

  • 1.7, byasha (?), 00:15, 27/05/2004 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Народ, помогите.
    Поставил и вроде зареботало.
    Вопорсы?
    Таблица accounting нормально пишется.
    Таблица traffic не заполняется ни в какую, и соответсвенно не вижу трафика (хочу смотреть через прилагаемый PHP скрипт)
    Кто сталкивался? Помогите.
     
  • 1.8, sys6 (?), 12:15, 01/07/2004 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    У меня просто не встает.. говорит что не может найти mysql headers.. я ему давал /usr/share/mysql но там не нашел.. может еще где-нибудь?
     
     
  • 2.22, Lexxus (??), 15:33, 21/12/2004 [^] [^^] [^^^] [ответить]  
  • +/
    >У меня просто не встает.. говорит что не может найти mysql headers..
    >я ему давал /usr/share/mysql но там не нашел.. может еще где-нибудь?
    >
    У меня таже трабла на FreeBSD 4.9
    Поставил mysql из сорцов затем качнул netacct-mysql-0.73 он при конфигурации ругается что не может найти хедер SQL хотя путь я ему правильный скармливаю - проверял whereis mysql
    /usr/local/bin/mysql
    Плиз помогите пожалуйста а то уже надоело на калькуляторе считать :-)
     
     
  • 3.23, Алексей (??), 23:35, 08/01/2005 [^] [^^] [^^^] [ответить]  
  • +/
    Установи пакет kernel-headers....rpm
     
  • 3.24, Алексей (??), 23:38, 08/01/2005 [^] [^^] [^^^] [ответить]  
  • +/
    Установи пакет kernel-headers...rmp
     
  • 2.36, ultras88 (?), 12:44, 10/08/2007 [^] [^^] [^^^] [ответить]  
  • +/
    >У меня просто не встает.. говорит что не может найти mysql headers..
    >я ему давал /usr/share/mysql но там не нашел.. может еще где-нибудь?
    >

    попробуй укажи: ./configure --with-mysql=/usr . Во всяком случае на убунту заголовочные файлы мускула находятся в папке /usr/include/mysql, но при указании полного пути он не хочет конфигурироваться, а при указании не полного заводится только в путь)

     

  • 1.12, FreeBSD (??), 11:26, 08/09/2004 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Всё супер, работает, без проблем =)

    P.S. мускул и прочую лабуду, нужно ставить самому из сорсов, RPM зло =)

     
  • 1.13, alexpn (??), 10:19, 23/09/2004 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Подскажите в чем проблема
    FreeBSD 4.10 + Mysql4.0.20 + libpcap-0.8.3

    include/mysql  -g -O2 -pthread -c capture.c
    capture.c:41: netinet/ip_compat.h: No such file or directory
    gmake[2]: *** [capture.o] Ошибка 1
    gmake[2]: Leaving directory '/usr/local/src/netacct-mysql-0.76/src'
    gmake[1]: *** [all-recursive] Ошибка 1
    gmake[1]: Leaving directory '/usr/local/src/netacct-mysql-0.76'
    gmake: *** [all-recursive-am] Ошибка 2

     
  • 1.14, Траблы с компиляцией (?), 20:52, 04/10/2004 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Походу не хочет компилить. Подозрение на битый исходник. Кто-то сталкивался с этим?
    make
    make  all-recursive
    Making all in src
    "Makefile", line 264: Need an operator
    make: fatal errors encountered -- cannot continue
    *** Error code 1

    Stop in /usr/home/krown/src/netacct-mysql-0.73.
    *** Error code 1

    Stop in /usr/home/krown/src/netacct-mysql-0.73

     
     
  • 2.25, RSR (ok), 18:11, 03/02/2005 [^] [^^] [^^^] [ответить]  
  • +/
    у меня таже проблема :((( плиз хелп!!!
     

  • 1.15, alteru (ok), 18:54, 06/10/2004 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    а у меня не определяет локальные пиринговые и прямые адреса .. че делать ? проблему описывал тут
    http://www.opennet.me/openforum/vsluhforumID10/1640.html
     
  • 1.16, Gleb (?), 00:02, 13/10/2004 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Помогите с такой проблемой,
    Кто нибудь ставил примочку netstat
    у меня постоянно выдает направильный логин-пароль, как с этим бороться ?
     
     
  • 2.17, netstat (?), 11:09, 26/10/2004 [^] [^^] [^^^] [ответить]  
  • +/
    а сколько таблиц в бд netacct? должно быть 5, притом в таблице users должен быть заведен юзер, под которым хотим войти, и в таблице ipallow должен быть прописан ip, с которого пытаемся получить доступ к статистике.
     
  • 2.18, awinas (?), 13:11, 27/10/2004 [^] [^^] [^^^] [ответить]  
  • +/
    /etc/php.ini --> register_globals = on ?
     

  • 1.20, shark (??), 16:26, 23/11/2004 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Здравствуйте!
    Помогите пожалуйста!
    У меня Fedora Core 3
    Net-Acct-0.76 скомпилился и установился без проблем. Вот только запускается чуть ли ни через раз - два раза :(( смотрел повсюду. Главная проблема в том, что при открытии index.php запрашивает пароль и логин, введя их постоянно сообщает Wrong authorization ! Хотя у меня и таблиц 5 и /etc/php.ini > register_globals = on
    Я смотрел базу - база обновляется нормально, я даже смог настроить netstat_mrtg и netstat_cron и все работает, вот только index.php - ну никак не пропускает :((
     
     
  • 2.27, dimas (??), 22:11, 22/02/2005 [^] [^^] [^^^] [ответить]  
  • +/
    >Здравствуйте!
    >Помогите пожалуйста!
    >У меня Fedora Core 3
    >Net-Acct-0.76 скомпилился и установился без проблем. Вот только запускается чуть ли ни через раз - два раза :(( смотрел повсюду. Главная проблема в том, что при открытии index.php запрашивает пароль и логин, введя их постоянно сообщает Wrong authorization ! Хотя у меня и таблиц 5 и /etc/php.ini > register_globals = on
    >Я смотрел базу - база обновляется нормально, я даже смог настроить netstat_mrtg
    >и netstat_cron и все работает, вот только index.php - ну никак
    >не пропускает :((

    Там логин admin пароль admin

     
     
  • 3.32, Nick (??), 12:53, 08/02/2007 [^] [^^] [^^^] [ответить]  
  • +/
    А про какой web-интерфейс вы говорите? Где его взять?
     

  • 1.21, shark (??), 16:29, 23/11/2004 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Добавлю еще то, что поставил также пакет netstat-3.04, скопировал оттуда файлы в /var/www/html каталог и запуская index.php не прохожу авторизации при условии, что и юзер в базе netacct в таблице users занесен и со статусом 'admin' и /etc/php.ini --> register_globals = on
     
  • 1.26, dimas (??), 22:10, 22/02/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Это оригинальный конфиг, если кто юзает, поясните плиз sniff 0 0 not set... большой текст свёрнут, показать
     
     
  • 2.28, user (??), 22:33, 15/03/2005 [^] [^^] [^^^] [ответить]  
  • +/
    # gmake
    gmake  all-recursive
    gmake[1]: Entering directory '/root/tmp/netacct-mysql-0.78'
    Making all in src
    gmake[2]: Entering directory '/root/tmp/netacct-mysql-0.78/src'
    if gcc -DHAVE_CONFIG_H -I. -I. -I.. -D_FreeBSD_ -I.. -I/usr/local/include  -I/usr/local/include/mysql  -g -O2 -I. -I.. -D_REENTRANT -D_THREAD_SAFE -MT collect.o -MD -MP -MF ".deps/collect.Tpo" \
      -c -o collect.o 'test -f 'collect.c' || echo './''collect.c; \
    then mv -f ".deps/collect.Tpo" ".deps/collect.Po"; \
    else rm -f ".deps/collect.Tpo"; exit 1; \
    fi
    In file included from collect.c:12:
    /usr/include/malloc.h:3:2: #error "<malloc.h> has been replaced by <stdlib.h>"
    collect.c: In function 'add_host_info':
    collect.c:66: warning: initialization makes pointer from integer without a cast
    collect.c: In function 'get_host_info':
    collect.c:121: warning: initialization makes pointer from integer without a cast
    gmake[2]: *** [collect.o] Ошибка 1
    gmake[2]: Leaving directory '/root/tmp/netacct-mysql-0.78/src'
    gmake[1]: *** [all-recursive] Ошибка 1
    gmake[1]: Leaving directory '/root/tmp/netacct-mysql-0.78'
    gmake: *** [all] Ошибка 2

    Проблема... кто подскажет...?
    FreeBSD 5.2.1
    netacct-mysql-0.78


     
     
  • 3.29, topot (??), 15:38, 29/03/2005 [^] [^^] [^^^] [ответить]  
  • +/
    >FreeBSD 5.2.1
    >netacct-mysql-0.78

    Уменя такая же фигня была. В файле collect.c  заменил строчку #include <malloc.h> на #include <stdlib.h>

     

  • 1.30, Petr_OS (??), 20:52, 17/07/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    netacct+netstat поставились нормально, но в статистике почему-то приводятся значения трафика заниженные ровно в 2 раза! Из-за чего такое может быть?
     
  • 1.31, krz (??), 18:01, 11/03/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Здравствуйте
    вопрос-такой - можно ли этого зверя поставить на роутер с бриджем, чтоб считался форвардный трафик???
     
     
  • 2.33, dad MIn (?), 16:43, 05/03/2007 [^] [^^] [^^^] [ответить]  
  • +/
    >Здравствуйте
    >вопрос-такой - можно ли этого зверя поставить на роутер с бриджем, чтоб
    >считался форвардный трафик???

    можно

     

  • 1.34, reverse (?), 13:47, 17/04/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Здраствуйте, я поставил себе net-acct 0.73 на Gentoo все считает прекрассно и довольно точно, но есть проблема в подсчете трафика аськи (по порту 5190), так такие заоблачные цыфры получаются... за сутки просто включеного Qip (или Миранды) в статистике пишет, что траффика было израсходовано 130Мб, хотя NetLimiter и встроеный TrafficCounter показывают цыфру близкую к 600кб. Смотрел в дамп, так там одно сообщение аськи иногда доходит до 700кб :(
    В системе стоит 2 сетевые карты: одна в сеть, вторая на провайдерский шлюз.
     
     
  • 2.35, reverse (?), 13:51, 17/04/2007 [^] [^^] [^^^] [ответить]  
  • +/
    А вопрос задать забыл :)
    Куда смотреть и, что исправить?
    или может есть возможность вообще не считать трафик по этому порту?
     

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




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру