The OpenNET Project / Index page

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

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

"Тематический каталог: Linux Расчет трафика через Iptables. (..."
Сообщение от auto_topic on 30-Авг-02, 15:25 
Обсуждение статьи тематического каталога: Linux Расчет трафика через Iptables. (linux firewall iptables traffic)

Ссылка на текст статьи: http://www.opennet.ru/base/net/traf_mes.txt.html

Cообщить модератору | Наверх | ^

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "Linux Расчет трафика через Iptables. (linux firewall iptable..."
Сообщение от and email on 30-Авг-02, 15:25 
Первое ограничение легко борется путем болле частого запускания скрипта считывания трафика. У меня работает раз в час.
Cообщить модератору | Наверх | ^

4. "RE: Linux Расчет трафика через Iptables. (linux firewall ipt..."
Сообщение от SwitchTX email on 01-Сен-02, 14:00 
>Первое ограничение легко борется путем болле частого запускания скрипта считывания трафика. У
>меня работает раз в час.

Каждый час я запускаю "соседний" скрипт для другого - мониторинга когда машина работает (например по выходным охранники сидят в инете).

Cообщить модератору | Наверх | ^

2. "Linux Расчет трафика через Iptables. (linux firewall iptable..."
Сообщение от Аноним email on 31-Авг-02, 19:09 
Все хорошо, но зачем .xls - ведь есть mysql
Борис
Cообщить модератору | Наверх | ^

3. "RE: Linux Расчет трафика через Iptables. (linux firewall ipt..."
Сообщение от SwitchTX email on 01-Сен-02, 13:58 
Потому, что файл отдал начальству и забыл о нем.
Просто в моей последней редакции этого скрипта идет автоматичекая замена ip адреса на имя пользователя. Поэтому моего участия там больше не нужно.
Cообщить модератору | Наверх | ^

5. "Linux Расчет трафика через Iptables. (linux firewall iptable..."
Сообщение от Аноним email on 01-Сен-02, 17:31 
а чем ipac-ng  не подошел для этого?
Cообщить модератору | Наверх | ^

11. "RE: Linux Расчет трафика через Iptables. (linux firewall ipt..."
Сообщение от SwitchTX email on 04-Сен-02, 11:17 
У меня не требуется ничего инсталлировать. Сейчас для меня это важно. Как важно и для всех начинающих. Система-то полноценно работает, и любое вмешательство только в том случае если все проверил, во всем уверен и сможешь починить.:-)))
Cообщить модератору | Наверх | ^

6. "Linux Расчет трафика через Iptables. (linux firewall iptable..."
Сообщение от arruah email on 02-Сен-02, 07:16 
все таки респектабельней было бы всю статистику в базу ложить. А там уже с ней разбираться.
Cообщить модератору | Наверх | ^

7. "RE: Linux Расчет трафика через Iptables. (linux firewall ipt..."
Сообщение от SwitchTX email on 02-Сен-02, 16:15 
Согласен. Но пока этого не требуется. точнее она просто еще не установлена на сервере.
Cообщить модератору | Наверх | ^

8. "Linux Расчет трафика через Iptables. (linux firewall iptable..."
Сообщение от andreis email on 04-Сен-02, 09:07 
У тебя между считыванием счетчиков и обнулением проходит время - данные теряются за этот период.
Опцию -Z можна задать вместе с -L.
Из man-а "It is legal to specify the -L, --list (list) option as well, to see the counters immediately before they are cleared."
Cообщить модератору | Наверх | ^

9. "RE: Linux Расчет трафика через Iptables. (linux firewall ipt..."
Сообщение от SwitchTX email on 04-Сен-02, 09:59 
А вот за это спасибо. Посмотрю, что можно сделать.
Cообщить модератору | Наверх | ^

10. "Изменения и дополнения!!!"
Сообщение от SwitchTX email on 04-Сен-02, 11:10 
После присвоения параметров добавляем строчки...

# Присваивание параметров для мониторинга
...
# Вывод данных во временный файл и
# очистка счетчиков для следующего дня
/sbin/iptables -LZ -v -x > dat.tmp

Затем в расчете величины трафика меняем строки на следующие...

# Расчет величины трафика входящего на интерфэйс eth1
# Максимальный расчетный трафик за день - 953МВ
IN=`cat dat.tmp | grep in_traf | head -c 18 | tail -c 9`
FW=`cat dat.tmp | grep fwd_in_traf | head -c 18 | tail -c 9`
...

Затем в расчете пользователей меняем аналогичные строки...

# Расчет пользователей
...
RX=`cat dat.tmp | grep chain_$i | head -c 18 | tail -c 9`
...

В конце скрипта удаляем строку с обнулением трафика!

Внимание. В строках расчета входящего трафика изменились параметры команду grep!

Cообщить модератору | Наверх | ^

14. "RE: Изменения и дополнения!!!"
Сообщение от SwitchTX email on 16-Сен-02, 11:25 
Еще одно уточнение... У меня почему-то не работает параметр "-LZ" в одной строке.
поэтому я сделал это в 2 строчки.

>После присвоения параметров добавляем строчки...
>
># Присваивание параметров для мониторинга
>...
># Вывод данных во временный файл и
># очистка счетчиков для следующего дня
...
/sbin/iptables -L -v -x > dat.tmp
/sbin/iptables -Z
...

Cообщить модератору | Наверх | ^

32. "RE: Изменения и дополнения!!!"
Сообщение от Versus email on 18-Окт-02, 03:14 
iptables -L -v -x -Z
а не -LZ
Cообщить модератору | Наверх | ^

33. "Спасибо..."
Сообщение от SwitchTX email on 18-Окт-02, 10:43 
>iptables -L -v -x -Z
>а не -LZ

Да, все правильно.

Cообщить модератору | Наверх | ^

12. "Linux Расчет трафика через Iptables. (linux firewall iptable..."
Сообщение от Criz email on 15-Сен-02, 19:50 
А не подскажите ли как изменятся скрипты, если есть два интерфейса с локальной сетью...
Cообщить модератору | Наверх | ^

13. "RE: Linux Расчет трафика через Iptables. (linux firewall ipt..."
Сообщение от SwitchTX email on 16-Сен-02, 11:22 
>А не подскажите ли как изменятся скрипты, если есть два интерфейса с
>локальной сетью...

А подробнее? трафик нужно считать между 2-мя локальными сетками? или еще как? Сколько внешних интерфейсов? и пр... Чем полнее, тем лучше...:-)

Cообщить модератору | Наверх | ^

