Kiev1.org Карта сайта Файлы Фотографии Киева
  
Реклама:

Kaps optik 1042 бинокль цена.






Разделы
 
 Sysadmin
 Антиглобалисты
 Ереси и секты
 Катастрофы
 Компьютерные новости
 Непроверенное
 О проекте
 О фотогалерее
 Политика и власть
 Православие
 Предприятия Украины
 Протесты Людей против нового мирового концлагеря
 Разное
 Россия
 Старец Паисий 1924-1994
 Стояние за Истину
 Суды в Украине
 Тайна беззакония
 экуменизм


Внимание! Читая пророчества на этом сайте помните что достоверность трудно проверить и все может во времени изменяться - самое главное думать своей головой и не верить легкомысленно всему что говорят, особенно советское телевидение
"О дне же том, или часе, никто не знает, ни Ангелы небесные, ни Сын, но только Отец (Мк. 13, 32)"

Как оперативно подсчитать IP трафик клиента



Есть несколько (cотен?) вариантов подсчета трафика. Предлагаемый метод не блещет оригинальностью, но зато устанавливается моментально и при желании на нем можно пожить пока не найдете чего-то более другого (скоро напишу вариант через SNMP - поумнее будет :) Проги небольшие - всего строчек по пять ;-) dkws.narod.ru/online/ipcount.html
Есть несколько (cотен?) вариантов подсчета трафика:
По данным, взятым по SNMP (OutOctets на интерфейсе, можно прикрутить mrtg)
По данным, взятым из Cisco (ip accounting)
По данным, взятым из /proc/tty/driver/serial (X: tx:9999 rx:9999)
По данным, взятым из radacct (radius-accounting/ OutOctets)
По ipchains (ipfwadm/ipfw)
С помощью nacctd (основанном на libcap/tcpdump)
Другие (я знаю как минимум еще дюжину, а что толку? Муть какая-то размером с мег)
Каждый из них считает по-разному(!) ;-) и не для всяких случаев пригоден. Я так однозначно
и не определился какой из них считает более корректно. В одном методе пинг на 64 байта
отражается как 84 байта, в другом как 89, с другой стороны при подсчете TCP трафика второй
отстает....
Предлагаемый метод не блещет оригинальностью, но зато устанавливается моментально и при
желании на нем можно пожить пока не найдете чего-то более другого (скоро напишу вариант
через SNMP - поумнее будет :) Проги небольшие - всего строчек по пять ;-)

Как работает данный вариант?
Трафик считается для конкретных IP адресов, при условии что эти IP проходят через ваш Linux
(kernel 2.2.X!) как через gateway. Например выделенки на мультипортовой плате по PPP.
Метод основан на применении ipchains. Есть дока на русском вот тут. Смысл метода такой:
ставим разрешительную цепочку на output для такого-то IP (несмотря на то, что все и так
разрешено и без этого правила. Так надо!), например:


# ipchains -A output -d AAA.BBB.CCC.DDD -j ACCEPT

Проверяем:
# ipchains -L
Chain input (policy ACCEPT):
Chain forward (policy ACCEPT):
Chain output (policy ACCEPT):
target prot opt source destination ports
ACCEPT all ------ anywhere AAA.BBB.CCC.DDD n/a

Правило установлено. Осталось посчитать байтики. Грубо это можно сделать так:
# ipchains -L -v
Chain input (policy ACCEPT: 4195746 packets, 1765818402 bytes):
Chain forward (policy ACCEPT: 142999 packets, 29941516 bytes):
Chain output (policy ACCEPT: 4182597 packets, 1309541595 bytes):
pkts bytes target prot opt tosa tosx ifname mark outsize source destination
ports
4 308 ACCEPT all ------ 0xFF 0x00 any anywhere
AAA.BBB.CCC.DDD n/a

Из примера видно что клиенту ушло 308 байтов (пинганул я его четырьмя пакетами). По
прошествию времени во втором столбике будет накапливаться статистика по байтам. Ее надо
куда-то пихать и светить клиенту - чтобы не вопил что мы неправильно считаем (он может
наблюдать все в он-лайне и проверять). Для простоты я сделал так (больше мне ничего тогда не
пришло в голову :) быстренько накатал на Perl прогу, которая кидает данные в хэш. (Когда оно
работает - хорошо - можно отдохнуть и спокойно написать что-нибудь фундаментальное. А надо
ли? :)

Как это автоматизировать?
Берем вот здесь мою программку на Perl.
Создаем каталог /var/spool/IPcount
Кладем прогу туда.
Запускаем:
# ipcount.pl
Она снимет статистику, положит данные в хэш и обнулит счетчики. При этом желательно чтобы
IP back-ресолвилась в имя хоста (иначе не будет работать, или меняйте строчку gethostbyaddr
в скрипте на другую).
Чтобы все делалось само автоматом ее надо поставить в /etc/crontab:
*/10 * * * * /var/spool/IPCounter/ipcount.pl
В результате имеем хэш с информацией о трафике клиентов.

Как посмотреть статистику глазами?
Раз надо глазами, то возьмите эту программку и смотрите себе на здоровье :)

Как ее светить юзеру?
Ну это уж надо самому догадаться. Положите showipcount.pl себе в cgi-bin, подправьте на
предмет выборки КОНКРЕТНОГО IP, а не всей базы, состряпайте index.html у клиента в домашней
директории ~/public_html, поставьте там вызов cgi-скрипта (либо через SSI, либо через
passthru в PHP) и все дела.
-------------------
та самая программка на Perl.
----------------------------
#!/usr/bin/perl

#
# pharao@uatel.net (c) 1999
#

dbmopen %h, "/var/spool/IPCounter/ipcount", 0600;
foreach (sort keys %h) {
print "$_t";
$size = $h{$_};
$size =~ s/(d)(d{3})$/$1'$2/;
while( $size =~ s/(d)(d{3})'/$1'$2'/ ) {};
print "$sizen";
}
dbmclose %h;





Внимание! Читая пророчества на этом сайте помните что достоверность трудно проверить и все может во времени изменяться
"О дне же том, или часе, никто не знает, ни Ангелы небесные, ни Сын, но только Отец (Мк. 13, 32)"