Страница 1 из 2

подсчёт трафика пользователй

Добавлено: 2009-01-11 12:18:45
moadip
Привет
Вообщем нужно считать трафик пользователей в интернете,
вести статистику по сайтам и соответственно определённым извращенцам закрывать доступ к некоторым сайта.
Какой программой это можно реализовать ?
squid не предлагать(врёт)
нужно точно знать кто сколько насидел, включая pop3 smtp

Re: подсчёт трафика пользователй

Добавлено: 2009-01-11 14:35:29
hizel
по сайтам все будут врать :)
обычно одно другое дополняет, настроить, что то типа trafd или связки netflow и считать
дополняя данные по сайтам, если очень надо, статистикой со сквида

Re: подсчёт трафика пользователй

Добавлено: 2009-01-11 22:28:54
moadip
а чемто одним это нельзя сделать? Щас trafd считает нормально, по каждому пользователю кто сколько насидел. Если прикрутить squid не начнёт ли он дурит ? Ведь поидее если пользователи пойдут через squid, trafd наверно будет считать что весь трафик идет через 1 ип, (сервера)

Re: подсчёт трафика пользователй

Добавлено: 2009-01-11 22:38:38
hizel
хм будет, не вижу универсального решения, squid та еще кака, а уж парсилки его логов притча во языцех
есть милый хак, trafd считает обычный трафик и внедряет его в лог squid-а кроме 80 порта и подобных, squid работает как обычно
парсилка логов типа lightsquid выплёвывает полную статистику, насколько это вменяемо работает не в курсе :)

Re: подсчёт трафика пользователй

Добавлено: 2009-01-11 22:45:43
paradox
нужно точно знать кто сколько насидел, включая pop3 smtp
а зачем такие подробности?
у вас корпоративка?

Re: подсчёт трафика пользователй

Добавлено: 2009-01-12 1:21:55
moadip
конторка небольшая интернета покупают 6 gb, на месяц нехватает, руководство хочет знать куда делся каждый mb, и соответсвенно если ктото сидел на порно сайтах, проводить профилактическую беседу, и лочить доступ.
P.s. А нат неумеет собирать статистику посещяемых ресурсов?

Re: подсчёт трафика пользователй

Добавлено: 2009-01-12 1:29:54
hizel
логика, NAT работает максимум на layer 4, сайты внутри layer 7 HTTP и подобного

Re: подсчёт трафика пользователй

Добавлено: 2009-01-12 13:29:37
skeletor
Почитай вот это, возможно пригодится.
http://skeletor.ho.ua/index.php?name=ar ... &cat=1&p=2

Re: подсчёт трафика пользователй

Добавлено: 2009-01-14 12:23:46
schizoid
переведите на ВПН - и считайте на интерфейсе

Re: подсчёт трафика пользователй

Добавлено: 2009-01-14 12:42:49
hizel
это как то поможет статистике по сайтам? :)

Re: подсчёт трафика пользователй

Добавлено: 2009-01-14 12:44:41
zg
moadip писал(а): покупают 6 gb, на месяц нехватает
жрут больше всего вирусяги и обновления винды и софта. Сквид тут не помошник, нужно по серьёзней, я бы советовал ставить ipacctd

ЗЫ но и от статы сквида не отказываться

Re: подсчёт трафика пользователй

Добавлено: 2009-01-14 15:45:17
moadip
zg писал(а):
moadip писал(а):я бы советовал ставить ipacctd
щас стоит trafd,
чем ipacctd будет лучше ?

Re: подсчёт трафика пользователй

Добавлено: 2009-01-14 15:57:33
zg
ipacctd работает на дивертах, trafd в рамках trafshow

ipacctd не теряет пакеты и прост у становке и управлении

Re: подсчёт трафика пользователй

Добавлено: 2009-01-14 16:12:18
hizel
ng_netflow - самое православное :good:
ipacctd - получается завязанным на ipfw 8)

Re: подсчёт трафика пользователй

Добавлено: 2009-01-14 22:41:17
zg
hizel писал(а):ng_netflow - самое православное :good:
кому как -)))
hizel писал(а):ipacctd - получается завязанным на ipfw 8)
а чем плох ipfw? да и потом

Код: Выделить всё

DESCRIPTION
     Divert sockets are similar to raw IP sockets, except that they can be
     bound to a specific divert port via the bind(2) system call.  The IP
     address in the bind is ignored; only the port number is significant.  A
     divert socket bound to a divert port will receive all packets diverted to
     that port by some (here unspecified) kernel mechanism(s).  Packets may
     also be written to a divert port, in which case they re-enter kernel IP
     packet processing.
не вижу ни одной строчки про ipfw :smile:

Re: подсчёт трафика пользователй

Добавлено: 2009-01-17 1:23:11
moadip
решил попробовать ng_ipacct, вроде считает
mysql к нему кто нибудь прикручивал ?

Re: подсчёт трафика пользователй

Добавлено: 2009-01-17 9:34:43
zg
moadip писал(а):mysql к нему кто нибудь прикручивал ?
поищи по форуму, чё-то было

Re: подсчёт трафика пользователй

Добавлено: 2009-01-19 11:22:13
moadip
вообщем есть такой скрипт, для записили данныйх в БД

Код: Выделить всё

#!/usr/bin/perl

use DBI;
use DBD::mysql;
use Time::localtime;
$tm = localtime;
($DAY, $MONTH, $YEAR) = ($tm->mday, $tm->mon, $tm->year);

$IPACCTCTL="/usr/local/sbin/ipacctctl";
$IFACE = @ARGV[0];
$PARAMS = "$IFACE\_ip_acct:$IFACE";

$dbhost = "localhost";
$dbbd   = "stat";
$dbuser = "*****";
$dbpass = "*****";
$dbtable= "stat";

