The OpenNET Project
 
Поиск (ключи):  ПРОГРАММЫ СТАТЬИ СОВЕТЫ ФОРУМ
ССЫЛКИ НОВОСТИ (+) MAN'ы ДОКУМЕНТАЦИЯ

Сбор информации о проходящем через маршрутизатор предприятия трафике (traffic netflow mysql linux ulog)


<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>
Ключевые слова: traffic, netflow, mysql, linux, ulog,  (найти похожие документы)
From: Altuhov Dmitriy <altuhovd@gmail.com.> Newsgroups: email Date: Mon, 11 Jun 2007 14:31:37 +0000 (UTC) Subject: Сбор информации о проходящем через маршрутизатор предприятия трафике fprobe-ulog + flow-tools + MySQL + ASPLinux11 ------------------- Задача: сбор информации о проходящем через маршрутизатор предприятия (Ubuntu,ASPLinux) трафик. На маршрутизаторе два интерфейса: eth0:192.168.0.1 (локальная сеть) eth1:123.123.123.123 (реальный IP) Также на сервере настроен DHCP и NAT, в результате получается, что каждой машине выдаётся нужный ИП-адрес (привязка по MAC-у) и она сразу получает прямой доступ в инет. Просмотрел очень много различных "считалок", "биллингов". Ничего подходящего нет. Либо "навороченные биллинги", либо проекты 2000-2001 года некомпилирующиеся... Скажу сразу, что данное решение подходит для небольшого офиса (до 100 машин): - отсутствует шифрация (никакой защиты трафика от перехвата в сети), - отсутствует защита от подмены ip/mac (постараюсь в ближайшее время сделать на маршрутизаторе, но позднее реализуем на smart-овских свитчах) - отсутствует авторизация (хотя у меня вместе с этим решением работает SQUID+SAMS, который считает и детализирует http-трафик, который недоступен через NAT. (через NAT открыл только доступ к почтовым серверам ,25 и 110 порты). Итак, приступим. 1) Надеюсь, что NAT, маршрутизация, httpd, php, mysql и всё прочее нужное уже установлено! 2) Изменяем в iptables правила по которому все NAT-пакеты будут проходить через ULOG (внимание, это пример! не забудте изменить IP-адреса и другие параметры на нужные Вам): *filter :INPUT ACCEPT [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] :NETFLOW - [0:0] -A FORWARD -s 192.168.0.0/24 -d 123.123.123.123/32 -p tcp -m tcp --dport 25 -j NETFLOW -A FORWARD -s 192.168.0.0/24 -d 123.123.123.123/32 -p tcp -m tcp --dport 110 -j NETFLOW -A FORWARD -s 192.168.0.0/24 -d 123.123.123.123/32 -p tcp -m tcp --dport 4444 -j NETFLOW -A FORWARD -s 192.168.0.0/24 -d 2123.123.123.123/32 -p tcp -m tcp --dport 25 -j NETFLOW -A FORWARD -s 192.168.0.0/24 -d 123.123.123.123/32 -p tcp -m tcp --dport 110 -j NETFLOW -A FORWARD -s 192.168.0.0/24 -d 123.123.123.123/32 -p udp -j NETFLOW -A FORWARD -s 192.168.0.0/24 -d 123.123.123.123/32 -p udp -j NETFLOW -A FORWARD -s 192.168.0.5/32 -j NETFLOW -A FORWARD -s 192.168.0.200/32 -p udp -m udp --dport 123 -j NETFLOW -A FORWARD -s 192.168.0.200/32 -p udp -m udp --dport 53 -j NETFLOW -A FORWARD -d 192.168.0.0/24 -j NETFLOW -A FORWARD -s 192.168.0.0/24 -d 123.123.123.123/32 -p tcp -j NETFLOW -A FORWARD -s 192.168.0.0/24 -d 123.123.123.123/32 -p tcp -m tcp --dport 110 -j NETFLOW -A FORWARD -s 192.168.0.0/24 -d 123.123.123.123/32 -p tcp -m tcp --dport 25 -j NETFLOW -A NETFLOW -j ULOG -A NETFLOW -j ACCEPT COMMIT 3) устанавливаем пакеты последних версий fprobe-ulog и flow-tools 4) создаём папку /var/flows/acct/ (для хранения flows) 5) создаём папку /root/flows/ 6) в папку /root/flows/ кладём два исполняемых файла: Скрипт экспорта (ротационный скрипт) в базу запускает flow-capture сам через установленные промежутки времени: "-R /root/flows/rota" - здесь указывается путь к данному скрипту экспорта. Имя файла: rota #!/bin/sh /usr/bin/flow-export -f3 -mUNIX_SECS,DOCTETS,SRCADDR,DSTADDR,SRCPORT,DSTPORT -u "root:pass:localhost:3306:ulog:raw" < $1 скрипт запуска системы имя файла: runflow Примечение: данный скрипт нужен для ASPLinux. В Ubuntu можно настроить соответствующие конфигурационные файлы пакетов, так как в комплекте с пакетами идут startup-скрипты (/etc/init.d/...) #!/bin/sh killall fprobe-ulog killall flow-capture /usr/bin/flow-capture -R /root/flows/rota -e 2 -w /var/flows/acct 127.0.0.1/127.0.0.1/2055 /usr/local/sbin/fprobe-ulog 127.0.0.1:2055 8) в файле "rota" root:pass меняем на Ваши логин:пароль для доступа к MySQL (у пользователя должны быть права на базу ulog!)! 9) подключаемся к MySQL и создаём базу ulog create database ulog 10) в созданной базе ulog создаём таблицу для хранения данных: CREATE TABLE `raw` ( `unix_secs` int(11) unsigned NOT NULL default '0', `unix_nsecs` int(11) unsigned NOT NULL default '0', `sysuptime` int(11) unsigned NOT NULL default '0', `exaddr` varchar(45) NOT NULL default '0', `dflows` int(11) unsigned NOT NULL default '0', `dpkts` int(11) unsigned NOT NULL default '0', `doctets` int(11) unsigned NOT NULL default '0', `first` int(11) unsigned NOT NULL default '0', `last` int(11) unsigned NOT NULL default '0', `engine_type` tinyint(3) unsigned NOT NULL default '0', `engine_id` tinyint(3) unsigned NOT NULL default '0', `srcaddr` varchar(45) NOT NULL default '0', `dstaddr` varchar(45) NOT NULL default '0', `nexthop` varchar(45) NOT NULL default '0', `input` smallint(5) unsigned NOT NULL default '0', `output` smallint(5) unsigned NOT NULL default '0', `srcport` smallint(5) unsigned NOT NULL default '0', `dstport` smallint(5) unsigned NOT NULL default '0', `prot` tinyint(3) unsigned NOT NULL default '0', `tos` tinyint(3) unsigned NOT NULL default '0', `tcp_flags` tinyint(3) unsigned NOT NULL default '0', `src_mask` tinyint(3) unsigned NOT NULL default '0', `dst_mask` tinyint(3) unsigned NOT NULL default '0' ) TYPE=MyISAM; 11) запускаем runflow (желательно поместить этот скрипт в автозапуск rc.local) 12) через 15-20 минут смотрим в базе mysql: select srcaddr,dstaddr,doctets,SRCPORT,DSTport from raw; Конечно, если всё сделали правильно, ничего не забыли - должны быть данные! 13) устанавливаем веб-интерфейс с сайта http://phpal.sourceforge.net/allanbilling для просмотра статистики

