|
Ключевые слова: linux, firewall, iptables, traffic, (найти похожие документы)
Date: 30 Aug 2002 From: Switch(TX) <[email protected]> Subject: [Linux] Расчет трафика через Iptables. В свое время у меня возникла задача измерения трафика пользователей и трафика от провайдера. При использовании iptables решение достаточно легкое, нетрудоемкое хотя и имеет свои ограничения. О них позже. Конфигурация сети: От провайдера HDCL в CISCO 1601 Далее в роутер (ASPLinux 8.2) с двумя интерфейсами, далее в локальныю сеть. На роутере только SSH и DNS (пока). И два скрипта: правил фильтрации и счетчиков ########################################################################## # ! /bin/bash # iptables.load - установка правил # Входящие политики по умолчанию ...* # Дополнительные цепочки ...* # Цепочки для расчета трафика приходящего на внешний интефейс # Таким образом мы имеем весь трафик который к нам # пришел от провайдера. /sbin/iptables -N in_traf /sbin/iptables -N fwd_in_traf # Цепочки для расчета трафика по пользователям i=1 while [ $i -le 254 ] do /sbin/iptables -N chain_$i i=`expr $i + 1` done # Работа цепочек ...* # Работа цепочек по расчету трафика /sbin/iptables -A in_traf -j RETURN /sbin/iptables -A fwd_in_traf -j RETURN i=1 while [ $i -le 254 ] do /sbin/iptables -A chain_$i -j RETURN i=`expr $i + 1` done # Работа входящей цепочки # Эти цепочки должны стоять обязательно первыми. /sbin/iptables -A INPUT -i eth1 -j in_traf ...* # Работа цепочки роутинга # Эти цепочки должны стоять обязательно первыми. i=1 while [ $i -le 254 ] do /sbin/iptables -A FORWARD -o eth0 -d 192.168.1.$i -j chain_$i i=`expr $i + 1` done /sbin/iptables -A FORWARD -i eth1 -j fwd_in_traf ...* # Работа исходящей цепочки ...* # Работа цепочки маскарадинга ...* # End ######################################################################### *... - здесь должны быть ваши правила. Этот файл нужно поставить в автозагрузку. Сами знаете зачем. Следующий файл должен выполняться в 23:50 для того, что бы правильная дата была в файле. Также его нужно выполнять при перезагрузках компьютера, чтобы сохранялись значения счетчиков. ############################################################################# # ! /bin/bash # traf.logging - Сбор трафика в файлы *.xls # Смена директории по умолчанию # Эти файлы находятся в директории /root # поэтому мне было проще писать их в поддиректорию # откуда ини забираются по ssh и спокойно открываются в Excel'e # В результате получаются файлы с именами "номер месяца".xls и # users_"номер месяца".xls # Внутри него создается таблица вида: # Дата - последний байт ip адреса - трафик в байтах cd /root/trafic # Присваивание параметров для мониторинга MNTH=`date +%m` DAT=`date +%d` # Расчет величины трафика входящего на интерфeйс # eth1 ( Внешний интерфейс) # Максимальный расчетный трафик за день - 953МВ IN=`/sbin/iptables -L INPUT -v -x | grep traf | head -c 18 | tail -c 9` FW=`/sbin/iptables -L FORWARD -v -x | grep traf | head -c 18 | tail -c 9` RX=`expr $IN + $FW` # Вывод расчетной величины трафика в файл echo "$DAT $RX" >> ${MNTH}.xls # Расчет индивидуальных пользователей i=1 while [ $i -le 254 ] do RX=`/sbin/iptables -L FORWARD -v -x | grep chain_$i | head -c 18 | tail -c 9` if [ $RX -ne 0 ] then echo "$DAT $i $RX" >> users_${MNTH}.xls fi i=`expr $i + 1` done # Очистка счетчиков трафика для следующего дня /sbin/iptables -Z # Done ############################################################################### Я думаю, что многим станет понятно ограничение в 953МВ в день на каждого из пользователей и на общий трафик. Просто знаков в получаемом числе только 9. Заметьте, что в командах echo используются не пробелы, а символы табуляции. Excel'ю как проще. И еще одно ограничение: поскольку мы не считаем трафик, который идет от приложений роутера к пользователям, то возможна очень маленькая погрешность. И последнее. Если вдруг можно было сделать иначе или у меня есть ошибки – то просто напишите от этом. В Линуксе я недавно.
|
Обсуждение | [ RSS ] |
|
Добавить комментарий |
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |