Оперативный биллинг с применением netflow на линукс машине

Данный ман рекомендуется для администраторов малых кантор которым быстро надо организовать простецкий биллинг
Задача:
На линуксовой машине реализовать биллинг, с выводом отчета в html файл

Ось:
Ubuntu 9.10 server

Что едим?
Для формирования netflow потока используем fprobe, для сливания логов потока flow-toools (flow-capture), пишем выводилку отчетов на sh

Поехали:

Предполагается что на шлюзе уже установлена система, интерфейсы размечены, инет на одном есть, на другом локалка висит, инет раздается через NAT и тд, в общем подразумеваем что инет есть. Еще должен стоять WEB сервер (apache), для того чтобы смотреть отчеты


Subnet 192.168.0.0/24

eth0 - local
eth1 - inet

Устанавливаем fprobe

apt-get install fprobe

В процессе установки указываем интерфейс который надо мониторить (eth1), на вопрос куда посылать логи - указываем 127.0.0.1:5877 (порт можно выбрать любой незанятый). Собственно установка формирователя netflow потока и закончена.

Можем проверить работу fprobe командой ps ax | grep fprobe

Дальше делаем коллектор...

Устанавливаем flow-tools

apt-get install flow-tools

Создаем папку для сливания логов: mkdir /var/log/flowlogs

Потом идем на конфиг /etc/flow-tools/flow-capture.conf, и изменяем строчку

-w /var/log/flowlogs -n 275 0/127.0.0.1/5877

Это мы указали что инфа будет сливаться с локалхоста по порту 5877 и логи будут вестись на /var/log/flowlogs.

Дальше перезапускаем flow-capture /etc/init.d/flow-capture restart

Можем опять же нетстатом проверить слушает ли коллектор наш порт 5877.

udp 0 0 0.0.0.0:5877 0.0.0.0:* 19652/flow-capture

Дальше ждем, через некторое время в /var/log/flowlogs начнется сливание логов с fprobe.

Сейчас сделаем сливание отчетов в HTML файл. Поможет нам в этом скоипт-обработчик:

Создаем папку для скрипта
mkdir /flows

Создаем акцесс-лист flow.acl в котором опишем необходимые нам списки доступа, этот файл потом будет использоваться утилитой flow-filter:

ip access-list standard localnet permit 192.168.0.0 0.0.255.255
ip access-list standard localnet deny any

ip access-list standard internet deny 192.168.0.0 0.0.255.255
ip access-list standard internet permit any

localnet - наша локальная сеть
internet - интернет, трафик с которого и будет считаться


Следующим шагом создадим файл report.conf, который будет использоваться утилитой flow-report:

stat-report localnet
type ip-destination-address
output
format ascii
options +header,+xheader,+totals
fields -flows,-packets,-duration

stat-definition localnet
report localnet


и собственно и сам скрипт который будет генерировать ежедневный отчет:

#!/bin/sh
RPT_Y=`/bin/date +%Y -d "-1 day"`
RPT_M=`/bin/date +%m -d "-1 day"`
RPT_D=`/bin/date +%d -d "-1 day"`
RPT_DIR="/var/www/flow-reports/daily" # директория WEB сервера куда будут сливаться HTML отчёты
RPT_DATE=${RPT_Y}-${RPT_M}-${RPT_D}
RPT_NAME=${RPT_DIR}/${RPT_DATE}.html
FLOW_DIR="/var/log/flowlogs" # место хранения логов
mkdir -p ${RPT_DIR}
echo "<HTML>\n<HEAD>\n<TITLE>${RPT_DATE} Дневной отчёт</TITLE>\n</HEAD>\n<BODY>\n<H1>${RPT_DATE} - Дневной отчёт про траффику</H1>\n" > ${RPT_NAME}
/usr/bin/flow-cat ${FLOW_DIR}/${RPT_Y}/${RPT_Y}-${RPT_M}/${RPT_Y}-${RPT_M}-${RPT_D} \
|/usr/bin/flow-filter -f /flows/flow.acl -Sinternet -Dlocalnet \
|/usr/bin/flow-report -s /flows/report.conf -S localnet \
| /usr/bin/flow-rptfmt -f html -H >> ${RPT_NAME}
echo "</BODY>\n</HTML>\n" >> ${RPT_NAME}


Для того чтобы проверить работоспособность скрипта - надо создать в /var/log/flowlogs папку по аналогии с созданной уже там папкой только на вчерашний день, и скопировать слитые данные туда, затем запустить скрипт. Сркипт можно запихать в cron чтобы он запускался через определенный промежуток времени.

Octets - количество прошедших байт в секунду. Для того чтобы вычислить количество в мегабайтах - разделяем количество октетов на 1024 (например 273737/1024=267.321 - значит 267 мегабайт 321 килобайт)

Если вы не хотите учитывать бекбоновский траффик - просто добавьте ихние подсети, не забыв указать реверсивные макси в acl лист скрипта, в ip access-list standard internet deny. Тогда они учитываться не будут
  • просмотров: ~6583
  • рейтинг: ?

Комментарии (2)

Вы - anonymous, войти ?

можно использовать bbcode-теги
[b]жирный текст[/b]
[i]курсив[/i]
[u]underline[/u]
[s]зачеркнутый текст[/s]
[size=20px]размер шрифта[/size]
всякие изменения текста
[left][/left]
[right][/right]
[center][/center]
позиционирование элементов: картинки, текст и т.д
[url][/url]
[email][/email]
внутри тега [url] помещайте ссылки, а внутри [email] адрес электронной почты;
так же [url] можно использовать в виде:
[url=http://example.com]пример[/url],
[url=http://test.ru][img]http://flickr.com/givemeimg.png[/img][/url]
[code][/code]
[quote][/quote]
внутри тега [code] можно помещать программный код (подстветка попытается включиться автоматически); для выделения цитат используйте [quote]
также можно напрямую указать язык [code=cpp]int i;[/code]
[list][/list]
создаем списки, каждый элемент пишется после [*].

Можно указывать маркер - [list=marker].
возможные маркеры 1(decimal), i(lower-roman), I(upper-roman), a(lower-alpha), A(upper-alpha). Примеры:

[list][*]1 элемент[*]2 элемент[*]3 элемент[/list]
[list=1][*]1 элемент[*]2 элемент[*]3 элемент[/list]
[list=A][*]1 элемент[*]2 элемент[*]3 элемент[/list]
[table][/table]
оформляем таблицу, используя внутренние теги [tr] и [td].
[tr] - строка, [td] - поле в строке,
[table=100%] - можно задавать ширину в процентах, по-умолчанию ширина 100%
[td=2] - можно задавать сколько столбцов входит в это поле. Пример:

[table=50%][tr][td]столбец 1[/td][td]столбец 2[/td][/tr][tr][td]значение 1[/td][td]значение 2[/td][/tr][tr][td=2]сразу 2 столбца[/td][/tr][/table]
[img][/img]
тег для вставки фото или картинок, мы любим картинки. Примеры использования:

[img]http://ya.ru/logo.png[/img],
[img=100x100px]http://ya.ru/logo.png[/img]
[img=fullimg.url]thumbimg.url[/img],
Пожалуйста загружайте картинки на наш сайт, либо вставляйте с бекбоновских ресурсов.
[video][/video]
Проигрывает видео, внутрь вставляем ссылки на видео, поддерживается Play.Ykt.Ru(нужно вставить ссылку на страницу с видео) и tv.ykt.ru(нужно вставить ссылку на адрес файла)