15. "Linux Расчет трафика через Iptables. (linux firewall iptable..."
Сообщение от Михаил email on 16-Сен-02, 18:46 
Дополнения и ,возможно, улучшения:
1)строки -LZ и не будут работать, нужно ставить так
/sbin/iptables -L -Z -v -x -n > dat.tmp
тогда сначала информация о траффике запишется в файл, а затем обнулиться
2)конструкцию `head -c 18 | tail -c 9` можно заменить на такую `awk '{print $2}'` - эффект такой-же
Cообщить модератору | Наверх | ^

16. "Linux Расчет трафика через Iptables. (linux firewall iptable..."
Сообщение от Criz email on 16-Сен-02, 21:10 
Так вот: имеется сетки (192.168.12.0, и 192.168.0.0), и к ним два интерфейса (192.168.12.51, и 192.168.0.2). Вопросик: как можно подправить чтобы скрипты считали для обоих сетей.
И ещё есть доработочка к скриптам: я считаю что считать нужно не в цепочке FORWARD, а в OUTPUT, иначе при работе через сквид трафик не считается (по крайней мере мне так показалось.)
Cообщить модератору | Наверх | ^

19. "RE: Linux Расчет трафика через Iptables. (linux firewall ipt..."
Сообщение от SwitchTX email on 18-Сен-02, 11:27 
Если у тебя сквид - считать нужно все цепочки (OUTPUT и FORWARD) поскольку не все запросы кеширует сквид (mail, telnet и пр.).
Но, если у тебя там стоит еще и файл-сервер (Samba, etc...), то тогда нужно придумывать, как разделить это дело уже по протоколам...:-(((((
Cообщить модератору | Наверх | ^

17. "Linux Расчет трафика через Iptables. (linux firewall iptable..."
Сообщение от Criz email on 16-Сен-02, 21:11 
ой, забыл, внешний интерфейс только один...
Cообщить модератору | Наверх | ^

18. "Linux Расчет трафика через Iptables. (linux firewall iptable..."
Сообщение от Михаил email on 17-Сен-02, 08:42 
Мне кажется нужно вместо IP-адресов подставить сети
198.16.12.0/24 и 198.16.0.0/24 и считать на здоровье
iptables -A INPUT -d 198.16.12.0/24 -j ACCEPT
iptables -A INPUT -d 198.16.0.0/24 -j ACCEPT
iptables -A OUTPUT -s 198.16.12.0/24 -j ACCEPT
iptables -A OUTPUT -s 198.16.0.0/24 -j ACCEPT
и можно снимать трафик по сетям, но искать в grep придется так:
iptables -L INPUT -Z -v -x -n > datin.tmp
couuntin=`cat datin.tmp | grep 198.16.12.0/24 | awk '{print $2}'`

аналогично и выходная цепочка

Cообщить модератору | Наверх | ^

20. "RE: Linux Расчет трафика через Iptables. (linux firewall ipt..."
Сообщение от Сергей email on 19-Сен-02, 12:05 
>Мне кажется нужно вместо IP-адресов подставить сети
>198.16.12.0/24 и 198.16.0.0/24 и считать на здоровье
>iptables -A INPUT -d 198.16.12.0/24 -j ACCEPT
>iptables -A INPUT -d 198.16.0.0/24 -j ACCEPT
>iptables -A OUTPUT -s 198.16.12.0/24 -j ACCEPT
>iptables -A OUTPUT -s 198.16.0.0/24 -j ACCEPT
>и можно снимать трафик по сетям, но искать в grep придется так:
>
>iptables -L INPUT -Z -v -x -n > datin.tmp
>couuntin=`cat datin.tmp | grep 198.16.12.0/24 | awk '{print $2}'`

countin=`awk '/198.16.12.0\/24/ {print $2}'`

>
>аналогично и выходная цепочка


Cообщить модератору | Наверх | ^

21. "Linux Расчет трафика через Iptables. (linux firewall iptable..."
Сообщение от Ender on 20-Сен-02, 00:03 
у меня немного другой вариант решения той же самой проблемы. что делать в случае использования ваших скриптов, если машина часто выключается, так как стоит в обшаге и даёт друзьям доступ в инет :) и соседу не нравится её шум? причём выключается кнопочкой power... как быть, если iptables часто подправляется, в результате чего, и в предыдушем случае, iptables теряет всю статистику? инет у нас шустрый, 1Gb канал, так что за несколко минут может натечь мепабайтный траффик. ваше решение как видно не подходит :)
может кому понравится вариант заставить iptables логать через syslog, используя kernel.debug скажем, и ловить лог на эту facility через pipe. написать демона, что будет слушать pipe и диференцировать тнфу - это лог юзверя с локального ip(я бросаю его в sql :), это сообшение ядра...
так удобней будет - черти в любой момент могут посмотреть это дело на страничке, на индивидуальных шарах. и причём инфа неза кждый час, а online :))
Cообщить модератору | Наверх | ^

22. "RE: Linux Расчет трафика через Iptables. (linux firewall ipt..."
Сообщение от smkpi on 20-Сен-02, 17:38 
по голове надо настучать за отключение power'ом
мне тут раз перегрузили (не могли из X'ов выйти, блин)
так после этого на винте 2 бэд-блока образовалось
и один из них в swap-разделе... пришлось весь диск переформатировать...

а по поводу syslog - в iptables есть ULOG - для userspace programm
легче будет

Cообщить модератору | Наверх | ^

26. "RE: Linux Расчет трафика через Iptables. (linux firewall ipt..."
Сообщение от Ender on 02-Окт-02, 18:44 
простите за опечатки - клава слишком продвинутая, без русских букв - не дорос ещё до неё :)
по поводу power'a - дык стучу, не спасает :( и ещё мелочь - тут как бы общага, вырубают его, бедняжку, и не обязательно power'ом.
а по поводу ULOG - к тому времени я в нём ещё не разобрался, написать демона проще было. не подкинешь инфы? из мануала я мало что вытянул :((
Cообщить модератору | Наверх | ^

28. "RE: Linux Расчет трафика через Iptables. (linux firewall ipt..."
Сообщение от Kozak email on 07-Окт-02, 16:19 
>по голове надо настучать за отключение power'ом
>мне тут раз перегрузили (не могли из X'ов выйти, блин)
>так после этого на винте 2 бэд-блока образовалось
>и один из них в swap-разделе... пришлось весь диск переформатировать...
>
>а по поводу syslog - в iptables есть ULOG - для userspace
>programm
>легче будет

Где ж оно легче? Я дня 3 прогу на С писал, так оказалось, что у netlinka ограничение на размер буфера, так что она с short read вылетала. Пришлось сырцы править и ядро пересобирать.
Правда мне содержимое пакетов анализировать нужно было и ulogd не помогал, но все равно для подсчета трафика лог парсить нужно, так по-моему статистику снимать легче.
Кстати, если просто с интерфейса нужно, так почему бы `cat /proc/net/dev>tmp.dat` переодически не использовать?


Cообщить модератору | Наверх | ^

29. "RE: Linux Расчет трафика через Iptables. (linux firewall ipt..."
Сообщение от Ender on 15-Окт-02, 18:58 
прога была написана мене чем за два дня.
статистику мне надо снимать не с интерфейса(на нём 2 ip, хотя по зтой причине), а считать каждый пакет отдельно.
можно парсить файл, что выдаёт syslod, но тогда придётся вешать парсер на cron, каторый в принципе катит, но обновляет _слишком_ редко(реже раз в минуту).
от поэтому я и перенаписал парсер лога syslog так, чтобы он на входе брал не файл, а pipe. так что сейчас юзверь можёт сьесть лишнего траффика не более чем на размер пакета :)) а тогда 1М * 60 сек - что-то много для общаги, не находишь?
прога написана на си, ест не более 1% процессорного времени, выход бросает в sql.
Cообщить модератору | Наверх | ^

38. "RE: Linux Расчет трафика через Iptables. (linux firewall ipt..."
Сообщение от Alex email on 04-Дек-02, 20:55 
Ender а можешь выслать мне свои примеры, хотелось бы посмотреть...
Cообщить модератору | Наверх | ^

41. "RE: Linux Расчет трафика через Iptables. (linux firewall ipt..."
Сообщение от Max on 11-Янв-03, 18:46 
>прога была написана мене чем за два дня.
>статистику мне надо снимать не с интерфейса(на нём 2 ip, хотя по
>зтой причине), а считать каждый пакет отдельно.
>можно парсить файл, что выдаёт syslod, но тогда придётся вешать парсер на
>cron, каторый в принципе катит, но обновляет _слишком_ редко(реже раз в
>минуту).
>от поэтому я и перенаписал парсер лога syslog так, чтобы он на
>входе брал не файл, а pipe. так что сейчас юзверь можёт
>сьесть лишнего траффика не более чем на размер пакета :)) а
>тогда 1М * 60 сек - что-то много для общаги, не
>находишь?
>прога написана на си, ест не более 1% процессорного времени, выход бросает
>в sql.