<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>

Обсуждение [ Ajax режим | Смотреть все | RSS ]
 
  • WEB-интерфейс, altuhov, 17:51, 11/08/2007 [ответить] (1)
  • +/
    Написал простенький веб-интерфейс:
    http://phpal.sourceforge.net/?page=alLANBilling

  • Сбор информации о проходящем через маршр, AxeleRaT, 12:59, 14/09/2007 [ответить] (2)
  • +/
    А скрипт экспорта в базу, как по крону должен запускаться или чем?? Я чето не въехал

     
  • Сбор информации о проходящем через маршр, AxeleRaT, 13:28, 14/09/2007 [ответить] (3)
  • +/
    Все, теперь разобрался, просто в статье есть описка в строке
    usr/bin/flow-capture -R /root/flows/rota -e 2 -w /var/flows/acct 127.0.0.1/127.0.0.1/2055


    /root/flows/rota  - Скрипт должен называться тогда roota, раз мы его таким назвали ниже.


  • Скрипт экспорта ротационный скрипт в базу запускает f..., altuhov, 13:28, 14/09/2007 [ответить] (4)
  • +/
    текст скрыт [посмотреть] [смотреть все]

     
  • Сбор информации о проходящем через маршр, Vovans, 17:27, 11/01/2008 [ответить] (8) 
  • +/
    >----rota-----
    >        #!/bin/sh
    >        /usr/bin/flow-export -f3 -mDOCTETS,SRCADDR,DSTADDR,SRCPORT,DSTPORT -u
    >"root:pass:localhost:3306:ulog:raw" < $1

    ивизию, пропустили время тут --  "-f3 -mUNIX_SECS,"!!! Пол дня промучался, а где же отметки времени...


  • Сбор информации о проходящем через маршр, Sanches, 13:33, 04/10/2007 [ответить] (5) 
  • +/
    посмотрите sbill.sck26.ru

  • пропускная способность, deadka, 12:23, 31/10/2007 [ответить] (6) 
  • +/
    Подскажите плиз, кто знает - netflow успевает сливать в базу поток в 300 кб/сек? Или он ориентирован на меньшую скорость?

  • Не работает.. (((, Руслан, 09:58, 04/12/2007 [ответить] (7) 
  • +/
    Сделал как описано в статье.
    Стоит ASP 11.2.
    При запуске в /var/log/mesages пишет
    flow-capture[15967]: setsockopt(size=4194304)
    fprobe-ulog[15969]: [INFO]: Starting 1.1...
    fprobe-ulog[15969]: [INFO]: pid: 15969
    fprobe-ulog[15969]: [INFO]: options: u=1 s=5 g=30 d=60 e=300 n=5 a=0.0.0.0 M=0 b=10000 m=0 q=100 B=0 r=0 t=0:0 c= u= v=6 l=1
    fprobe-ulog[15969]: [INFO]: collector #1: 127.0.0.1:2055/0.0.0.0/m

    в /var/flows/acct/ пусто.
    В базе- тоже.

    Куда копать? Ткните пальцем плиз...


  • Сбор информации о проходящем через маршр, v0vik, 20:32, 12/05/2008 [ответить] (9) 
  • +/
    Всё это хорошо, но зачем тут SQL и PHP? Они усложняют процесс обработки данных

     
  • Сбор информации о проходящем через маршр, Dima, 17:54, 14/05/2008 [ответить] (10) 
  • +/
    MySQL и PHP используются в веб-интерфейсе для просмотра статистики по трафику.

    в MySQL сливаются данные по трафику..

    Уложнений обработки не замечаю, наоборот очень удобно через веб-интерфейс смотреть статистику


  • Сбор информации о проходящем через маршр, somebody, 15:05, 19/06/2008 [ответить] (11) 
  • +/
    на сколько этот метод устойчив к гигабайтам проходящего трафика скажем за десяток минут?
    муська не захлебнется?

  • Сбор информации о проходящем через маршр, Gavid und Doliaff, 16:57, 01/07/2008 [ответить] (12) 
  • +/
    Рекомендуется добавлять опцию --ulog-cprange для того, чтобы вырезать лишь заголовок, иначе ULOG попытается копировать весь пакет в US. Ну и можно опцию --ulog-qthreshold (чтобы меньше грузить процессор). Например:

    iptables -I FORWARD -j ULOG --ulog-cprange 64 --ulog-qthreshold 10


  • Сбор информации о проходящем через маршр, vlad, 23:44, 05/10/2008 [ответить] (13) 
  • +/
    не могу понять, как часто происходят записи в базу и как этим процессом можно управлять

  • Вышла новая версия alLANBilling!, altuhov, 23:49, 05/10/2008 [ответить] (14) 
  • +/
    http://phpal.sourceforge.net/in-allanbilling-added-database-cleanup

  • Сбор информации о проходящем через маршр, vlad, 00:23, 06/10/2008 [ответить] (15
  • +/
    у меня вообще страннное поведение - в момент запуска данные падают в базу, и на этом все останавливается.
    данные в базу попадают только один раз, кто-нибудь может помочь?

  • Сбор информации о проходящем через маршр, vlad, 00:55, 06/10/2008 [ответить] (16
  • +/
    Вообще не могу поняь, как оно ДОЛЖНО работать.

    Запускаю скрипт, порция данных падает в базу, процессор загружен.

    Когда должна упасть следующая порция?
    Она не падает 1 минут, час, два,

    Запускаю пару раз скрипт, количество записей в базе растет. Сижу голову ломаю где грабли то?


  • Сбор информации о проходящем через маршр, Alman, 11:14, 24/11/2008 [ответить] (17
  • +/
    Все сделал вроде как правильно, но в базу все-равно ничего не льется. Переделывал все заново уже 3 раза. Итог такой же....(((

  • Сбор информации о проходящем через маршр, sduskhis, 14:20, 24/11/2008 [ответить] (18
  • +/
    Большое спасибо за статью. Лучшего способа по подсчету трафика я еще не видел.
    Но действительно няпрягает момент с нагрузкой на роутер, которую дают процессы fprobe-ulog,ksoftirqd. Использование опций --ulog-cprange и --ulog-qthreshold помогло снизить активность  ksoftirqd, но fprobe-ulog все также прожорлив. Какие есть еще возможности снизить нагрузку?

  • Сбор информации о проходящем через маршр, Alman, 16:09, 24/11/2008 [ответить] (19
  • +/
    тупой вопрос, но все же задам, чтобы подтвердить свои сомнения: в скрипте runflow в первой строке пропущено #!/bin/sh или нет????


    Ваш комментарий
    Имя:         
    E-Mail:      
    Заголовок:
    Текст:



    Подпишись на Linux Format и получи один из 3 ценных призов!

    Началась подписка на журнал Linux Format на 2010 год. Спешите оформить подписку на единственный в России ежемесячный журнал о Linux!

    Все, оформившие подписку на печатную версию журнала, получают диск с архивом журнала Linux Format за 2005-2009г. в подарок. Также в подарок вы получаете именную электронную версию в формате PDF. Теперь вы можете приступить к чтению журнала сразу в момент выхода свежего номера, не дожидаясь, пока вам доставят бумажную версию.

    Кроме того, все, оформившие подписку на первую половину или весь 2010 год в интернет-магазине ГНУ/Линуксцентра, автоматически становятся участниками розыгрыша ценных призов:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2010 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруЦУПГИД  
    RUNNet TopList