The OpenNET Project / Index page

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

Подсчет трафика в FreeBSD через trafd (freebsd traffic bdf)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: freebsd, traffic, bdf,  (найти похожие документы)
From: Дмитрий Новиков <dmn@nnz.ru> Newsgroups: http://www.artmagic.ru/labs/ Date: Mon, 4 Dec 2002 13:01:37 +0000 (UTC) Subject: Подсчет трафика в FreeBSD через trafd Оригинал: http://www.artmagic.ru/labs/trafd.shtml Дмитрий Новиков (dmn@nnz.ru) Простая и эффективная система подсчета трафика в ОС FreeBSD Очень часто в качестве Интернет-шлюза администраторы устанавливают PC-совместимый компьютер с ОС FreeBSD. Одной из замечательных особенностей этой системы является простая возможгость практически автоматического учета и оперативного контроля всего трафика. Делается это с помощью специализированного пакетного фильтра bpf (Berkley Packet Filter). Этот механизм работает независимо от работы файрволла (ipfw) и способен "запоминать" все пакеты, идущие через интерфейсы. Ниже описано как эффективно воспользоваться возможностями bpf для учета трафика. 1. Средство оперативного контроля трафика. Итак, предположим, что сервер на основе FreeBSD успешно установлен и настроен. Для оперативного контроля трафика служит очень удобная утилита trafshow. Рекомендуется установить ее из дерева портов: cd /usr/ports/net/trafshow make install Далее можно сразу же переходить к просмотру текущего трафика на интерфейсах. Допустим, на нашем шлюзе два интерфейса: внутренний (ed0), к которому присоеденена локальная сеть и внешний (xl1), через который осуществляется выход в Интернет. Для того, чтобы увидеть трафик на внутреннем интерфейсе, нужно выполнить команду: trafshow -i ed0 Эта команда покажет весь трафик, проходящий через интерфейс ed0. Команда будет работать быстрее, если отключить ресолвинг ip адресов в имена (ключ -n). При этом весь трафик будет выдан в виде удобной таблицы, в которой видны адреса источникков и приемников, скорости соединений, количество переданных и принятых байт и т.п. (рис 1). Соотвественно, чтобы увидеть трафик на внешнем интерфейсе, нужно ввести команду trafshow -i xl1. Если нужно увидеть не весь, а только нужный администратору трафик, то можно ограничить облать просмотра программы trafshow. Например, если нас интересует трафик из интернет в сеть 10.128.0.0/16, то нужно набрать команду вида: trafshow -i ed0 -n dst net 10.128.0.0 mask 255.255.0.0 Полный синтаксис описания правил для trafshow можно узнать по документации команды tcpdump (man tcpdump), т.к. команда trafshow интерпритируют вывод именно этой программы). Вообще, команда trafshow имеет множество дополнительных параметров и ключей для более тонкой настройки работы. Все параметры работы можно узнать по команде man trafshow. ПРИМЕЧАНИЕ. Часто для вывода локальной сети в Интернет через FreeBSD администраторы используют систему NAT. Тогда команда trafshow на внешнем интерфейсе не будет "видеть" внутренних адресов (потому что они уже "собраны" системой NAT во внешний интерфейс). Для того, чтобы увидеть трафик корпоративной сети, нужно "просматривать" внутренний интерфейс. 2. Средство сбора и учета трафика Для сбора трафика и построения отчетов, применяется пакет trafd. Рекомендуется ставить его через дерево портов. cd /usr/ports/net/trafd make install 2.1 Сбор статистики Демон trafd собирает трафик на определенном интерфейсе. Для начала сбора трафика на интерфейсе ed0, необходимо: * создать файл, где trafd будет хранить статистику: touch '/var/trafd/trafd.ed0' * запустить сбор статистики на интерфейсе: /usr/local/bin/trafd -i ed0 (рекомендуем сразу прописать эту строчку в /etc/rc.local) * проверить работу демона: ps ax | grep trafd * при необходимости собирать статистику на других интерфейсах, повторить действия, аналогичные описанным. Демон trafd коллекционирует статистику в оперативной памяти. Для того, чтобы статистика не "потерялась" и счетчики не переполнились, необходимо периодически "скидывать" наполненную информацию из оперативной памяти на диск (в файл, который был создан). Эту процедуру выполняет специальная программа: trafsave. Периодичность выполнения этой команды выбирает сам системный администратор. Для UNIX систем выполнение периодических команд применяется демон crontab. Например, для того, чтобы команда trafsave выполнялась каждые 4 часа, необходимо выполнить команду crontab -e и ввысти строчку . 0 0,4,8,12,16,20 * * 1-7 /usr/local/bin/trafsave PS. Для тех, кто не знаком с vi: нажать i, ввести строчку приведенную выше, нажать ESCAPE, ':', 'wq'. PS. Кроме того, рекомендуется каждый месяц "обнулять" файл сбора статистики, т.к. количество записей в одном файле ограничено 1000, после чего traflog перестает отображать отчеты по номеру записи. Это можно сделать с помощью короткой программки на языке sh: #!/bin/sh PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin LOG_FILE=/var/log/traffic.log if [ $# = 0 ]; then # Get List of Listening IFaces . /etc/rc.conf else IFF_LISTEN=$* fi for iface in $IFF_LISTEN; do rotate /var/trafd/trafd.$iface `date -v-1m +%b` echo "Rotate Logs For $iface" > $LOG_FILE done Нужно разместить эту программку в файле /usr/local/bin/trafrotate. Для ее работы необходимо установить утилиту rotate: cd /usr/ports/sysutils/rotate make install Для того, чтобы эта программа запускалась каждый месяц, нужно записать еще одну строчку в crontab: 20 2 1 * * /usr/local/bin/trafrotate Теперь можно быть уверенным, что ни один байт мимо не пройдет ! 2.2 Построение отчетов Система trafd способна строить удобные отчеты на основе собранных данных. Отчеты строятся с помощью программы traflog. Для того, чтобы посмотреть результаты последней сохраненной записи демона trafd, нужно набрать команду: traflog -n -i ed0 (флаг -n указывает не ресолвить ip-адреса) Программа traflog "умеет" строить отчеты на основе заданных правил. Например, для того, чтобы увидеть отчет по трафику сети 10.128.0.0/16, необходимо набрать команду: traflog -i ed0 -n from all to 10.128.0.0 mask 255.255.0.0 Авторы trafd приводят такие примеры фильтров: Pattern examples from turbo.nsk.su to ns.nsk.su port domain to all port ftp port ftp-data from TURBONET to all from 192.188.187.127 mask 255.255.255.224 port all from all to 144.206.0.0 proto tcp from turbo.nsk.su to ns.nsk.su port domain to all port ftp port ftp-data from TURBONET to all from 192.188.187.127 mask 255.255.255.224 port all from all to 144.206.0.0 proto tcp Кроме применения фильтров, traflog позволяет формировать отчеты, суммируя информацию из записей trafd. Для того, чтобы увидесть список записей (а это нужно для того, чтобы потом построить отчет на основе диапазона правил), нужно вызвать trafd с ключом -l. Например, вызов traflog -i ed0 -l выдаст результат: Теперь, для того чтобы построить отчет за определенный период, нужно указать первую и последнюю запись для отчета (параметры -b <первая запись> -e <последняя запись>). Например, для того чтобы получить отчет за 2 декабря 2002 годя для сети 10.128.0.0/16, нужно ввести команду: traflog -n -i ed0 -b7 -e12 -s from all to 10.128.0.0 mask 255.255.0.0 (параметр -s указывает посчитать суммарный трафик, т.е. trflog автоматически суммирует трафик по одинаковым адресам и портам). Кроме того, команде traflog можно указать файл вместо интерфейса. Например, для построения сентябрьского отчета по всему файлу, сохраненному за месяц программой trafrotate, нужно вызвать trfloglog: traflog -i /var/log/var/trafd.ed0.Sep -n. Еще в пакете программ trafd, есть 2 команды, которые используются не очень часто: trafstat (показывает статистику, хранящуюся в оперативной памяти), команда trafdump (сохраняет данные из памяти во временном файле) и еще набор программ, с которыми можно познакомиться из документации к trafd. Выводы. Итак, как видно система trafd позволяет эффективно учитывать трафик и строить разнообразные отчеты. На основе результатов отчетов программы traflog с помощью достаточно простых скриптов отчеты можно отправлять по почте, переводить их в нужный формат, строить графики и т.п. Основное преимущество trafd - законченность решения и простота использования. Решение готово к работе практически сразу: весь трафик сохраняется автоматически, имеется готовая система построения гибких отчетов. Строго говоря, администратору не нужно думать, как хранить информацию о трафике, как ее обрабатывать, как потом строить отчеты. Несомненно в этом смысле trafd очень удобная и продвинутая система. Однако, применяя эту систему в сети с каналами большой пропускной способности и интенсивным трафиком, были замечены проблемы и ошибки в работе системы. Основной недостаток: переполняются счетчики в отчетах. При этом, traflog выдает отрицательный результат и теряется все мощность пакета (приходиться разбивать отчет по сделанным записям и суммировать трафик самостоятельно). Также trafd требует достаточно много памяти, занимет много процессорного времени и достаточно долго строит отчеты по трафику. Кроме того, на очень интенсивном трафике теряются пакеты. Надеюсь, что готовящаяся к выпуску версия 4.0 не будет обладать приведенными недостатками. Поэтому рекомендуем trafd для администраторов небольших сетей (до 50 рабочих мест) с не очень интенсивным трафиком (менее 2 Гб в день). Система очень хорошо показала себя как универсальное решение для учета трафика в мелких и средних сетях. Авторы статьи успешно применяют эту систему на серверах вывода сетей в Интернет. В настоящее время реализовано более 10 таких проектов. С гордостью можно сказать, что система trafd была сделана в России, в Новосибирске. Но опять же, к сожалению, развивается она вяло и медленно. В этой статье применялась версия 3.0.1, а сейчас к выпуску готовиться 4.0. Время покажет, как новая версия приспособлена к большим объемам информации. Ссылки: * Документация по trafd (файл /usr/local/share/doc/trafd/README) * Сайт по trafd 4: http://bpft4.sourceforge.net * man trafshow * Перепечатка только с согласия автора.

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

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, Илья Шипицин (?), 12:31, 24/04/2003 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    вопросик такого плана....

    допустим у меня стоит фаирвольное правило запрещающее доступ к приватным сетям через внешний интерфейс. то есть, любой "косячный" трафик из системы наружу не выйдет... trafd посчитает те пакеты, которые "упрутся" в закрытый фаирвол ??

    Илья

     
  • 1.2, Busta (?), 17:14, 22/07/2003 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    у меня скрипт не заработал и вобще зачем он?
    просто по крону запускаю:
    20 0 1 * *  rotate /usr/local/var/trafd/trafd.dc0 'date -v-1m +
    где trafd.dc0 - файл со статистикой....
     
     
  • 2.7, Aleksey (?), 16:04, 18/03/2004 [^] [^^] [^^^] [ответить]  
  • +/
    ti pod solaris stavil?
    i kak, ustraivaet?
    a gde ishodniki mona skachat?
    i chto k nim eshe nujno?
     
  • 2.8, Feb (?), 10:55, 22/03/2004 [^] [^^] [^^^] [ответить]  
  • +/
    Новерное Вы не изменили права доступа к файлу: chmod +x script!
     

  • 1.3, ded (?), 13:59, 08/10/2003 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    не мог бы ктонибудь помочь с скриптом, который просто суммирует входящий, исходящий трафик по айпи. локалка с 30 машинами
     
     
  • 2.12, Игорь (??), 18:35, 20/06/2004 [^] [^^] [^^^] [ответить]  
  • +/
    >не мог бы ктонибудь помочь с скриптом, который просто суммирует входящий, исходящий
    >трафик по айпи. локалка с 30 машинами


    стукнись в аську 724950 я недавно писал анализатор для squid'а и в добавок пришлось запустить trafd для подсчета одной "ветки" без авторизации и для учета банковского трафика и прочего не поддерживающего авторизацию! компов было больше 40. помогу! если еще надо! а в отношении скрипта подсчета нет проблем уже готов почти!

     

  • 1.4, Slava (?), 16:21, 29/01/2004 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    У меня почему-то не ставится утилита rotate, подскажите пожалуйста, где ее можно надыбать (скачать) и как ставить (более подробно). В том что я скачиваю (rotate-1.1.tgz), нет почему-то мейкфайла...
     
     
  • 2.11, buzi (?), 13:45, 05/06/2004 [^] [^^] [^^^] [ответить]  
  • +/
    ставь с помощью pkg_add
    то есть - pkg_add rotate-1.1.tgz
     

  • 1.5, Дмитрий (?), 18:12, 05/02/2004 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    trafsave не хочет писать в /var/trafd/trafd.ed0 у меня FreeBSD 4.7 помогите собрать трафик
     
     
  • 2.16, ddd (?), 23:24, 10/11/2004 [^] [^^] [^^^] [ответить]  
  • +/
    ddd
     

  • 1.9, Konstanttin (?), 12:12, 29/04/2004 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    При просмотре подсчитанного траффика в столбче ALL нет значений меньше чем 2048 байт, складывается ощущение что они теряются, из-за чего и выходит разница с подсчетом провайдера.
    Как с этим бороться если конечно возможно.
     
     
  • 2.13, Konstantin (??), 20:48, 09/07/2004 [^] [^^] [^^^] [ответить]  
  • +/
    в запуске trafd указать опцию -m 1  , man - rules
     

  • 1.10, Konstanttin (?), 13:51, 29/04/2004 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    trafd 3.0.1
     
  • 1.14, 688 (?), 21:03, 02/08/2004 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    просто спасибо автору
     
  • 1.15, Роман (??), 14:28, 05/08/2004 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    ПЛИЗ ХЭЛП!!! подскажите, как разделить русский (М9) и нерусский трафик, если на входе есть лог от trafd по всем трафику и список русских сетей???
     
  • 1.17, Saveliev Aleksey (?), 12:24, 16/11/2004 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Очень бы хотелось анализатор логов с выводом в html и построением всяких графиков, неужели еще никто не написал?
     
  • 1.18, Vladimir (??), 20:20, 24/01/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Уважаемые господа. Я все-таки хочу освоить "trafshow". Проблема состоит в отделении локального трафика "домашней" сети от внешнего. Для начала хочется понять как правильно вычислить и записать диапазон сети. Команда ifconfig ed2 выдает: "inet 10.32.206.43 netmask 0xfffffc00 broadcast 10.32.207.255". Я правильно перевел 0xfffffc00 - 255.255.252.0? Тогда с учетом, что default router у нас 10.32.204.1, диапазон сети будет 10.32.204.0 mask 255.255.252.0 или какой? Так вот, если я запускаю trafshow -i ed2 dst net not 10.32.204.0 mask 255.255.252.0, то локальный трафик все равно присутствует. Читал "man tcpdump", но не доходит. Возможно кто-то знает решение? Как сказать, чтобы trafshow подсчитывало только внешний Интернет-трафик?
     
  • 1.19, Алексей (??), 11:02, 11/07/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Вопрос есть
    Т.е. если выполнить
    touch '/var/trafd/trafd.ed0'
    запустить сбор статистики на интерфейсе:
    /usr/local/bin/trafd -i ed0
    и в cron занести
    0 0,4,8,12,16,20 * * 1-7 /usr/local/bin/trafsave
    то в /var/trafd/trafd.ed0 будут скидываться данные по трафику. У меня вроед заработало, подсчет за час xthtp trafshow -i ed0 -n показало, а потом как обрезало. Что можно посмотреть на предмет обнаружения сбоя? Или как вообще проверить - работает сбор статистики или нет?
     
     
  • 2.20, nixty (?), 13:20, 29/07/2005 [^] [^^] [^^^] [ответить]  
  • +/
    ps -ax | grep trafd
     
  • 2.23, lcl (?), 20:46, 05/01/2006 [^] [^^] [^^^] [ответить]  
  • +/
    >Вопрос есть
    >Т.е. если выполнить
    >touch '/var/trafd/trafd.ed0'
    >запустить сбор статистики на интерфейсе:
    >/usr/local/bin/trafd -i ed0
    >и в cron занести
    >0 0,4,8,12,16,20 * * 1-7 /usr/local/bin/trafsave
    >то в /var/trafd/trafd.ed0 будут скидываться данные по трафику. У меня вроед заработало,
    >подсчет за час xthtp trafshow -i ed0 -n показало, а потом
    >как обрезало. Что можно посмотреть на предмет обнаружения сбоя? Или как
    >вообще проверить - работает сбор статистики или нет?

    надо
    0 0,4,8,12,16,20 * * 1-7 /usr/local/bin/trafsave <b>ed0</b>

     

  • 1.21, Den (??), 14:14, 03/10/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    при запуске -
    /usr/local/bin/trafd -i ed0
    выдаёт trafd: unexpected pidfile, probable interface 'ed0' already listen
    это может быть из-за того что ipfw count-ит ed0 ?
     
     
  • 2.22, GigaByte (??), 08:19, 07/12/2005 [^] [^^] [^^^] [ответить]  
  • +/
    >при запуске -
    >/usr/local/bin/trafd -i ed0
    >выдаёт trafd: unexpected pidfile, probable interface 'ed0' already listen
    >это может быть из-за того что ipfw count-ит ed0 ?
    ps -ax | grep trafd, если нету, то прибей pid файл где-нить в /var/run
     
     
  • 3.27, anton284 (?), 15:08, 13/07/2007 [^] [^^] [^^^] [ответить]  
  • +/
    а если есть???
     
     
  • 4.31, guest (??), 19:51, 25/02/2010 [^] [^^] [^^^] [ответить]  
  • +/
    убей :)
     

  • 1.24, Аноним (-), 17:18, 31/03/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Спасибо.
     
  • 1.25, Петрович (?), 22:41, 31/03/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Не пашет трафд.
    все сделал. исполняю трафсейв - получаю пустой файл - ничего не пишет в /var/trafd/
    руками kill -INT давать пробовал трафду. Ноль эмоций. Я в БСД ничего не понимаю, не подскажете, чем можно это лечить? (Фря 5.2.1)
     
  • 1.26, Вопрос (?), 12:13, 17/04/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    "Теперь, для того чтобы построить отчет за определенный период, нужно указать первую и последнюю запись для отчета (параметры -b <первая запись> -e <последняя запись>)." - работает только параметр -e, т.е. при вызове команды
    traflog -n -i ed0 -b7 -e12 -s - осуществляется выборка только 12-й записи. Никто не проконсультирует?
     
  • 1.28, Евгения (??), 16:41, 13/11/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А у меня после после этого
    cd /usr/ports/net/trafshow
         make install
    система выдала ошибку:
    Vulnerability check disabled, database not found trafshow-3.1.tgz doesn't seem to exit in /usr/ports/distfiles/.
    /usr/ports/distfiles/ is not writable by you; cannot fetch.

    И что теперь делать? Помогите новичку, пожалуйста.
    Очень надо поставить на шлюз подсчет трафика.

     
     
  • 2.29, Антон (??), 22:34, 13/11/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >И что теперь делать? Помогите новичку, пожалуйста.
    >Очень надо поставить на шлюз подсчет трафика.

    не хватает прав для записи.
    Проверь что ты по рутом коммандой id
    должно быть uid=0

     

  • 1.30, Oleg (??), 08:20, 16/09/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    интересная статья, но возникло пару вопросов:
    1) Приводятся примеры типа "traflog -i ed0 -n from all to all", а как исключить из выводимой статистики определенный адрес или подсеть? К пимер, мне нужна статистика по всему трафику, не считая трафика с 81.90.201.1?
    2) упорно не хочет работать
    0 0,4,8,12,16,20 * * 1-7 /usr/local/bin/trafsave

    Запускаю crontab -e, эта строчка там есть, если вручную запускаю /usr/local/bin/trafsave, тоже все ок, а автоматом скидывать не хочет :(

     

    игнорирование участников | лог модерирования

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




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

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