Я тоже занимаюсь этой задачей сейчас
Я брал статистику не с сислога а напрямую с канала /proc/kmesg (сислог сам берет данные оттуда)
но при этом столкнулся с такой проблемой: при большом трафике (10 мбит, загрузка 100%) канал переполнялся и строчки лога терялись, и считалось неправильно.. увеличение буфера не помогло. У тебя канал еще шире и качают наверно поболе :) у тебя не возникало такой проблемы?

Cообщить модератору | Наверх | ^

42. "RE: Linux Расчет трафика через Iptables. (linux firewall ipt..."
Сообщение от Ender on 12-Янв-03, 06:16 
>Я тоже занимаюсь этой задачей сейчас
>Я брал статистику не с сислога а напрямую с канала /proc/kmesg (сислог
>сам берет данные оттуда)
>но при этом столкнулся с такой проблемой: при большом трафике (10 мбит,
>загрузка 100%) канал переполнялся и строчки лога терялись, и считалось неправильно..
>увеличение буфера не помогло. У тебя канал еще шире и качают
>наверно поболе :) у тебя не возникало такой проблемы?
нет, проблемы такой не стояло. хотя у нас сеть и 100Mbit (1G канал - это до города. на нём мы все и сидим) и трафик бывает под 3M/sec и выше, но мой провайдер считает трафик чуть чуть по иному, чем я - я считаю всё, что только бросается в лог, а пров часть пакетов  игнорирует. и хоть убейте, понятия не имею какую. в общем мной тподсчитанный рафик всегда больше, чем тот, за который я плачу деньги.
при проверке же со счётчиками iptables я особых расхождений не заметил.
смотрите файл tcounterd.tar.bz2 на ftp://nick.dorms.spbu.ru.
предуперждаю сразу - это моя самая первая прога, написанная под линух, да ещё и под mysql. причём написанная под влиянием обстоятельтсв - потратил у меня один несколько сотен метров на халяву, пока его вырубило. теперь не тратит :)
Cообщить модератору | Наверх | ^

46. "RE: Linux Расчет трафика через Iptables. (linux firewall ipt..."
Сообщение от MiRacLe email on 04-Фев-03, 11:02 
Может кто скинет этот исходничек на мыло shaeh@rambler.ru а то не могу зайти на FTP
Cообщить модератору | Наверх | ^

71. "RE: Linux Расчет трафика через Iptables. (linux firewall ipt..."
Сообщение от Alex (??) on 07-Апр-04, 12:58 
1
Cообщить модератору | Наверх | ^

23. "Linux Расчет трафика через Iptables. (linux firewall iptable..."
Сообщение от noy email on 29-Сен-02, 17:10 
Извините, я новичек, и поэтому непонял...
чего нужно записать вместо "...*"
у меня внешний интерфейс eth0
внутренняя сеть 192.168.100.0
адреса в сети 192.168.100.2 и 192.168.100.10
подскажите чего как в ентих скриптах прописать
А то больше трафик нечем считать,netGate неработает...
net-acct как-то неправильно считает...
одна надежда на ентот скрипт осталась :))
Cообщить модератору | Наверх | ^

24. "RE: Linux Расчет трафика через Iptables. (linux firewall ipt..."
Сообщение от Serg email on 02-Окт-02, 13:00 
Люди! Помогите ламеру. После создания IP-цепочек отрубило 21 порт. Теперь получился однорукий FTP, жалуются субчики. Подскажите шо делать.
Cообщить модератору | Наверх | ^

25. "RE: Linux Расчет трафика через Iptables. (linux firewall ipt..."
Сообщение от SwitchTX email on 02-Окт-02, 13:25 
>Люди! Помогите ламеру. После создания IP-цепочек отрубило 21 порт. Теперь получился однорукий
>FTP, жалуются субчики. Подскажите шо делать.

Включить порт обратно и почитать примеры цепочек. В этом же каталоге есть инфа по установке и настройке iptables

Cообщить модератору | Наверх | ^

27. "RE: Linux Расчет трафика через Iptables. (linux firewall ipt..."
Сообщение от Kozak email on 07-Окт-02, 16:00 
>Люди! Помогите ламеру. После создания IP-цепочек отрубило 21 порт. Теперь получился однорукий
>FTP, жалуются субчики. Подскажите шо делать.

для statefull файервола

modprobe ip_conntrack_ftp
и
modprobe ip_nat_ftp (если нужно натить)

и вначале скрипта
iptables -A INPUT -m state --state ! NEW,INVALID -j ACCEPT
iptables -A FORWARD -m state --state ! NEW,INVALID -j ACCEPT (если нужно)

Cообщить модератору | Наверх | ^

