The OpenNET Project / Index page

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



Индекс форумов
Составление сообщения

Исходное сообщение
"Статистика сетевых соединений через syslog и iptables"
Отправлено sash, 29-Ноя-05 23:30 
>2Dread
>Камрад. Если у тебя есть реальный рабочий пример настроек и скриптов для
>ведения статистикик по ulog,  под линукс скажем Mandrake, то я
>был бы очень признателен.

Выкладывать пример скрипта не буду, но система следующая:

1. iptables+ipt_ULOG+ulogd+mysql
2. Создаете табличку в mysql, указываете ее в настройках ulogd
3. пишите правило вроде: iptables -A FORWARD -j ULOG
4. запускаете iptables/mysql/ulogd

Получаете в таблице развернутую попакетную статистику. Для оптимизации таблицы написал следующее на пхп:

        mysql_query("DROP TABLE tmp;");
        mysql_query("CREATE TABLE tmp (ip_saddr INT UNSIGNED, ip_daddr INT UNSIGNED, ip_protocol TINYINT(2) UNSIG
NED,
             ip_totlen INT(8) UNSIGNED, tcp_sport SMALLINT UNSIGNED, tcp_dport SMALLINT UNSIGNED,
             udp_sport SMALLINT UNSIGNED, udp_dport SMALLINT UNSIGNED, time INT(10) UNSIGNED, INDEX(time));");

        $i=0;
        $rows=mysql_query("SHOW TABLE STATUS LIKE 'traffic';");
        $rows=mysql_result($rows, 0, 'Rows');

        while($i<=$rows):
        mysql_query("INSERT INTO tmp SELECT * FROM traffic LIMIT 300000;");
        mysql_query("INSERT INTO cache (ip_saddr,ip_daddr,ip_protocol,ip_totlen,tcp_sport,tcp_dport,udp_sport,udp
_dport,time)
             SELECT ip_saddr,ip_daddr,ip_protocol,sum(ip_totlen),tcp_sport,tcp_dport,udp_sport,udp_dport,time
             FROM tmp GROUP BY ip_saddr,ip_daddr,ip_protocol,tcp_sport,tcp_dport,udp_sport,udp_dport,time ORDER B
Y time;");
        mysql_query("DELETE FROM tmp;");

        if($rows-$i<300000)
            {
                $temp=$rows-$i;
                $query="DELETE FROM traffic LIMIT $temp;";
            } else {
                $query="DELETE FROM traffic LIMIT 300000;";
            }

        mysql_query($query);
        $i=$i+300000;
        endwhile;

        mysql_query("DROP TABLE tmp;");
        mysql_query("OPTIMIZE TABLE traffic;");


В таблицу traffic собсно складывается статистика. Идея скрипта - агрегировать статистику по пакетам в статистику по соединениям. Насколько это мне удалось - судить сложно, есть нюансы с mysql 4.1.

Дальше вы можете генерировать какие угодно отчеты:
- по портам
- протоколам
- оправителям получателям
- и т.д.

Учтите, если вы используете прокси на этой же машине надо будет отдельно настраивать ulog для порта прокси, вроде:

iptables -A INPUT -p tcp --dport 3128 -d $IP_PROXY -s $SUBNET_LOCAL -m state --state NEW,ESTABLISHED -j ULOG
iptables -A OUTPUT -p tcp --sport 3128 -s $IP_PROXY -s $SUBNET_LOCAL -m state --state NEW,ESTABLISHED -j ULOG

Последнее, нагрузка на mysql - 512k - 2-3%, и еще 10% wa, так что лучше иметь для статистики отдельную машину, если пользуете базу данных.

З.Ы. Тема простая, но объемная много простых нюансов которые следует учитывать.

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



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

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