The OpenNET Project / Index page

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

[Linux] Расчет трафика через Iptables. (linux firewall iptables traffic)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: 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'ю как проще. И еще одно ограничение: поскольку мы не считаем трафик, который идет от приложений роутера к пользователям, то возможна очень маленькая погрешность. И последнее. Если вдруг можно было сделать иначе или у меня есть ошибки &#8211; то просто напишите от этом. В Линуксе я недавно.

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ RSS ]
  • 1.1, ugenk (?), 11:33, 29/06/2005 [ответить]  
  • +/
    статья классная. но с while [ $i -le 254 ] аффтар завернул мощно! :) for i in 'seq 254' он не слышал :)
     
  • 1.2, Berserker (?), 16:57, 17/12/2005 [ответить]  
  • +/
    ужас:

    | grep chain_$i | head -c 18 | tail -c 9

    неужас:

    | awk "/chain_$i/{print \$2}"

     
  • 1.3, maxt (?), 01:26, 12/03/2006 [ответить]  
  • +/
    Перед снятием статистики и очисткой можно прохлопать несколько мегабайт на хорошем канале.. лучше снимать статистику со всей цепи с очисткой /sbin/iptables -L FORWARD -v -x -Z -n , а потом  а потом снятую статистику обрабатывать
     
  • 1.4, Zelgadis (ok), 22:49, 03/09/2006 [ответить]  
  • +/
    Точнее:
    | awk "/chain_$i/{print \\\$2}"
     
  • 1.5, Lask (?), 17:26, 15/09/2006 [ответить]  
  • +/
    а как быть в случае, если прозрачно прокси сделан. ТОгда все пакеты, которые идут через сквид не являются FORWARD.
     
  • 1.6, ErV (?), 19:00, 08/04/2007 [ответить]  
  • +/
    Вместо i='expr $i + 1'
    можно было сделать
    i=$(($i+1))
    Работает на порядок быстрее.
     
  • 1.7, George Shot (?), 20:21, 08/01/2008 [ответить]  
  • +/
    коротко и по делу
    самый толковый пример для разбора
    грандиозный риспект автору
     
  • 1.8, ma5ter (?), 17:06, 07/04/2009 [ответить]  
  • +/
    а зачем 250 раз дергать iptables если можно запомнить вывод и подпихивать его, имхо ускорят на пару порядков

    OUT='iptables -L FORWARD -v -x'
    ...
    for (( i = 1; i <= 254; i++ ))
    do
      RX='echo "$OUT" | awk "/chain_$i/{print \\\$2}"'
      if [ 0${RX} -ne 0 ]
        then echo "$DAT $i ${RX}
    " >> index.html
      fi
    done

     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




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

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