30. "Linux Расчет трафика через Iptables. (linux firewall iptable..."
Сообщение от Аноним email on 16-Окт-02, 11:44 
Может быть я чего-то не понял... у меня возник вопрос - а можно ли использовать приведенный выше скрипт для подсчета траффика по конкретным IP адрессам?
Ситуация такая - есть сетка с одной адресацией 192.168.0. но на самом деле в сети две между собой не связанные фирмы, которые выходят в инет через роутер 192.168.0.151 Хотелось бы знать сколько в день (неделю, месяц) съедают траффика они, а сколько мы. Так как платим мы поровну, но жрут они значительно больше нас.

Заранее спасибо.

Cообщить модератору | Наверх | ^

31. "RE: Linux Расчет трафика через Iptables. (linux firewall ipt..."
Сообщение от SwitchTX email on 16-Окт-02, 12:46 
Да, может считать по отдельным ip адресам.
это в том месте где мы заводим цепочки для пользователей.
Просто потом нужно будет просуммировать отдельные адреса.

Лезь ко мне в аську я тебе отпишу как это лучше сделать. #25221460

Cообщить модератору | Наверх | ^

34. "Linux Расчет трафика через Iptables. (linux firewall iptable..."
Сообщение от Criz email on 23-Окт-02, 21:50 
Послушайте, а как вы считаете, если считать входящий трафик в таблице Mangle? Я вроде так сделал, пока работает, ща буду проверять на правдивость.
Cообщить модератору | Наверх | ^

35. "Linux Расчет трафика через Iptables. (linux firewall iptable..."
Сообщение от Criz email on 30-Окт-02, 19:34 
Подскажите пожалуйста, как задать переменную не только месяца и дня (MNTH=`date +%m`;DAT=`date +%d`), но и часов и минут?
Cообщить модератору | Наверх | ^

36. "В мане это есть....."
Сообщение от SwitchTX email on 31-Окт-02, 10:20 
Набираешь "man date" и смотришь раздел "формат"
"date +%M" - минуты
"date +%H" - часы
А вообще там есть еще несколько размеров часов...

Так что лучше в мануал...

Cообщить модератору | Наверх | ^

37. "RE: В мане это есть....."
Сообщение от Criz email on 31-Окт-02, 13:52 
Нашёл, спасибо!
Cообщить модератору | Наверх | ^

39. "Linux Расчет трафика через Iptables. (linux firewall iptable..."
Сообщение от Igor email on 20-Дек-02, 16:57 
Внимательно прочитал, но может быть есть у кого готовый скрипт (для минимальной правки) для следующей задачи : есть локалка (192.168.0.0), машина с MandrakeLinux 9.0 (iptables) с 2 сетевухами - одна в локалку, другая во внешний мир(выделенка).Нужно считать траффик как исходящий, так и входящий для сети + учитывать его объем как для конкретного пользователя, так и по конкр.IP - адресу + видеть куда ходил пользователь. Счетчики для пользователя желательно не сбрасывать, работа в режиме накопления.
Буду очень благодарен, если поможете.
Игорь.  
P.S. firewall будет слеплен  с помощью guarddog (поддерживается iptables).
Cообщить модератору | Наверх | ^

53. "Linux Расчет трафика через Iptables. (linux firewall iptable..."
Сообщение от Vasiliy email on 08-Апр-03, 14:58 
Добрый! Игорь сейчас у меня такая же проблемка. Насело начальство на контроль траффика, помогите готовым скриптиком.
RH 7.2 eth0(локалка), ppp0(в свет), iptables v1.2.3
Cообщить модератору | Наверх | ^

40. "Linux Расчет трафика через Iptables. (linux firewall iptable..."
Сообщение от cfadmin email on 31-Дек-02, 14:20 
Люди а у кого есть скрипт собирающий эту статистику в базу даных mysql?
Cообщить модератору | Наверх | ^

43. "RE: Linux Расчет трафика через Iptables. (linux firewall ipt..."
Сообщение от Ender on 12-Янв-03, 06:40 
>Люди а у кого есть скрипт собирающий эту статистику в базу даных
>mysql?
могк бросить пример.

#! /usr/bin/perl -w

use Mysql;
$db = Mysql->Connect('localhost', 'iplog', 'iplog');

@tables = $db->ListTables;
$query = $db->Query("select ip,cur,name,lim,paid from conf");
for($i = 0; $i < $query->numrows; $i++)
{
  ($ip, $cur, $name, $limit, $paid) = $query->FetchRow;
  %{$users{$ip}} = ('current' => $cur, 'limit' => $limit, 'paid' => $paid);
  $names{$ip} = $name;
  unless(grep {$_ eq $name} @tables)
   {
    $db->Query("create table $name (year int not null, month int not null, day int not null, hour int not null, min int not null, sec int not null, ip char(16) not null, len int not null, dir int not null)");
   }
}
%months = ('Nov' => 11, 'Dec' => 12);

$traffic = 0 unless $traffic = `cat /var/log/traffic`;
open LOG, "/var/log/kernel/debug";
foreach(<LOG>)
{
  next unless ($month, $day, $hour, $min, $sec, $src, $dst, $len) =
    m/^(\w\w\w)\s+(\d+)\s+(\d+):(\d+):(\d+)\sender\skernel:\s+.*SRC=([\d\.]+)\sDST=([\d\.]+)\sLEN=(\d+)\s/;
  $year = (localtime(time))[5] + 1900;
# log - общая таблица. сбрасываю абсолюсно все пакеты
  $db->Query("insert into log values ($year, $months{$month}, $day, $hour, $min, $sec, '$src', '$dst', $len)");
  
  if(!exists $users{$src} && exists $users{$dst})
   {
    $users{$dst}{'current'} += $len;
#я вставляю и пакеты в mysql, не надо - затри
    $db->Query("insert into $names{$dst}{'current'} values ($year, $months{$month}, $day, $hour, $min, $sec, '$src', $len, 1)");
   }
  if(exists $users{$src} && !exists $users{$dst})
   {
    $users{$src}{'current'} += $len;
    $db->Query("insert into $names{$src}{'current'} values ($year, $months{$month}, $day, $hour, $min, $sec, '$dst', $len, 0)");
   }
  
  $traffic += $len;
  $users{'0.0.0.0/0'}{'current'} += $len;
}
close LOG;

system("echo $traffic > /var/log/traffic");
foreach(keys %users)
{
  $db->Query("update conf set cur = $users{$_}{'current'} where ip = '$_'");
  system("iuseroff $names{$_}") if $users{$_}{'current'} >= $users{$_}{'limit'} + $users{$_}{'paid'};
}


всё, что не нарвится - естесственно можно менять :) это как пример лога в mysql

Cообщить модератору | Наверх | ^

