URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 17008
[ Назад ]

Исходное сообщение
"RE: Счетчики трафика ipchains - как сохранить при перезагрузке ?"

Отправлено Сергей , 15-Май-02 14:11 
Могут ли они считать с нарастающим итогом, несмотря на перезагрузки ?

Можно ли их при загрузке установить в какое-то значение, а не только в нуль ?

И вообще, как считать трафиг ?


Содержание

Сообщения в этом обсуждении
"RE: Счетчики трафика ipchains - как сохранить при перезагрузке ?"
Отправлено and , 15-Май-02 14:21 
А зачем тебе грузить это на ipchains, они должны считать в online, потом с некоторой переодикой данные надо собирать, счетчики обнулять и данные пихать в базу, а там уж с ними делай что хочешь. У меня где то был готовый скрипт для ipchains.


"RE: Счетчики трафика ipchains - как сохранить при перезагрузке ?"
Отправлено Walker , 15-Май-02 16:51 
а можешь дать ссылку ? или на мыло сбросить? Если не трудно конечно.

"RE: Счетчики трафика ipchains - как сохранить при перезагрузке ?"
Отправлено and , 15-Май-02 17:35 
Пробую скинуть сюда, с некоторыми пояснениями:

Сперва надо прописать правила для ipchains:
ipchains -P input ACCEPT
ipchains -P forward DENY
ipchains -P output ACCEPT
ipchains -N traffic
ipchains -A input -j traffic
ipchains -A output -j traffic
ipchains -A forward -s 192.168.0.0/24 -i eth0 -j MASQ  ----> выпускаем все из подсетки 192.168.0.0/24
ipchains -A traffic -s 192.168.0.0/24 -d 192.168.0.0/24 -j ACCEPT ----> отсекаем внутренний трафик
ipchains -A traffic -s x.x.x.x/x -d 192.168.0.0/24 -j ACCEPT  ----> отсекаем внешний трафик нашей внешней сети
ipchains -A traffic -s 192.168.0.0/24 -d x.x.x.x/x -j ACCEPT  ----> и в обратную сторону
ipchains -A traffic -d 192.168.0.20 -j ACCEPT -l  ----> а это правило для общета конкретной машины, флаг "-l" указывает на то что все проходящие пакеты буду протоколироваться ядром

А вот собственно сам скрипт, который собирает данные и запихивает в MySQL(!!!! только входящий трафик !!!!):

#!/usr/bin/perl

use DBI();

$ipstuff = `/sbin/ipchains -L traffic -v -x -n`;

my $dbh = DBI->connect("DBI:mysql:database=xxx;host=localhost","user", "passwd",{'RaiseError' => 1});

($min, $hours, $day, $month, $year) = (localtime)[1,2,3,4,5];

$day=sprintf("d",$day);
$month=sprintf("d",$month+1);
$year=$year+1900;

@IPMASS = split(/\n/, $ipstuff);
foreach $ipdata (@IPMASS) {
        $ipdata =~ s/\t/ /g;
        $ipdata =~ s/\s(\s*|.)\s/ /g;
        $ipdata =~ s/^ //g;
        $ipdata =~ s/\n//g;

        if ($ipdata eq "") { next; }

        $bytes = 0;
        $ip = "";

        if ($ipdata =~ /^\d* (\d*) .* (\d*\.\d*\.\d*\.\d*) \d*\.\d*\.\d*\.\d*\/\d*/ ) {
                $ip = $2;
                $bytes = $1;
        } elsif ($ipdata =~ /^\d* (\d*) .* \d*\.\d*\.\d*\.\d*\/\d* (\d*\.\d*\.\d*\.\d*) /) {
                $ip = $2;
                $bytes = $1;
        } elsif ($ipdata =~ /^\d* (\d*) .* 0\.0\.0\.0\/0 0\.0\.0\.0\/0/) {
                $ip = "all";
                $bytes = $1;
        }
                if ($ip =~ /(.*)\.(.*)\.(.*)/ || $ip eq "all") {
                        $ip =~ s/\n//g;
                        $bytes =~ s/\n//g;

                        if($bytes eq 0) {
                                        next;
                        }
                        else {
                                        $dbh->do("INSERT INTO ipchains_stat(ip, bytes, rec_date, rec_time) VAL
                        }
                }
}

$dbh->disconnect();

system("/sbin/ipchains -Z");

Все.

Так общитываю трафик для одной конторы, данные с ИП немного рознятся (конечно в его пользу), ну да бог ему судья. Да lavr ?


"RE: Счетчики трафика ipchains - как сохранить при перезагруз..."
Отправлено Серж , 16-Мрт-03 02:21 
>ipchains -A traffic -s 192.168.0.0/24 -d 192.168.0.0/24 -j ACCEPT ----> отсекаем внутренний трафик
>ipchains -A traffic -s x.x.x.x/x -d 192.168.0.0/24 -j ACCEPT  ----> отсекаем внешний трафик нашей внешней сети
>ipchains -A traffic -s 192.168.0.0/24 -d x.x.x.x/x -j ACCEPT  ----> и в обратную сторону
>ipchains -A traffic -d 192.168.0.20 -j ACCEPT -l  ----> а это правило для общета конкретной машины, флаг "-l" указывает на то что все проходящие пакеты буду протоколироваться ядром

а каким образом происходит отсечение?
при разборе вывода ipchains'а у тебя совпадут реги и для  192.168.0.0/24 192.168.0.0/24 и для x.x.x.x/x 192.168.0.0/24 и для 192.168.0.0/24 x.x.x.x/x и и для 192.168.0.20 0.0.0.0. то есть в базу упадут четыре записи. или я ошибаюсь?


"RE: Счетчики трафика ipchains - как сохранить при перезагрузке ?"
Отправлено yks , 16-Май-02 15:08 
>Могут ли они считать с нарастающим
>итогом, несмотря на перезагрузки ?
>
>
>Можно ли их при загрузке установить
>в какое-то значение, а не
>только в нуль ?
>
>И вообще, как считать трафиг ?
>
есть пакет ipac - на основе ipchains все считает