The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Подсчет трафика. Новое(?) решение или полная ерунда."
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Подсчет трафика. Новое(?) решение или полная ерунда."
Сообщение от da emailИскать по авторуВ закладки on 12-Ноя-01, 16:30  (MSK)
Возникла "вечная" проблема подсчета "внешнего" трафика при следующих условиях:
Система FreeBSD 4.3, два 10Mb "внешних" интерфейса (к разным провайдерам), 10Mb интерфейс
в локалку и Granch SBNI - выделенка. Из локальной сети во внешний мир выходят через natd и ipfw.
Трафик небольшой - немного "густо", затем долго "пусто".

Попробовал для этого ipacctd и trafd - цифры полученные и от того и от другого мягко говоря
совсем  похожи на выдаваемыми ipfw count from any to any via ep0 и ipfw count from any to any via ep1.
Кроме того оба пакета сбрасывают в лог информацию уже _после_ диверта, т.е. не видно с какой локальной
машины пошел запрос.

Теперь чтоже я сделал и собственно из-за чего весь сыр-бор.
Почитав ман на ipfw, порывшись в исходниках ядра и немного поэкспериментировав, пришел к следующему:
1. в ipfw на все divert'ные правила добавляю log logamount 0
2. в syslog.conf  security.*     /var/log/security заменяю на
   security.notice   /var/log/security
   security.=info    /var/log/traffic
3. в /sys/netinet/ip_fw.c изменяю функцию ipfw_report (добавлен вывод ip->ip_len):
   log(LOG_SECURITY | LOG_INFO, "%s %s %s %d out via %s%d%s\n", name, action, proto, ip->ip_len, oif->if_name, oif->if_unit, fragment);
   log(LOG_SECURITY | LOG_INFO, "%s %s %s %d in via %s%d%s\n", name, action, proto, ip->ip_len, oif->if_name, oif->if_unit, fragment);
4. в crontab добавляю
   0  *  *  *  *  traflog.sh
   где traflog.sh (не привожу текст, т.к. в свернутом виде неудобочитаем, а в развернутом - слишком велик)
   выполняет следующие функции:
   1. переносит /var/log/traffic во временный файл и создает пустой /var/log/traffic
   2. с помощью awk суммирует размер подряд идущих пакетов с одинаковыми адресами/портами src/dest,
      а так же разворачивает записи типа last message repeated 3 times
   3. сортирует получившийся файл
   4. и повторяет процедуру объединения размеров подряд идущих пакетов

Что я с этого имею?
Я имею записи типа: TCP 10.0.0.14:1063 64.12.25.51:5190 out via ep1
Я имею точную цифру которая сходится с ipfw count и со счетом провайдера.

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

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "RE: Подсчет трафика. Новое(?) решение или полная ерунда."
Сообщение от Тошик emailИскать по авторуВ закладки on 26-Май-02, 16:09  (MSK)
Вообще-то интересно!  А можешь прислать сам текст traflog.sh ?
  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "RE: Подсчет трафика. Новое(?) решение или полная ерунда."
Сообщение от Gara emailИскать по авторуВ закладки on 31-Май-02, 14:28  (MSK)
http://www.opennet.dev/openforum/vsluhforumID3/327.html

посомтри тут может тебе что понравится, раз ты любитель ковырять ядро:)

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




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

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