44. "RE: Linux Расчет трафика через Iptables. (linux firewall ipt..."
Сообщение от sa739 on 27-Янв-03, 18:40 
Доброго времени суток.
я вот читал читал этот флейм и до сихпор не понял, зачем велосипед изобретать если существует кучища отработаных и стабильных пакетов:
ulogd porject, ipac-ng, net-acct, netacct-mysql, etc., каждый из которых хорош по-своему, и каждый-же можно переделать так, как кому заблагорассудится.
Просьба выше сказаное не воспринимать как жесткую критику в свой адрес.
просто я высказал свое мнение (субъективное ессно (: )
ах да позабыл сказать, мне возможно тоже скоро прийдется организовывать нечто подобное (учет траффика, контроль IP & MAC, билинг)..
кстати есть неплохой имхо ресурс: linux advanced routing and traffic control (http://lartc.org) мож кто оттуда почерпнет для себя чтонить новое.
Благодарю за внимаение (:
Enjoy!
Cообщить модератору | Наверх | ^

60. "RE: Linux Расчет трафика через Iptables. (linux firewall ipt..."
Сообщение от Vasiliy email on 14-Авг-03, 10:23 
>Доброго времени суток.
>я вот читал читал этот флейм и до сихпор не понял, зачем
>велосипед изобретать если существует кучища отработаных и стабильных пакетов:
>ulogd porject, ipac-ng, net-acct, netacct-mysql, etc., каждый из которых хорош по-своему, и
>каждый-же можно переделать так, как кому заблагорассудится.
>Просьба выше сказаное не воспринимать как жесткую критику в свой адрес.
>просто я высказал свое мнение (субъективное ессно (: )
>ах да позабыл сказать, мне возможно тоже скоро прийдется организовывать нечто подобное
>(учет траффика, контроль IP & MAC, билинг)..
>кстати есть неплохой имхо ресурс: linux advanced routing and traffic control (http://lartc.org)
>мож кто оттуда почерпнет для себя чтонить новое.
>Благодарю за внимаение (:
>Enjoy!
>

Хотел бы узнать результат, как вы вышли сположения по подсчету траффика

Cообщить модератору | Наверх | ^

45. "RE: Linux Расчет трафика через Iptables. (linux firewall ipt..."
Сообщение от Valeriy email on 28-Янв-03, 11:31 
Я хотел бы спросить у народа мнение:

В представленном скрипте:

eth0 - интерфейс в инет ?
eth1 - интерфейс в локальную сеть ?

Если предположить вышеуказанное - то трафик IN+FW - получается не тот ...
А по цепочкам chain_$i - вообще ничего нет :((

Может кто-нибудь укажет мне, что я делаю не так ?
Если лень рассматривать мой скрипт конфигурации, то ответьте хотя бы на вопрос о интерфейсах :))

Вот мой скрипт:

#!/bin/sh

INET_IP="1.2.3.4"
INET_IFACE="eth0"

LAN_IP="192.168.0.1"
LAN_IFACE="eth1"

PRIV_PORTS="0:1023"
UNPRIV_PORTS="1024:65535"

LO_IFACE="lo"
LO_IP="127.0.0.1"

$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP

$IPTABLES -N bad_tcp_packets
$IPTABLES -N allowed
$IPTABLES -N tcp_packets
$IPTABLES -N udp_packets
$IPTABLES -N icmp_packets

$IPTABLES -N in_traf
*********************
$IPTABLES -N fwd_in_traf
************************
$IPTABLES -N chain_2
********************

$IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP

$IPTABLES -A allowed -p TCP --syn -j ACCEPT
$IPTABLES -A allowed -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A allowed -p TCP -j DROP

$IPTABLES -A tcp_packets -p TCP -s 192.168.0.255/24 --sport $UNPRIV_PORTS --dport 23 -j allowed

$IPTABLES -A udp_packets -p UDP -s 0/0 --destination-port 2074 -j ACCEPT
$IPTABLES -A udp_packets -p UDP -s 0/0 --destination-port 4000 -j ACCEPT

$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT
$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT

$IPTABLES -A in_traf -j RETURN
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
$IPTABLES -A fwd_in_traf -j RETURN
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

$IPTABLES -A chain_2 -j RETURN
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
$IPTABLES -A INPUT -i eth1 -j in_traf
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
$IPTABLES -A INPUT -p tcp -j bad_tcp_packets

$IPTABLES -A INPUT -p ALL -i $LAN_IFACE -s $LAN_IP_RANGE -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LO_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LAN_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $INET_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LAN_IFACE -d $LAN_BROADCAST_ADDRESS -j ACCEPT

$IPTABLES -A INPUT -p ALL -d $INET_IP -m state --state ESTABLISHED,RELATED \
-j ACCEPT
$IPTABLES -A INPUT -p TCP -i $INET_IFACE -j tcp_packets
$IPTABLES -A INPUT -p UDP -i $INET_IFACE -j udp_packets
$IPTABLES -A INPUT -p ICMP -i $INET_IFACE -j icmp_packets


$IPTABLES -A FORWARD -o eth0 -d 192.168.0.2 -j chain_2
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
$IPTABLES -A FORWARD -p tcp -j bad_tcp_packets
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
$IPTABLES -A FORWARD -i $LAN_IFACE -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

$IPTABLES -A OUTPUT -p tcp -j bad_tcp_packets

$IPTABLES -A OUTPUT -p ALL -s $LO_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $LAN_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $INET_IP -j ACCEPT


$IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j SNAT --to-source $INET_IP

Cообщить модератору | Наверх | ^

47. "Linux Расчет трафика через Iptables. (linux firewall iptable..."
Сообщение от Michael email on 05-Фев-03, 12:57 
Если хочешь посчитать траффик то правила для forward должны быть такими
iptables -A FORWARD -o eth0 -s any/0 -d 192.168.0.0/24 -j chain_2
iptables -A FORWARD -o eth0 -s 192.168.0.0/24 -d any/0 -j chain_3

iptables -A chain_2 -j ACCEPT
iptables -A chain_3 -j ACCEPT

тогда траффик будет считаться и туда и обратно для всей сети кроме этой машины, а унее надо счтать input & output

Cообщить модератору | Наверх | ^

48. "Linux Расчет трафика через Iptables. (linux firewall iptable..."
Сообщение от Eugene email on 09-Фев-03, 08:19 
здравствуйте подскажите как нужно изменить скрипт если я хожу в инет через модем:
есть соединение ppp0 оно постоянно отключается и выключается :) dialup короче :)
есть три сетевухи внутри eth0,1,2 нужно подсчитать траффик входящий для каждого пользователя.
Спасибо.
Cообщить модератору | Наверх | ^

49. "Виснет гад."
Сообщение от Pavel A. Bragin email on 19-Мрт-03, 13:12 
По твоему сценарию настрил свой скрипт с небольшими дополнениями, но суть оталась та же. После запуска скрипта  iptables вистет намертво, причем перестает пропускать трафик совсем !!!! при запросе iptables -L оооченнь долго думает. В чем может быть проблема.
ЗЫ: перед запуском скрипта остановил iptables и удалил файл /etc/sysconfig/iptables
испльзую iptables v1.2.6a
Cообщить модератору | Наверх | ^

50. "Виснет гад."
Сообщение от Criz on 19-Мрт-03, 14:38 
Он не виснет, а загружается, у меня но 433 Селероне с 3-мя сетями он грузится минут 15-20...
Cообщить модератору | Наверх | ^

52. "Виснет гад."
Сообщение от Dmitry email on 06-Апр-03, 19:43 
Я так думаю. не через -L нужно снимать а с файлика /proc/net/не помню какой но внем намного проще взять. пИмя правила последнее в строке
Cообщить модератору | Наверх | ^

51. "Как посчитать трафик кронов на шлюзе"
Сообщение от void email on 19-Мрт-03, 16:32 
Я тут накропал с горем пополам скрипт который снимает вход и выход по каждому ипишнику идущему через шлюз вроде все пашет
но возникла проблема я никак не могу посчитать траф IN OUT самого шлюза(дело в том что у меня запускаются кроны которые снимают дамп базенки с внешнего сервера )
у меня eth0-наружный eth1(192.168.0.100)-локалка
подскажите плз я пытался сделать так
iptables -A INPUT  -i eth0  -d localhost -s ! 192.168.0.0/24 -j chain_inv
iptables -A OUTPUT -i eth0  -s localhost -d ! 192.168.0.0/24 -j chain_outv
но поймать не смог - да и думаю что бред написал
пробовал другими путями но добился только того что получаю общее число пройденого трафа через внешний интерфейс

вот мой пример моего скрипта на iptables для учета статистики по всем ип адресам локальной сети
#!/bin/sh
IPTABLES="iptables"
while [ $i -le 254 ]
do
   $IPTABLES -N chain_in$i
   $IPTABLES -N chain_out$i
   let i=$i+1
done
i=1
while [ $i -le 254 ]
do
   $IPTABLES -A chain_in$i -j RETURN
   $IPTABLES -A chain_out$i -j RETURN
   let i=$i+1
done

i=1
while [ $i -le 254 ]
do
   $IPTABLES -A FORWARD  -i eth1  -s 192.168.0.$i  -d ! 192.168.0.100  -j chain_out$i
   $IPTABLES -A FORWARD  -i eth0  -d 192.168.0.$i  -s ! 192.168.0.100  -j chain_in$i
   let i=$i+1
done
$IPTABLES -t nat -A POSTROUTING -p TCP -j MASQUERADE

PS не материте сильно:) я в этом только начал копаться вполне возможно что вообще бред написал:(

Cообщить модератору | Наверх | ^

54. "Как посчитать трафик кронов на шлюзе"
Сообщение от Прохожий email on 09-Апр-03, 13:26 
У меня немного другое горе
есть шлюз который подк к инетe через VPN по тунелю
eth0 - лок
eth1 - внеш
ещё поднимается тунель ppp0
дык вот траф инетный видно на eth1 а не на ppp0
почему ?
как тут вести статистику по клиентам ?
Cообщить модератору | Наверх | ^

55. "Как посчитать трафик кронов на шлюзе"
Сообщение от Madcat email on 06-Май-03, 18:50 
Странно. Вроде должен подниматься pptp0 или я ошибаюсь?
Но все равно... Считай просто на eth0 да и все...
Cообщить модератору | Наверх | ^

56. "Тематический каталог: Linux Расчет трафика через Iptables. (..."
Сообщение от Denis email on 08-Май-03, 11:07 
Мне нужно перенаправить входящие из инета пакеты на порт 1352 в другой порт но на локальной машине. Я пишу вот это:

[root@localhost sbin]# iptables -t nat -A PREROUTING -p tcp -d 81.30.192.36 --dport 1352 -j DNAT --to-destination 192.168.1.2:1352

И мне он выдает вот это:                              

/lib/modules/2.4.18-6mdk/kernel/net/ipv4/netfilter/ip_tables.o.gz: init_module:
Device or resource busy                                                        
Hint: insmod errors can be caused by incorrect module parameters, including invalid IO or IRQ parameters                                                        
modprobe: insmod /lib/modules/2.4.18-6mdk/kernel/net/ipv4/netfilter/ip_tables.o.gz failed                                                                      
modprobe: insmod ip_tables failed                                              
iptables v1.2.5: can't initialize iptables table `nat': iptables who? (do you need to insmod?)                                                                  
Perhaps iptables or your kernel needs to be upgraded.  

Что делать и как? Если можно то поподробнее я с линуксом знаком не давно и едро пересобирать не умею.

Cообщить модератору | Наверх | ^

57. "Тематический каталог: Linux Расчет трафика через Iptables. (..."
Сообщение от Madcat email on 08-Май-03, 13:10 
>Мне нужно перенаправить входящие из инета пакеты на порт 1352 в другой
>порт но на локальной машине. Я пишу вот это:
>
>[root@localhost sbin]# iptables -t nat -A PREROUTING -p tcp -d 81.30.192.36 --dport
>1352 -j DNAT --to-destination 192.168.1.2:1352
>
>И мне он выдает вот это:
>
>/lib/modules/2.4.18-6mdk/kernel/net/ipv4/netfilter/ip_tables.o.gz: init_module:
>Device or resource busy
>Hint: insmod errors can be caused by incorrect module parameters, including invalid
>IO or IRQ parameters
>modprobe: insmod /lib/modules/2.4.18-6mdk/kernel/net/ipv4/netfilter/ip_tables.o.gz failed
>modprobe: insmod ip_tables failed
>iptables v1.2.5: can't initialize iptables table `nat': iptables who? (do you need
>to insmod?)
>Perhaps iptables or your kernel needs to be upgraded.
>
>Что делать и как? Если можно то поподробнее я с линуксом знаком
>не давно и едро пересобирать не умею.

В ядрах 2.4.18-5 нет поддержки iptables.
Решение:
Поставить другое ядро.
Например kernel-2.4.18-18mppe.i386.rpm
Взять его по этой ссылке. 12 мег..
http://prdownloads.sourceforge.net/poptop/kernel-2.4.18-18mppe.i386.rpm?download

Cообщить модератору | Наверх | ^

58. "Apache Toolbox - комплект модулей не входящих в поставку apa..."
Сообщение от DrBuoy email on 14-Май-03, 16:05 
Хорошая штука, наверное, но, почему-то, до распаковки не узнаешь, что только для Апача_1.3.хх. У меня - 2.0.43, и инсталлироваться пакет не захотел. Может, чего-нибудь я не так делал? Буду признателен, если кто подскажет, как надо
Cообщить модератору | Наверх | ^

59. "??"
Сообщение от Max on 14-Июл-03, 17:13 
A chem otlichaetsya eto ot togo chto napisano vyshe? Zachen sozdavat' otdel'nye chainy dlya pol'zovatelei esli mozhno sozdat' odin chain dlya nix, a tam prosto neskol'ko pravil?


#!/bin/bash
/sbin/iptables -N accounting
/sbin/iptables -I INPUT 1 -i ppp0 -j accounting
/sbin/iptables -I OUTPUT 1 -o ppp0 -j accounting
/sbin/iptables -I FORWARD 1 -i ppp0 -j accounting
/sbin/iptables -I FORWARD 1 -o ppp0 -j accounting


i=2
while [ $i -le 254 ]
   do
    /sbin/iptables -A accounting -i ppp0 -d 192.168.90.$i -j RETURN
    /sbin/iptables -A accounting -o ppp0 -s 192.168.90.$i -j RETURN
    i=`expr $i + 1`
   done

Cообщить модератору | Наверх | ^

61. "Linux Расчет трафика через Iptables. Вопрос по анализу лога."
Сообщение от Deniz on 27-Авг-03, 12:15 
Сделал биллинг на основе данного скрипта, вроде считает. Хотя все не так выглядит как хотелось бы.
Хотелось бы узнать:
Есть ли готовый скрипт который может анализировать эти текстовые файлы и создавать что нить более наглядное? Или может кто-нибудь поделиться мыслями какие шаги должны быть в скрипте для анализа этих текстовых файлов?
Хотелось бы просто видеть сколько мб прокачивается всего и по отдельным айпи в частности на одной странице .
немного програмирую на bash, но если вариантов нет попробую изучуть подходящий для этого язык.
Заранее спасибо за ответы.

Cообщить модератору | Наверх | ^

62. "Linux Расчет трафика через Iptables. (linux firewall iptable..."
Сообщение от SavaJr email on 12-Сен-03, 08:03 
быстро и просто кладет в базу

каждый час
========================
iptables -vnxL -Z FORWARD |grep ACCEPT |grep -e "192.168" |perl stat.mysql.saver


сорс stat.mysql.saver
======================================
#! /usr/bin/perl

use Mysql;
$db = Mysql->Connect('localhost', 'traffic', 'root');

#!/usr/bin/perl

while (<STDIN>) {
    #print $_;
    ($empty, $pkts, $bytes, $target, $prot, $opt, $in, $out, $source, $destination) = split(/\s+/);
    #print $pkts;
    #print "\n\r";
    $sql = "insert into traffic values ('', '$pkts', '$bytes', '$target', '$prot', '$opt', '$in', '$out', '$sour
ce', '$destination', NOW())";
    $db->Query($sql);
}

Cообщить модератору | Наверх | ^

63. "Linux Расчет трафика через Iptables. (linux firewall iptable..."
Сообщение от Андрей email on 15-Окт-03, 11:10 
сделал скрипт, генерит страничку со статистикой,
скрин можно посмотреть здесь
http://sgb.irk.ru/~andrek/img/traf.jpg
базу кладет в mysql, работает с настройками iptables  см. наверх.
скрипт лежит здесь
http://sgb.irk.ru/~andrek/files/start.pl
вся настройка внутри.
Cообщить модератору | Наверх | ^

64. "Linux Расчет трафика через Iptables. (linux firewall iptable..."
Сообщение от soldja email on 22-Окт-03, 12:20 
картинка симпотная, но сам скрипт недоступен - you  don't have permission to access bla-bla.. сheck it, plz? :)
Cообщить модератору | Наверх | ^

65. "Linux Расчет трафика через Iptables. (linux firewall iptable..."
Сообщение от andrek email on 22-Окт-03, 12:35 
ок, проверил, права исправил :)
Статистики на месяц нету пока только по дням, мыслей есть много но нету времени..
Если кто сделает подсчет за месяц, кинь инфо плиз.
Успехов!
Андрей.
Cообщить модератору | Наверх | ^

66. "Linux Расчет трафика через Iptables. (linux firewall iptable..."
Сообщение от soldja email on 22-Окт-03, 13:56 
>ок, проверил, права исправил :)
>Статистики на месяц нету пока только по дням, мыслей есть много но
>нету времени..
>Если кто сделает подсчет за месяц, кинь инфо плиз.
>Успехов!
>Андрей.
спасибо :)
если не лениться не буду, может и сделаю статистику по месяцам

Cообщить модератору | Наверх | ^

67. "Linux Расчет трафика через Iptables. (linux firewall iptable..."
Сообщение от andrek email on 12-Ноя-03, 15:54 
Вот еще одна рабочая ссылка на скрипт
http://wizardplus.irk.ru/~andrek/files/start.pl
Скрина нету, сами увидите при загрузке.
Cообщить модератору | Наверх | ^

68. "Проблема syslog"
Сообщение от John email on 04-Дек-03, 20:44 
Использую простой метод сбора информации для дальнейшего расчета траффика,
который описан в руководствах по iptables.
Задаю правила на брэндмауэре (для эксперимента подключил свой компьютер
через брэндмауэр к локальной сети)
eth0(192.168.11.9) -  включен в мой компьютер (ip 192.168.11.60),
eth1(192.168. 1.9) -  в локальную сеть

Правила такие:
iptables -A FORWARD -i eth1 -o eth0 -d 192.168.11.60 -j LOG --log-level info --log-prefix FORWARD pakets

iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 192.168.1.9


в /etc/syslog.conf добавил kernel.=info /var/log/iptables
Перекачиваю информацию из локальной сети (100Mbit) на свой компьютер.

При небольшом трафике все ОК, но при увеличении в лог попадают заголовки не всех пакетов.

При суммировании длинны пакетов получилось следущее.
Выкачав информации объемом 400Mb я насчитал только порядка 20Mb.

Да и при просмотре файла видно что количество строк раз в 10 меньше чем
должно было пройти пакетов.

При использовании ULOG картина аналогичная.

Комманда iptables -v -L показывает все верно.

Может где нибудь необходимо размер какого-нибудь буфера увеличить ???.

Cообщить модератору | Наверх | ^

72. "Проблема syslog"
Сообщение от вася (??) on 03-Авг-04, 16:48 
>Комманда iptables -v -L показывает все верно.
>
>Может где нибудь необходимо размер какого-нибудь буфера увеличить ???.

может здесь зарыта собака:
man iptables, далее смотри --limit rate
лимиты совпадений, по умолчанию допускается 3 совпадения в час

Cообщить модератору | Наверх | ^

69. "Linux Расчет трафика через Iptables. (linux firewall iptable..."
Сообщение от Peter email on 20-Дек-03, 16:00 
# Насчет всяких там ограничений по счетчикам...

IN=`iptables -L INPUT   -v -x | grep traf | awk '{print $2}'`
FW=`iptables -L FORWARD -v -x | grep traf | awk '{print $2}'`

echo qwerty | awk -v inp=$IN -v fwd=$FW '
{
    printf "INPUT + FORWARD = %f\n", a+b;
    printf "INPUT=.6f FORWARD=.6f\n",a,b;
}'

# awk посчитает все во float'е, и числа могут
# быть о-чень большого размера, кому не лень -
# попробуйте... Здесь счетчики в байтах, кому не
# нравится - можно поделить на 1024, а можно -
# и еще раз...

Cообщить модератору | Наверх | ^

70. "Linux Расчет трафика через Iptables. (linux firewall iptable..."
Сообщение от Peter email on 20-Дек-03, 16:04 
Sorry, в предыдущем тексте непонятки с квадратиками... Это стандартный сишный printf float-чисел, например - процент14.6f.
Cообщить модератору | Наверх | ^

74. "Linux Расчет трафика через Iptables. мой скрипт"
Сообщение от FlanjaR on 21-Янв-05, 16:49 
Вот мой скрип, был написан за пару часов. Так что несколько кривоват, но работает и решает проблему добавления юзеров (ип-адресов)

=====================[tcount]=
#!/bin/bash

. /etc/tcount/tcount.conf

HOSTS=`cat $HOSTS_ACCEPT_CONF`

ins_mod() {
for MOD in $IP_MOD
do
    M=`lsmod | grep ^$MOD`
    if [ -z "$M" ]
    then
`modprobe $MOD`
    fi
done
}


addrule() {
    $IPTABLES -N TCOUNT_OUT_$1
    $IPTABLES -N TCOUNT_IN_$1
    $IPTABLES -F TCOUNT_OUT_$1
    $IPTABLES -F TCOUNT_IN_$1
    $IPTABLES -A INPUT -j TCOUNT_IN_$1
    $IPTABLES -A FORWARD -j TCOUNT_OUT_$1
    $IPTABLES -A FORWARD -j TCOUNT_IN_$1
    $IPTABLES -A OUTPUT -j TCOUNT_OUT_$1
    $IPTABLES -A TCOUNT_OUT_$1 -s $2
    $IPTABLES -A TCOUNT_IN_$1 -d $2
    
    $IPTABLES -t nat -A POSTROUTING -s $1 -o eth0 -j SNAT --to-source 192.168.1.1
}

rmrule() {
    $IPTABLES -D INPUT -j TCOUNT_IN_$1
    $IPTABLES -D FORWARD -j TCOUNT_OUT_$1
    $IPTABLES -D FORWARD -j TCOUNT_IN_$1
    $IPTABLES -D OUTPUT -j TCOUNT_OUT_$1
    $IPTABLES -D TCOUNT_OUT_$1 -s $2
    $IPTABLES -D TCOUNT_IN_$1 -d $2
    $IPTABLES -F TCOUNT_OUT_$1
    $IPTABLES -F TCOUNT_IN_$1
    $IPTABLES -X TCOUNT_OUT_$1
    $IPTABLES -X TCOUNT_IN_$1
    
    $IPTABLES -t nat -D POSTROUTING -s $1 -o eth0 -j SNAT --to-source 192.168.1.1
}

start() {
    ins_mod
    echo "adding rules"
    for HOST in $HOSTS
    do
addrule $HOST $HOST
    done
}

stop() {
    echo "removing rules"
    for HOST in $HOSTS
    do
rmrule $HOST $HOST
    done
}

restart() {
    stop
    start
}

if [ "$1" = "start" ]
then
    start
elif [ "$1" = "stop" ]
then
    stop
elif [ "$1" = "restart" ]
then
    restart
else
    echo "use: $0 {start|stop|restart}"
fi
# END


=====================[write]=
#!/bin/bash

MYSQL="/usr/bin/mysql -utcount --password=password tcount -e"
IPTABLES="/sbin/iptables"

DATE=`date +"%Y-%m-%d"`
NAME="Test"

my_write() {
    sql="INSERT INTO \`traffic\` ( \`id\` , \`date\` , \`ip\` , \`inb\` , \`outb\` ) VALUES ( '' , '$DATE', '$1', '$TRAF_IN', '$TRAF_OUT' );"
    `$MYSQL "$sql"`
}

my_change() {
    OLD_IN=`$MYSQL "$sql" | sed -e "1d" | awk '{print $1}'`
    OLD_OUT=`$MYSQL "$sql" | sed -e "1d" | awk '{print $2}'`
    let "NEW_IN = $TRAF_IN + $OLD_IN"
    let "NEW_OUT = $TRAF_OUT + $OLD_OUT"
    sql="UPDATE \`traffic\` SET \`inb\` = '$NEW_IN', \`outb\` = '$NEW_OUT'
    WHERE \`date\` = '$DATE' AND \`ip\` = '$1' LIMIT 1 ;"
    `$MYSQL "$sql"`
}

work() {
    sql="SELECT inb , outb FROM traffic WHERE date='$DATE' AND ip LIKE '$1'"
    IN=`$MYSQL "$sql" | sed '1d' | awk '{print $1}'`
    OUT=`$MYSQL "$sql" | sed '1d' | awk '{print $2}'`
    TRAF_OUT=`$IPTABLES -L -Z TCOUNT_OUT_$1 -x -v | sed -e "1,2D" | awk '{print $2}' | sed -e '2d'`
    TRAF_IN=`$IPTABLES -L -Z TCOUNT_IN_$1 -x -v | sed -e "1,2D" | awk '{print $2}' | sed -e '2d'`
    echo "$TRAF_IN"
    if [ "$IN" = "" ]
    then
my_write $1
    else
my_change $1
    fi

}

for HOST in `cat /etc/tcount/accept.conf`
do
    work $HOST
done  

#END

=====================[accept.conf]=
192.168.0.1
192.168.0.3
192.168.0.4
192.168.0.5
192.168.0.6

=====================[tcount.conf]=
IPTABLES="/sbin/iptables"
HOSTS_ACCEPT_CONF="/etc/tcount/accept.conf"
IP_MOD="iptable_nat ipt_conntrack iptable_filter ip_tables"

tcount - добавляет и удаляет правила
write - пишет статистику в базу
accept.conf - список хостов которым разрешен доступ в инет
tcount.conf - пути

Cообщить модератору | Наверх | ^

75. "Тематический каталог: Linux Расчет трафика через Iptables. (..."
Сообщение от Makc email(??) on 23-Мрт-05, 17:31 
Кто искал готовое решение по учету траффика для пользователей с разделением на внешний- забугорный и т.д. рекомендую взглянуть: http://stg.dp.ua/
Cообщить модератору | Наверх | ^

Удалить

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




Спонсоры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

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