Могут ли они считать с нарастающим итогом, несмотря на перезагрузки ?Можно ли их при загрузке установить в какое-то значение, а не только в нуль ?
И вообще, как считать трафиг ?
А зачем тебе грузить это на ipchains, они должны считать в online, потом с некоторой переодикой данные надо собирать, счетчики обнулять и данные пихать в базу, а там уж с ними делай что хочешь. У меня где то был готовый скрипт для ipchains.
а можешь дать ссылку ? или на мыло сбросить? Если не трудно конечно.
Пробую скинуть сюда, с некоторыми пояснениями:Сперва надо прописать правила для 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 ?
>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. то есть в базу упадут четыре записи. или я ошибаюсь?
>Могут ли они считать с нарастающим
>итогом, несмотря на перезагрузки ?
>
>
>Можно ли их при загрузке установить
>в какое-то значение, а не
>только в нуль ?
>
>И вообще, как считать трафиг ?
>
есть пакет ipac - на основе ipchains все считает