The OpenNET Project / Index page

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

Сбор информации о проходящем через маршрутизатор предприятия трафике (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 / Печать Следующая >>

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, altuhov (ok), 17:51, 11/08/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Написал простенький веб-интерфейс:
    http://phpal.sourceforge.net/?page=alLANBilling
     
  • 1.2, AxeleRaT (??), 12:59, 14/09/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А скрипт экспорта в базу, как по крону должен запускаться или чем?? Я чето не въехал
     
     
  • 2.3, AxeleRaT (??), 13:28, 14/09/2007 [^] [^^] [^^^] [ответить]  
  • +/
    Все, теперь разобрался, просто в статье есть описка в строке
    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, раз мы его таким назвали ниже.

     
  • 2.4, altuhov (ok), 13:28, 14/09/2007 [^] [^^] [^^^] [ответить]  
  • +/
    >А скрипт экспорта в базу, как по крону должен запускаться или чем??

    Скрипт экспорта (ротационный скрипт) в базу запускает flow-capture сам через установленные промежутки времени: "-R /root/flows/rota" - здесь указывается путь к скрипту экспорта.

    Виноват, исправления для статьи:

    7) в папку /root/flows/ кладём два исполняемых файла:

    скрипт запуска системы имя файла: runflow
    ----runflow-----
            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
    ----end of runflow-----

    скрипт экспорта данных в MySQL, имя файла: rota

    ----rota-----
            #!/bin/sh
            /usr/bin/flow-export -f3 -mDOCTETS,SRCADDR,DSTADDR,SRCPORT,DSTPORT -u "root:pass:localhost:3306:ulog:raw" < $1
    ----end of rota-----


    8) в файле "rota" root:pass меняем на Ваши логин:пароль для доступа к
    MySQL (у пользователя должны быть права на базу ulog!)!


     
     
  • 3.8, Vovans (?), 17:27, 11/01/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >----rota-----
    >        #!/bin/sh
    >        /usr/bin/flow-export -f3 -mDOCTETS,SRCADDR,DSTADDR,SRCPORT,DSTPORT -u
    >"root:pass:localhost:3306:ulog:raw" < $1

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

     

  • 1.5, Sanches (??), 13:33, 04/10/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    посмотрите sbill.sck26.ru
     
  • 1.6, deadka (?), 12:23, 31/10/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Подскажите плиз, кто знает - netflow успевает сливать в базу поток в 300 кб/сек? Или он ориентирован на меньшую скорость?
     
  • 1.7, Руслан (?), 09:58, 04/12/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Сделал как описано в статье.
    Стоит 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/ пусто.
    В базе- тоже.

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

     
  • 1.9, v0vik (?), 20:32, 12/05/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Всё это хорошо, но зачем тут SQL и PHP? Они усложняют процесс обработки данных
     
     
  • 2.10, Dima (??), 17:54, 14/05/2008 [^] [^^] [^^^] [ответить]  
  • +/
    MySQL и PHP используются в веб-интерфейсе для просмотра статистики по трафику.

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

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

     

  • 1.11, somebody (??), 15:05, 19/06/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    на сколько этот метод устойчив к гигабайтам проходящего трафика скажем за десяток минут?
    муська не захлебнется?
     
  • 1.12, Gavid und Doliaff (?), 16:57, 01/07/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Рекомендуется добавлять опцию --ulog-cprange для того, чтобы вырезать лишь заголовок, иначе ULOG попытается копировать весь пакет в US. Ну и можно опцию --ulog-qthreshold (чтобы меньше грузить процессор). Например:

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

     
  • 1.13, vlad (??), 23:44, 05/10/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    не могу понять, как часто происходят записи в базу и как этим процессом можно управлять
     
  • 1.14, altuhov (ok), 23:49, 05/10/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    http://phpal.sourceforge.net/in-allanbilling-added-database-cleanup
     
  • 1.15, vlad (??), 00:23, 06/10/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    у меня вообще страннное поведение - в момент запуска данные падают в базу, и на этом все останавливается.
    данные в базу попадают только один раз, кто-нибудь может помочь?
     
  • 1.16, vlad (??), 00:55, 06/10/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Вообще не могу поняь, как оно ДОЛЖНО работать.

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

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

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

     
  • 1.17, Alman (??), 11:14, 24/11/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Все сделал вроде как правильно, но в базу все-равно ничего не льется. Переделывал все заново уже 3 раза. Итог такой же....(((
     
  • 1.18, sduskhis (?), 14:20, 24/11/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Большое спасибо за статью. Лучшего способа по подсчету трафика я еще не видел.
    Но действительно няпрягает момент с нагрузкой на роутер, которую дают процессы fprobe-ulog,ksoftirqd. Использование опций --ulog-cprange и --ulog-qthreshold помогло снизить активность  ksoftirqd, но fprobe-ulog все также прожорлив. Какие есть еще возможности снизить нагрузку?
     
  • 1.19, Alman (??), 16:09, 24/11/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    тупой вопрос, но все же задам, чтобы подтвердить свои сомнения: в скрипте runflow в первой строке пропущено #!/bin/sh или нет????
     
  • 1.20, MJS (?), 16:38, 16/07/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    В 4м правиле очепятка
     
  • 1.21, AnrDaemon (?), 13:50, 21/11/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Статья написана на каком угодно языке, только не на русском.
    Большой и жирный минус автору.
     
  • 1.22, zeleniy (?), 17:19, 25/01/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    #!/bin/sh
            /usr/bin/flow-export -f3 -mUNIX_SECS,DOCTETS,SRCADDR,DSTADDR,SRCPORT,DSTPORT -u "root:pass:localhost:3306:ulog:raw" < $1
    а что здесь значит $1. При запуске говорит неоднозначное направление
     
  • 1.23, yast (?), 16:12, 27/07/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А почему некоторые правила 2 раза прописаны?

    можете подсказать, почему не достаточно одной команды
    -A FORWARD -j ULOG --ulog-cprange 100

     

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




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

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