Александр Кузнецов рассказал (http://www.nixp.ru/articles/linux_traffic_with_ipcad) о том как решить задачу учета проходящего через шлюз трафика, используя ipcad (http://sourceforge.net/projects/ipcad) (симулирует cisco ip accounting) и несколько простых скриптов формирующих помесячные отчеты на основе получаемых по rsh "ip accounting" данных.URL: http://www.nixp.ru/articles/linux_traffic_with_ipcad
Новость: http://www.opennet.me/opennews/art.shtml?num=6795
по-моему такой метод неприменим в условиях офиса, когда стандартной схемой является шлюз(NAT)+прокси(squid), а если к тому же есть transparent proxy?
>по-моему такой метод неприменим в условиях офиса, когда стандартной схемой является шлюз(NAT)+прокси(squid),
>а если к тому же есть transparent proxy?Почему? добавьте опцию capture-ports enable; и разделяйте подсчет на интерфейсах. Суммарный трафик от шлюза будет на внешнем, клиентский (с учетом от прокси) на внутренних.
Понятное дело, что степень агрегирования уменьшается и объем данных будет рости
>по-моему такой метод неприменим в условиях офиса, когда стандартной схемой является шлюз(NAT)+прокси(squid),
>а если к тому же есть transparent proxy?Для решение проблемы УЧЁТ+SQUID просмотрите нашу заготовку, по кране мере опробовали её и она нормально работает :) Да не на ipcad собрано, но как раз для малых офисов подходит.
http://www.office-control.org
У ipcad есть одна логичная, но ощущаемая через наступания на грабли, особенность. Если интерфейсы выбираются по маске (например, "vlan*") и для некоторых из них есть алиасы, то для них трафика будет посчитан в N раз больше, т.е. для каждого алиасы в логах будет дубликат данных.
Для обхода проблемы был создан небольшой патч (отправлен автору ipcad, но похоже где-то затерялся), вместо звездочки вводящий более строгую маску (например, vlan[0-9][0-9][0-9][0-0]):diff -u --recursive --new-file ipcad-3.6.6/cfglex.l ipcad-3.6.6-new/cfglex.l
--- ipcad-3.6.6/cfglex.l 2005-03-22 14:57:25 +0500
+++ ipcad-3.6.6-new/cfglex.l 2005-08-08 16:45:56 +0600
@@ -66,7 +66,7 @@
ipcacfglval.tv_char = strdup(yytext);
return TOK_STRING;
}
- [a-z]+[_0-9*]* {
+ [a-z]+[_0-9\*\[\]\-]* {
ipcacfglval.tv_char = strdup(yytext);
return TOK_STRING;
}
diff -u --recursive --new-file ipcad-3.6.6/headers.h ipcad-3.6.6-new/headers.h
--- ipcad-3.6.6/headers.h 2005-03-22 14:57:25 +0500
+++ ipcad-3.6.6-new/headers.h 2005-08-08 17:09:49 +0600
@@ -251,4 +251,7 @@
#define MIN(a,b) ((a)<(b)?(a):(b))
#endif /* MIN */+#undef IFNAMSIZ
+#define IFNAMSIZ 32
+
#endif /* __HEADERS_H__ */
diff -u --recursive --new-file ipcad-3.6.6/psrc.c ipcad-3.6.6-new/psrc.c
--- ipcad-3.6.6/psrc.c 2005-03-22 14:57:25 +0500
+++ ipcad-3.6.6-new/psrc.c 2005-08-08 17:02:03 +0600
@@ -62,11 +62,12 @@
/*
* Initialize packet source descriptors.
*/
- if(strchr(ifname, '*')) {
+// if(strchr(ifname, '*')) {
+ if(strchr(ifname, '*') != NULL || strchr(ifname, '[') != NULL){
/*
* The interface does not exist, so it might be dynamic.
*/
- fprintf(stderr, "[DYNAMIC] ");
+ fprintf(stderr, "[DYNAMIC] /%s/ ", ps->ifName);
ps->process_ptr = process_dynamic;
ps->print_stats = print_stats_dynamic;
ps->iface_type = IFACE_DYNAMIC;
Всё прекрасно, вот ещё бы написал как
RRDTools через GNUplot прикрутить.
И тогда бы получился MRTG :)
Ну что сказать, у Opennet продвижение, от
сбора антиквариата переходят к обсуждению новых моделей велосипедов. (например с ручным приводом).
это, простите, баловство.
такой метод подсчёта совершенно неприменим, если за этот самый трафик вам надо собирать с людей деньги, причем не по факту, а по предоплате и с отключением по нулю
это ведь учет трафика, а не система биллинга
Давно использую ipcad для подсчета трафика все прекрасно работает, написал скриптик небольшой на perl который выводит мне отчеты в html за каждый день и суммарный за месяц да еще сохраняет мне полный дамп всех пакетов котрые прошли через внешний интерфейс, чтоб если что ;) можно было провести разбор полётов.
>Давно использую ipcad для подсчета трафика все прекрасно работает, написал скриптик небольшой
>на perl который выводит мне отчеты в html за каждый день
>и суммарный за месяц да еще сохраняет мне полный дамп всех
>пакетов котрые прошли через внешний интерфейс, чтоб если что ;) можно
>было провести разбор полётов.хотелось бы попробовать, не хочу изобретать велосипед, и билинг мне не нужен
а для отчетов было бы не плохо
>по-моему такой метод неприменим в условиях офиса, когда стандартной схемой является шлюз(NAT)+прокси(squid), а если к тому же есть transparent proxy?
И в чём же сдесь проблема? ВСё прекрасно будет работать, поверь мне. Ты просто будешь смотреть трафик который идёт к конкретному пользователю.
На счёт mrtg то он на скока я помню (по крайней мере по Linux) ppp интерфейсы слушать то ли не умеет, то ли слушает их неправильно.
это, простите, баловство.
>такой метод подсчёта совершенно неприменим, если за этот самый трафик вам надо собирать с людей деньги, причем не по факту, а по предоплате и с отключением по нулю
Кто тебе мешает парсить сливать данные с rsh в файл, а потом парсить его как хочешь. У меня такая система работала как экспериментальная какое то время. Если денег не жалко то в принципе люди уходят в небольшой минус и на офис (т.е. на человек 30 )достаточно хорошо работает. Если надо на большое количество человек и более реального времени, то Вам тогда надо на один из банеров которые находяться чуток Выше!
>>по-моему такой метод неприменим в условиях офиса, когда стандартной схемой является шлюз(NAT)+прокси(squid), а если к тому же есть transparent proxy?
>И в чём же сдесь проблема? ВСё прекрасно будет работать, поверь мне.
>Ты просто будешь смотреть трафик который идёт к конкретному пользователю.
>На счёт mrtg то он на скока я помню (по крайней мере
>по Linux) ppp интерфейсы слушать то ли не умеет, то ли
>слушает их неправильно.
>это, простите, баловство.
>>такой метод подсчёта совершенно неприменим, если за этот самый трафик вам надо собирать с людей деньги, причем не по факту, а по предоплате и с отключением по нулю
>Кто тебе мешает парсить сливать данные с rsh в файл, а потом
>парсить его как хочешь. У меня такая система работала как экспериментальная
>какое то время. Если денег не жалко то в принципе люди
>уходят в небольшой минус и на офис (т.е. на человек 30
>)достаточно хорошо работает. Если надо на большое количество человек и более
>реального времени, то Вам тогда надо на один из банеров которые
>находяться чуток Выше!
ага...я начну файлик метров на 650 в один поток сливать и пока я не закончу, будьте уверены - ни в какую статистику это не попадёт...
>ага...я начну файлик метров на 650 в один поток сливать и пока
>я не закончу, будьте уверены - ни в какую статистику это
>не попадёт...да ладно?
>ага...я начну файлик метров на 650 в один поток сливать и пока
>я не закончу, будьте уверены - ни в какую статистику это
>не попадёт...
Это уже как ipcad настроишь и как часто будеш парсить так сказать rsh.log. Если будешь парсить каждые 6 секунд то всё окей будет! Минус в мегабайтах будет равен
скорость канала [Mbit/сек]*6[сек].
хорошо скрещевается с Netflow коллектором http://netflow.cesnet.cz, гораздо более элегантное решение, и статистика интереснее,
netflow ведь :)
>хорошо скрещевается с Netflow коллектором http://netflow.cesnet.cz, гораздо более элегантное решение, и статистика
>интереснее,
>netflow ведь :)
хм, а разве сам ipcad не является netflow коллектором?
зачем его с кем-то скрещивать?
ipcad + flow-tools и вперёд.
>>хорошо скрещевается с Netflow коллектором http://netflow.cesnet.cz, гораздо более элегантное решение, и статистика
>>интереснее,
>>netflow ведь :)
>хм, а разве сам ipcad не является netflow коллектором?
>зачем его с кем-то скрещивать?
>ipcad + flow-tools и вперёд.
Действительно. Отличный коллектор который могет по NetFlow слать куда угодно!
[root@XXXXX /]# ipcad -v
IP Accounting Daemon. ipcad Version 3.6.6
Import {BPF/LIBPCAP/ULOG/LIBIPQ/DIVERT/TEE}; Export {console/file/RSH/NetFlow}
Copyright (c) 2001, 2002, 2003, 2004 Lev Walkin <vlm@lionet.info>
Умеет ли ipcad динамически создаваемыми интерфейсами работать например tun*? а с вланами?
>Умеет ли ipcad динамически создаваемыми интерфейсами работать например tun*? а с
>вланами?
А как ты сам думаешь. Почитай спецификацию.
ipcad uses raw BPF devices (/dev/bpf*), PCAP library (pcap(3)), Linux iptables' ULOG (>=2.4.18-pre8) and IPQ (libipq(3)), BSD divert(4) and tee packet sources.
у меня в ipcad статистика льётся через iptables -j ULOG. потом самописный скрипт на перле по rsh раз в 5 минут забирает статистику и льёт в постгрес. успевает не сильно напрягаясь обработать 2-3 терабайта в месяц.
аналогично, причем не с одного сервака льется в "сборочный коллектор", а дальше лопатится раз в 5 минут скриптами биллинговой системы ... легко обмолачивает огромные объемы трафика (тем более часть трафика можно скинуть в нафик прямо в iptables, если мешает и надо считать только входящий)
А у меня все еще проще: для каждого нового tun запускаю tcpdump а с него все перенаправляю в скрипт, который мне все и считает. Самое приятное - что я сам решаю, что считать, как считать, и каким образом это все перекладывать в базу данных и т.п. И самое приятное - загрузка при 100 мегабитах в секунду - не более 8-10% (FreeBSD AMD64 3Ghz)
В статье рекомендуется делать rsh localhost dump за минуту до полуночи, а потом clear, соответственно, в первую минуту после.Это неправильное решение, которое логично теряет две минуты трафика.
Правильным решением было бы просто в полночь запускать следующие две команды:
rsh localhost cle ip acco
rsh localhost sh ip acco checkpointКоторые делают следующее:
1. "clear ip accounting" перемещает активную таблицу аккаунтинга в специальную "банку", где данные более не изменяются и хранятся в замороженом виде.
2. "show ip accounting checkpoin" показывает содержимое этой банки.Команда "dump" в ipcad'е практически никогда не бывает нужна.
какие такие раз в сутки ? вполне реально даже раз в минуту траф снимать. хотя оставил запас и собираю раз в 5 минут.
root:/home/dexx/temp/ipcad-3.7# rsh localhost help
Permission denied.что мне делать?
>root:/home/dexx/temp/ipcad-3.7# rsh localhost help
>Permission denied.
>
>что мне делать?разрешить трафик через lo0?
Посоветуйте, какой нибудь анализатор логов (простенький билинг) для обработки логов(этих самых дампов или чекпоинтов) ipcad.
>Посоветуйте, какой нибудь анализатор логов (простенький билинг) для обработки логов(этих самых дампов
>или чекпоинтов) ipcad.
awstats
для просмотра, например: http://awstats.sourceforge.net/awstats.mail.html
НО.....
Вопрос.
как бы прикрутить время к логам. не использую iptables
Ребят вопрос такой у меня стоит дебиан 3р1_в1.
Поставил ипкад из пакета .деб
Все бы хорошо, но почему то не подкючается rsh пишет мол у тебя и порт то такой не открыт ( 22 ) и фуфел ты полный. По нетстату смотрю, да действительно никто не слушает 22 порт, но сам ипкад висит на порту (514 как я понял он разный бывает).
Во всех статьях что нашел вроде пишут что должен стартовать ссш сервак(ипкад*овский), но нет его у меня хоть ты тресни в нетстате/ При этом сам ипкад пишет что все ок Configured RSH Server listening at xx.xx.xx.xx
>Ребят вопрос такой у меня стоит дебиан 3р1_в1.
>Поставил ипкад из пакета .деб
>Все бы хорошо, но почему то не подкючается rsh пишет мол у
>тебя и порт то такой не открыт ( 22 ) и
>фуфел ты полный. По нетстату смотрю, да действительно никто не слушает
>22 порт, но сам ипкад висит на порту (514 как я
>понял он разный бывает).
>Во всех статьях что нашел вроде пишут что должен стартовать ссш сервак(ипкад*овский),
>но нет его у меня хоть ты тресни в нетстате/ При
>этом сам ипкад пишет что все ок Configured RSH Server listening
>at xx.xx.xx.xxnetstat -n|grep 514
rsh 127.0.0.1 show ip acco
?
>>...(сожрала крыса)
>>нашел вроде пишут что должен стартовать ссш сервак(ипкад*овский),
>>но нет его у меня хоть ты тресни в нетстате/ При
>>этом сам ипкад пишет что все ок Configured RSH Server listening
>>at xx.xx.xx.xx
>
>netstat -n|grep 514
ТУТ надо бы добавить -l так как я еще ничего не установил/
>
>rsh 127.0.0.1 show ip acco
>?
tcp 0 0 127.0.0.1:514 0.0.0.0:* LISTEN
Мммм и что? Вроде бы rsh без ключа -п коннектитца на 22 порт.
>>netstat -n|grep 514
>ТУТ надо бы добавить -l так как я еще ничего не установил/
>
>>
>>rsh 127.0.0.1 show ip acco
>>?
>tcp 0
> 0 127.0.0.1:514
> 0.0.0.0:*
> LISTEN
>Мммм и что? Вроде бы rsh без ключа -п коннектитца на 22
>порт.Вам нужно посредством протокола rsh присоединиться к localhost (127.0.0.1) на 514 порт (на котором висит ipcad). Вот уж не знаю, как задать это в дебиане, но ИМХО если вы знаете ключи rsh, то сделать это не трудно. Что происходит после rsh 127.0.0.1 show ip acco ? трафик в фаерволе через локалхост разрешен?
>>...(сгрызли мыши)
>Вам нужно посредством протокола rsh присоединиться к localhost (127.0.0.1) на 514 порт
>(на котором висит ipcad). Вот уж не знаю, как задать это
>в дебиане, но ИМХО если вы знаете ключи rsh, то сделать
>это не трудно.
Да так оно и есть. Хорошо делаю так rsh -p 514 localhost help
Выводит
potato:/home/laden# rsh -p 514 localhost help
ssh: connect to host localhost port 514: Connection refused
> Что происходит после rsh 127.0.0.1 show ip acco
>? трафик в фаерволе через локалхост разрешен?
Фаервол вообще не настраивал единственное добавил запрет на порты 137:139 и все
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP tcp -- anywhere anywhere tcp spts:netbios-ns:netbios-ssnChain FORWARD (policy ACCEPT)
target prot opt source destinationChain OUTPUT (policy ACCEPT)
target prot opt source destination
ИЗВИНЯЮСЬ!!! ВОТ что выводит
ssh_exchange_identification: Connection closed by remote host
>Выводит
>potato:/home/laden# rsh -p 514 localhost help
ssh_exchange_identification: Connection closed by remote host
>> Что происходит после rsh 127.0.0.1 show ip acco
>>? трафик в фаерволе через локалхост разрешен?
>ИЗВИНЯЮСЬ!!! ВОТ что выводит
>ssh_exchange_identification: Connection closed by remote host
>>Выводит
>>potato:/home/laden# rsh -p 514 localhost help
>ssh_exchange_identification: Connection closed by remote host
>>> Что происходит после rsh 127.0.0.1 show ip acco
>>>? трафик в фаерволе через локалхост разрешен?icq175121548
>>ИЗВИНЯЮСЬ!!! ВОТ что выводит
>>ssh_exchange_identification: Connection closed by remote host
>>>Выводит
Для пользователей linux. Оказалась есть фишка Что rsh это обычный ssh, а нам нужен именно протокол связи rsh. Для debian я нашел в пакетах rsh-client.
После установки пишем
netkit-rsh localhost show ip accounting
И радуемся.
У меня rsh пароль просит
оказалось что в системе отсутствует файл /etc/hosts.equiv
создал его, не помогло. что ему еще нада???
Извеняюсь, что малясь не в тему..
Кто-нибудь сталкивался может с такой проблемой при сборке ipcad-3.7
./configure --prefix=/usr/ --sysconfdir=/etc/ && make
main.o(.text+0x2b8):/usr/local/src/ipcad-3.7/main.c:264: undefined reference to `ap_signal'
main.o(.text+0x2c6):/usr/local/src/ipcad-3.7/main.c:265: more undefined references to `ap_signal' follow
collect2: ld returned 1 exit status
make: *** [ipcad] Ошибка 1
Пытаюсь водрузить на slackware10.2
также стоит libpcap-0.9.5, tcpdump-3.9.5
Заранее благодарен.
>У меня rsh пароль просит
>оказалось что в системе отсутствует файл /etc/hosts.equiv
>создал его, не помогло. что ему еще нада???
apt-get install rsh-client (у тебя стоит видимо ssh)
За это отдельное спасибо
Братья, дайте кто-нить скриптик для вывода логов ипкада в веб-интерфейс, очень надо!Спасибо.
Здравствуйте!Пожалуйста подскажите в чем собсно трабл:)
Есть Mandriva2007+ipcad. Причем ipcad собирается из исходников без ошибок, корректно стартует и ведет свой dump.
При выполнении rsh localhost help(да и любой другой ipcad-овской команды)
Всегда пишет:
connect to address 127.0.0.1 port 544: Connection refused
trying normal rsh (/usr/bin/rsh)Было сделано следующее:
1.rpm -e rsh-0.17-15mdk.i586 (после удаления команда rsh выполнялась с тем же результатом)
2. Были удалены все файлы rsh, rsh.krb5,rsh.netkit(команда rsh не выполнялась:))
3. rpm -ivh rsh-0.17-15mdk.i586.rpm (после установки пакета rsh localhost help(и другие команды) стали восприниматься как и полагается)Решение кривое конечно, но как иначе я сам не знаю(начинающий я пользователь).
(Кстати, при использовании Linux Mandriva 2008 free(установка без выбора отдельных пакетов) таких проблем с ipcad нет)
Если кто знает в чем ,была проблема с rsh в Mandrive2007(и как ее правильно решать?!),пожалуйста, объясните.
Многие вам будут очень благодарны!
разреши в firewall прохождение трафика через lo0
>разреши в firewall прохождение трафика через lo0В firewall все ACCEPT по умолчанию. Тут вроде в сторону alternatives надо копать.
А как копать не наю:)
Да и работает rsh localhost <command>.
Простое решениепроблем учёта и минимум настроек
http://traffpro.ru