`$IPACCTCTL $PARAMS checkpoint`;
@stat = `$IPACCTCTL $PARAMS  show`;
`$IPACCTCTL $PARAMS clear`;

my $db = DBI->connect("DBI:mysql:$dbbd:$dbhost", $dbuser, $dbpass);

foreach (@stat){
    my($ip_from, $s_port, $ip_to, $d_port, $proto, $packets, $bytes) = split(/[\s\t]+/,$_);
    $db->do("INSERT INTO stat (r_date,ip_from,s_port,ip_to,d_port,proto,packets,bytes,iface) VALUES ('$DAY$MONTH$YEAR','$ip_from','$s_port','$ip_to','$d_port','$proto','$packets','$bytes','$IFACE')");
}

$result = $db->disconnect;
сообсно таблица БД

Код: Выделить всё

DROP TABLE IF EXISTS `stat`;
CREATE TABLE `stat` (
  `r_date` int(4) unsigned,
  `ip_from` int(4) unsigned,
  `s_port` int(2) unsigned,
  `ip_to` int(4) unsigned,
  `d_port` int(2) unsigned,
  `proto` int(2) unsigned,
  `packets` int(4) unsigned,
  `bytes` int(8) unsigned,
  `iface` varchar(12)
) TYPE=MyISAM;
Данные в бд заносятся некоректно, а именно столбцы; ip_from и ip_to, заносится только часть ip адреса "192168"

Код: Выделить всё

 |r_date    |    ip_from | s_port   |    ip_to  |  d_port    |proto    |packets |  bytes    |   iface | 
 |190109    |    192168 |	80      | 192168     |  58817    |	6      |    13	|   11875   |   rl1    |
 |190109    |    192168 |	61830   | 192168	 |  53	     |	17     |   1	|    57	    |   rl1    |
Пмомогите разобраться в чём проблема ?

Re: подсчёт трафика пользователй

Добавлено: 2009-01-19 12:02:56
Alex Keda
заменить на варчар 16

Re: подсчёт трафика пользователй

Добавлено: 2009-01-19 12:11:14
hizel
INET_ATON и INET_NTOA в лапы

Код: Выделить всё

- $db->do("INSERT INTO stat (r_date,ip_from,s_port,ip_to,d_port,proto,packets,bytes,iface) VALUES ('$DAY$MONTH$YEAR','$ip_from','$s_port','$ip_to','$d_port','$proto','$packets','$bytes','$IFACE')");
+ $db->do("INSERT INTO stat (r_date,ip_from,s_port,ip_to,d_port,proto,packets,bytes,iface) VALUES ('$DAY$MONTH$YEAR',INET_ATON('$ip_from'),'$s_port',INET_ATON('$ip_to'),'$d_port','$proto','$packets','$bytes','$IFACE')");

Re: подсчёт трафика пользователй

Добавлено: 2009-01-19 12:33:38
moadip
если делаю

Код: Выделить всё

+ $db->do("INSERT INTO stat (r_date,ip_from,s_port,ip_to,d_port,proto,packets,bytes,iface) VALUES ('$DAY$MONTH$YEAR',INET_ATON('$ip_from'),'$s_port',INET_ATON('$ip_to'),'$d_port','$proto','$packets','$bytes','$IFACE')");
получаю

Код: Выделить всё

r_date | ip_from      |s_port       |ip_to          |	      
190109|	3232235799  |	80       |  3232235797  |
т.е. в бд попадают абсолютно непонятные цифры.

если делаю

Код: Выделить всё

$db->do("INSERT INTO stat (r_date,ip_from,s_port,ip_to,d_port,proto,packets,bytes,iface) VALUES ('$DAY$MONTH$YEAR',INET_NTOA('$ip_from'),'$s_port',INET_NTOA('$ip_to'),'$d_port','$proto','$packets','$bytes','$IFACE')");
получаю

Код: Выделить всё

r_date | ip_from      |s_port       |ip_to |	      
190109|	0           |	80       |  0  |
подправил, результат тотже..

Код: Выделить всё

ip_from	int(16) 		UNSIGNED	Да	NULL
ip_to	int(16) 		UNSIGNED	Да	NULL

Re: подсчёт трафика пользователй

Добавлено: 2009-01-19 12:49:41
hizel
IPv4 адрес суть четыре байта , в mysql это тип int unsigned

Код: Выделить всё

mysql> select inet_aton('192.168.0.1');
+--------------------------+
| inet_aton('192.168.0.1') |
+--------------------------+
|               3232235521 |
+--------------------------+
1 row in set (0.02 sec)

mysql> select inet_ntoa(3232235521);
+-----------------------+
| inet_ntoa(3232235521) |
+-----------------------+
| 192.168.0.1           |
+-----------------------+
1 row in set (0.30 sec)
или храните в char(15)

Re: подсчёт трафика пользователй

Добавлено: 2009-01-19 13:31:39
moadip
спасибо,
а как просто в виде ip адреса записывать в бд ?

Код: Выделить всё

SQL-запрос: 

ALTER TABLE `stat` CHANGE `ip_from` `ip_from` CHAR( 16 ) UNSIGNED NULL DEFAULT NULL 

Ответ MySQL:  
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UNSIGNED NULL DEFAULT NULL' at line 1

Re: подсчёт трафика пользователй

Добавлено: 2009-01-19 14:12:37
hizel

Код: Выделить всё

ALTER TABLE `stat` MODIFY `ip_from` CHAR( 16 );
не?

замечу, что unsigned int меньше занимает и быстрее обрабатывается ;)

Re: подсчёт трафика пользователй

Добавлено: 2009-01-19 14:28:27
moadip
ок,
спасибо