LINUX.ORG.RU

Идея на СКРИПТИК оч. проста:
1. ipchains -nvxL смотрим (лучше в файл вывести) и видим, что для
каждого из правил есть счетчик пакетов и байт, которые ему
соответствуют.
2. Смотрим в man ipchains - NOTES и видим вскользь рекомендацию создать
для учета пользовательские цепочки (отдельно для входящего и исходящего
траффика) и заполнить их правилами без -j.

3. Смотрим на картинку, которая показывает как пакет путешествует
через фильтр (особенно если у нас маскарадинг используется) в
ipchains-HOWTO (есть в переводе).
4. Делаем выводы - как и из какого места в эти цепочки перейти.
5. А далее пишем скрипт, который анализирует вывод ipchains -nvxL <chain>.

Вот вроде усе.:)

Dimai
()

Спасибо Dimai

Cкажите, как Вам мое творчество для задачи
подсчета трафика для юзеров и веба -полное пижонство?
А что делать?
#!/bin/bash
# ---------
# | World |
# |0.0.0.0/0|
# -----------
# ^
# |
# External Network (ISP)
# |
# |
# |eth1
#------------------
#| FTPSERVER | Server Network (LORA)
#| MAILSERVER1 |eth0
#| DNSSERVER |------------------------------------...
#| HTTPPROXY | |
#| | |
#------------------ -------- --------
# |eth2 | WWW | | LORA |
# | | SMTP | | |
# |192.168.1.111 --------- --------
# | ...
# | $MAILSERVER2
# V $WEBSERVER
# Internal Network (USER)
#

#--------------------Interfaces--
INTIF="eth2"
EXTIF="eth1"
SERIF="eth0"
#-----------------------IP's--

INTIP=$(ifconfig $INTIF | grep inet | gawk -F : '{printf $2}' | cut -d \ -f
1)
if [ "$INTIP" = "" ]; then
echo -e "\nAborting: Unable to determine $INTIF's internal IP address!"
exit 1
fi
INTMASK=$(ifconfig $INTIF | grep inet | cut -d : -f 4)
INTNET="$INTIP/$INTMASK"

EXTIP=$(ifconfig $EXTIF | grep Mask | gawk -F : '{printf $2}' | cut -d \ -f
1)
if [ "$EXTIP" = "" ];
then
echo -e "\nAborting: Unable to determine $EXTIF's IP address!"
exit 1
fi
EXTMASK=$(ifconfig $EXTIF | grep Mask | cut -d : -f 4)
EXTNET="$EXTIP/$EXTMASK"

SERIP=$(ifconfig $SERIF | grep Mask | gawk -F : '{printf $2}' | cut -d \ -f
1)
if [ "$EXTIP" = "" ];
then
echo -e "\nAborting: Unable to determine $SERIF's IP address!"
exit 1
fi
EXTMASK=$(ifconfig $EXTIF | grep Mask | cut -d : -f 4)
EXTNET="$EXTIP/$EXTMASK"


# Turn on logging

daytime=`date +%y%m%d-%H%M`
LogFile=/root/logs/net_acc_${daytime}.log
echo saving old info in $LogFile
ipchains -nx -v -L input|awk '{print "Incoming "$7}' >$LogFile
ipchains -nx -v -L output| awk '{print "Outgoing "$7}'
>>$LogFile

А потом сумма по файлам -- нехорошо это - а ?


#-------- А как быть с вебом - ТАК ?-------------------

echo ">>>"
echo ">>> Seting up web traffic accounts..."
echo ">>>"

ipchains -N trafin
ipchains -N trafout
ipchains -I input -j trafin
ipchains -I output -j trafout

echo ">>> Seting up Webserver"

ipchains -A trafin -s $WEBSERVER -i $EXTIF
ipchains -A trafout -d $WEBSERVER -i $EXTIF


echo ">>> Seting up MailServer,ProxyServer..."

ipchains -A trafin -s $MAILSERVER -i $EXTIF
ipchains -A trafout -d $MAILSERVER -i $EXTIF

#------ and so on --------------------

ipchains -nx -v -L trafin awk '{print "Incoming "$7}'
>$LogFile
ipchains -nx -v -L trafout|awk '{print "Outgoing "$7}'
>>$LogFile


Заранее Большое Спасибо

anonymous
()

1. "Ну ты, барин, задачки ставишь" (с) "Формула любви"
2. Веб внутрь смотрит и он свой?
В общем, пока я (честно) просто плаваю. Попробую разобраться позжее.
Может по мылу? dima@intex.spb.ru

Dimai
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.