The OpenNET Project / Index page

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

Простая настройка NeTAMS во FreeBSD (isp billing traffic freebsd)


<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>
Ключевые слова: isp, billing, traffic, freebsd,  (найти похожие документы)
From: Bachilo Dmitry <root@solink.ru.> Newsgroups: email Date: Mon, 1 May 2006 18:21:07 +0000 (UTC) Subject: Простая настройка NeTAMS во FreeBSD По многочисленным и уже весьма поднадоевшим просьбам публикую подробную инструкцию по настройке NeTAMS во FreeBSD с использованием данных о трафике из IPFW, с сохранением статистики в MySQL и генерацией страниц-отчетов в виде HTML. Disclimer: Во-первых безусловно NeTAMS мощный инструмент и сделать в нем можно много чего, но я пишу инструкцию самую попсовую для начинающих, которым надо только считать трафик. Во-вторых, да, ipacct это очень здорово и надо использовать именно его, но если админ хочет NeTAMS, почему бы ему не помочь? Тем более что если статистика делается в первую очередь для того, чтобы начальство могло её понимать NeTAMS и проще и гибче. Всё это субъективно, потому статья только для согласных с этим :-) В третьих, написано всё это в попыхах, в перерывах между основной работой, возможно я что-то забыл, но вообще за последнюю неделю именно таким способом я подня три разных сервера, и всё это работает, вот только нетамс с каждым обновлением меняет синтаксис конфига, будьте внимательны. Внимание !!! Эта статья типичное хауту. Хауту для FreeBSD. А все эти хауту совсем не BSD-way, так что всё таки очень настоятельно рекомендуется читать именно инструкцию к NeTAMS-у, а не эту статью. Но тем не менее... И так, дано: Маршрутизатор на FreeBSD с ipfw + natd. Диверт в natd осуществляется через 10000-е правило ipfw rl0 внутренний интерфейс, смотрящий в локальную сеть rl1 внешний интерфейс, смотрящий в сеть провайдера. Локальная сеть 192.168.1.0/255.255.255.0, адрес маршрутизатора 192.168.1.1 Ну во-первых нам понадобится Apache ставим порт /usr/ports/www/apache13. Во-вторых нам понадобится MySQL, например, пятый, ставим /usr/ports/databases/mysql5-server. ВАЖНО! Не ставьте порт нетамса /usr/ports/net-mgmt/netams до того как поставите MySQL. Сначала MySQL, потом NetAMS иначе второй соберется без поддержки первого и так или иначе придется его пересобирать. Пропишите в /etc/rc.conf следующие строки: apache_enable=YES mysql_enable=YES Затем создайте файл /usr/local/etc/rc.d/netams.sh, в него запишите строчку /usr/local/libexec/netams (без кавычек конечно) и дайте команду chmod 777 /usr/local/etc/rc.d/netams.sh в /usr/local/etc/apache/httpd.conf поменяйте пути Directory и DocumentRoot. Приведите их к следующему виду: DocumentRoot "/usr/netams/" <Directory "/usr/netams/"> Теперь создайте директорию /usr/netams командой mkdir /usr/netams На этом этапе, можно сказать, настройка Apache и MySQL завершена. Конечно, MySQL в данном случае остался с доступом root без пароля, но если никто на ваш сервер кроме вас больше не суется, и он тщательно зафаерволен, то это, в общем, не страшно. Переходим к настройке NeTAMS У вас должен появиться файл /usr/local/etc/netams.cfg, начинающийся с таких строк: #NeTAMS version 3.1(1830.1) compiled by root@storage #configuration built Tue Apr 26 06:17:01 2005 #begin Перейдем к самому важному: найдем service processor 0 Там должны обязательно быть такие строки: lookup-delay 2 flow-lifetime 5 Опишем две политики Интернет и локальный трафик policy acct oid 030000 name internet target proto ip policy acct oid 030001 name local-traffic target file /usr/netams/local.txt Как можно понять из написанного, политика internet включает в себя вообще всё, а политика local-traffic включает в себя адреса, написанные в файле /usr/netams/local.txt Далее поставим строчку, чтобы никто не мог, сменив адрес на неописаный в конфиге, попасть в интернет бесплатно: restrict all drop local pass и тоже самое опишем для всей сети: unit net oid 020000 name ALL-TRAFFIC ip 192.168.1.0 mask 255.255.255.0 no-local-pass acct-policy %local-traffic internet Видите, как описана политика учета? Объясняю: так как internet это вообще всё, нам нужно, если трафик локальный, не пустить его к политике учета internet, для этого мы и ставим процент перед политикой local-traffic этот символ означает последний в списке проверки. Таким образом, если абонент заходит на адрес, втречающийся в списке /usr/netams/local.txt, данные по трафику с этого адреса заносятся только в политику local-traffic и в политику internet не попадают, если же абонент зашел на другой адрес, local-traffic ничего не защитал, информация передалась политике internet. Существует популярное заблуждение, в которое вводят авторы документации NeTAMS, дескать для этой цели есть символ ! Перед политикой. НЕТ! Этот символ исключает трафик политики, и считать его просто не получится. Теперь зададим тех юзеров, которых мы согласны выпустить в интернет и трафик которых мы и будем считать: unit host oid 020002 name Valera ip 192.168.1.50 acct-policy %local-traffic internet unit host oid 020003 name Roman ip 192.168.1.51 acct-policy %local-traffic internet unit host oid 020004 name Stepan ip 192.168.1.52 acct-policy %local-traffic internet Синтаксис тот же самый. Номер oid, Имя (для удобства просмотра статистики в HTML всё тем же начальством :-) адрес, политика учета. Завершается описание сервиса процессор 0 строкой storage 1 all Теперь опишем этот самый storage, это все го две строки: service storage 1 type mysql Ну а теперь платформозависимая конфигурация: service data-source 1 type ip-traffic source divert 199 rule 9999 "ip from any to any out via rl0" rule 10001 "ip from any to any in via rl0" Этот сервис описывает откуда брать инфу о трафике. В данном случае мы берем её из фаервола FreeBSD IPFW. Обратите внимание NeTAMS окутывает диверт в natd своими правилами, но слушает внутренний интерфейс, а не внешний. Ну а дальше просто service html 0 path /usr/netams language ru run 1min client-pages all Ну собственно вот и всё, в конце конфига можете написать #end и сохранить его. В файл /usr/netams/local.txt можно что-нибудь написать, например: 172.22.0.0 /16 172.31.255.5 /255.255.255.255 Перезагружайтесь и через минуту первые данные о трафике уже будут доступны любому абоненту через веб-интерфейс вашего маршруизатора. Давайте сверимся еще раз, конфиг будет вроде этого: #NeTAMS version 3.1(1830.1) compiled by root@storage #configuration built Tue Apr 26 06:17:01 2005 #begin #global variables configuration debug none user oid 01327B name admin real-name "Dmitry" crypted $1$$GmbL3iXOMZR57QuGDLv.L1 email [email protected] permit all schedule oid 08FFFF time hourly- action "html" #services configuration service server 0 login any listen 20001 max-conn 6 service processor 0 lookup-delay 2 flow-lifetime 5 policy acct oid 030000 name internet target proto ip policy acct oid 030001 name local-traffic target file /usr/netams/local.txt restrict all drop local pass unit net oid 020000 name ALL-TRAFFIC ip 192.168.1.0 mask 255.255.255.0 no-local-pass acct-policy %local-traffic internet unit host oid 020002 name Valera ip 192.168.1.50 acct-policy %local-traffic internet unit host oid 020003 name Roman ip 192.168.1.51 acct-policy %local-traffic internet unit host oid 020004 name Stepan ip 192.168.1.52 acct-policy %local-traffic internet storage 1 all service storage 1 type mysql service data-source 1 type ip-traffic source divert 199 rule 9999 "ip from any to any out via rl0" rule 10001 "ip from any to any in via rl0" service html 0 path /usr/www/netams language ru run 1min client-pages all #end

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

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, MoHaX (ok), 11:15, 03/05/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Прикольно. Автор молодец. Вот такой вопрос, можно ли сделать так, чтобы netams слал отчёт по трафику в определённый день за опрделённый период на мыло?
     
  • 1.2, Bocha (??), 11:30, 03/05/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Нет, НеТАМС умеет только предупреждать о наступающей квоте. Другое дело, что так как любой отчетный период - это просто HTML-файл, к базе не привязаный, то есть практически плэйн-текст, его можно послать с помощью простого скрипта средствами FreeBSD. Мои знакомые админы так делают.
     
     
  • 2.3, MoHaX (ok), 11:41, 03/05/2006 [^] [^^] [^^^] [ответить]  
  • +/
    >Нет, НеТАМС умеет только предупреждать о наступающей квоте. Другое дело, что так
    >как любой отчетный период - это просто HTML-файл, к базе не
    >привязаный, то есть практически плэйн-текст, его можно послать с помощью простого
    >скрипта средствами FreeBSD. Мои знакомые админы так делают.

    А можно ли тогда брать данные из самой базы скриптом на перле не пример? Не давно пытался разобраться где там чего лежит, нифига не догнал как эти данные получить. Может есть мысль?

     
     
  • 3.6, Bocha (??), 12:15, 03/05/2006 [^] [^^] [^^^] [ответить]  
  • +/
    >>Нет, НеТАМС умеет только предупреждать о наступающей квоте. Другое дело, что так
    >>как любой отчетный период - это просто HTML-файл, к базе не
    >>привязаный, то есть практически плэйн-текст, его можно послать с помощью простого
    >>скрипта средствами FreeBSD. Мои знакомые админы так делают.
    >
    >А можно ли тогда брать данные из самой базы скриптом на перле
    >не пример? Не давно пытался разобраться где там чего лежит, нифига
    >не догнал как эти данные получить. Может есть мысль?

    Ну брать-то можно, но лично я в структуре базы нетамса толком нифига не понял :-)


     
  • 3.7, nobody (??), 12:18, 03/05/2006 [^] [^^] [^^^] [ответить]  
  • +/
    там все просто, наиболее интересна таблица summary где хранится агрегированный трафик по часу, дню, недели, месяцу, юниту, политике
    например есть юнит с oid'ом u1 и политика с oid'ом p1 тогда трафик по этой политике по часам


    select to_timestamp(t_from), bytes_in, bytes_out from summary where unit_oid = u1 and policy_oid = p1 and prefix = 'H'

    PS. to_timestamp() - функция в postgresql

     
     
  • 4.8, Bocha (??), 12:34, 03/05/2006 [^] [^^] [^^^] [ответить]  
  • +/
    Да как раз таки основная проблема в том, что oid в таблице вообще какой-то рэндомный и не соответствует ни оиду прописанному в конфиге нетамса, ни каой-либо логике вообще.
     
     
  • 5.10, MoHaX (ok), 13:05, 03/05/2006 [^] [^^] [^^^] [ответить]  
  • +/
    >Да как раз таки основная проблема в том, что oid в таблице
    >вообще какой-то рэндомный и не соответствует ни оиду прописанному в конфиге
    >нетамса, ни каой-либо логике вообще.

    Это точно. Как оно вообще там создаётся никто не в курсе? Сам же нетамс как-то всё это понимает....

     
  • 5.11, nobody (??), 13:12, 03/05/2006 [^] [^^] [^^^] [ответить]  
  • +/
    нету там ничего рандомного
    в конфиге все оиды в hex, в базе в dec
    есть косяк в том, что нетамс не валит удаленные оиды в конфиге из oids, т.е. там может находится куча "старых" оидов

    да, еще в базе не хранятся имена политик, т.е. чтобы узнать как называется политика с каким-либо оидом, нада глядеть в конфиг

    ps. имхо с сылочной целостнотью в нетамс схеме не все в порядке...
    ps. netams 3.3.2

     
  • 4.9, MoHaX (ok), 13:01, 03/05/2006 [^] [^^] [^^^] [ответить]  
  • +/
    >там все просто, наиболее интересна таблица summary где хранится агрегированный трафик по
    >часу, дню, недели, месяцу, юниту, политике
    >например есть юнит с oid'ом u1 и политика с oid'ом p1 тогда
    >трафик по этой политике по часам
    >
    >
    >select to_timestamp(t_from), bytes_in, bytes_out from summary where unit_oid = u1 and policy_oid
    >= p1 and prefix = 'H'
    >
    >PS. to_timestamp() - функция в postgresql

    Люди а как to_timestamp() в мускуле сотворить?

     
     
  • 5.12, nobody (??), 13:15, 03/05/2006 [^] [^^] [^^^] [ответить]  
  • +/
    select FROM_UNIXTIME(t_from) ...
    ?
     
     
  • 6.13, MoHaX (ok), 13:40, 03/05/2006 [^] [^^] [^^^] [ответить]  
  • +/
    >select FROM_UNIXTIME(t_from) ...
    >?

    Спасибо. Разобрался.

     

  • 1.4, nuclight (?), 11:46, 03/05/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    В скриптах в /usr/local/etc/rc.d/ следует сделать обработку параметров start/stop, иначе, как описано в статье, netams будет запускаться два раз - при загрузке и при шатдауне.
     
     
  • 2.5, Bocha (??), 12:14, 03/05/2006 [^] [^^] [^^^] [ответить]  
  • +/
    Точнее только делать попытку и тут же завершаться - нетамс нельзя запустить дважды. Но чисто  этически nuclight прав, в этих скриптах положено делать обработку параметров, чтобы не терять несколько секунду при выключении/перезагрузке или например чтобы иметь возможность легко перезапустить нетамс. Но всё будет работать и так в любом случае.
     

  • 1.14, Net (??), 14:49, 03/05/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Было бы хорошо если бы Bachilo Dmitry описал бы процесс не только ipfw+natd, но и привёл бы способ настройки всего этого на IPF/PF
     
     
  • 2.15, Bocha (??), 16:02, 03/05/2006 [^] [^^] [^^^] [ответить]  
  • +/
    да я бы с радостью, вот только NeTAMS, на сколько я знаю, с ними не работает.
     
     
  • 3.16, nobody (??), 17:00, 03/05/2006 [^] [^^] [^^^] [ответить]  
  • +/
    хм, но можно заставить (по крайней мере для pf) :)
    в сервисе processor у netams добавляем (например)
    access-script "/root/bin/access.sh"

    access.sh:
    #!/bin/sh

    case "$1" in
        DENY)
            pfctl -q -t netams -T delete $3
            pfctl -q -k $3
        ;;
        ALLOW)
            pfctl -q -t netams -T add $3
        ;;
    esac

    в pf.conf
    table <netams> persist file "/usr/local/etc/netams.hosts"
    ....
    nat on $ext_if inet proto tcp from <netams> to ...
    ...
    pass in on $int_if inet proto tcp from <netams> ...

    данные в нетамс брать, например, с ng_netflow

     
     
  • 4.17, Bocha (??), 18:57, 03/05/2006 [^] [^^] [^^^] [ответить]  
  • +/
    Ну то есть всё таки с нетфлоу, а не с ПиЭф.
    Спасибо за полезное дополнение.
     

  • 1.18, mg (??), 10:55, 26/07/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    а пробовал кто-нибудь настройить входящий в состав netams admintool?
    Лично у меня с этим возникли сложности, например по не понятным для меня причинам он не инсталируется сам, нужно его копировать в ручную, затем почему-то нигде не написано что необходимо создать дополнительную таблицу users и два объязательных поля в ней login и password . Но даже после создания этой таблицы не понятно в каком формате должен там находиться пароль и как кроме как в ручную, эту таблицу заполнять? Может кто-нибудь что-нибудь расскажет об этом? Буду примного благодарен.
     
  • 1.19, Wraith (??), 22:00, 26/09/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Спасибо огромное за статью!
    А как быть если используется связка ipfw+ipnat?
     
  • 1.20, LSV (??), 15:38, 21/10/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А возможно ли на NetAms сделать подобное:
    Есть 2 машины, одна из которых фаервол,НАТ,Прокся,ВПН на ней нужно будет заупскать коллектор(и отсылать информацию на хост с ядром), а другая под ядро биллинга, там же будет лежать база, радиус итд, итп.
    Возможно ли это реализовать с версией 3.3.5?

    Как будут создаваться правила фаервола при коннекте клиента или при оканчании денег на его счету?

    Есть ли поддержка ldap?
    ___
    Спасибо.

     
  • 1.21, LSV (??), 20:12, 22/10/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    ->А как быть если используется связка ipfw+ipnat?
    сам копаю в эту сторону, нужно использовать нетграф! ИМХО использовать подсчёт по divert- непарвильно, а как тогда arp считать?
    http://netams.com/doc/kb_netgraph.html#1
     
  • 1.22, nicola (??), 08:53, 08/11/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Цитата:
    Обратите внимание  NeTAMS окутывает диверт в natd своими правилами, но слушает внутренний интерфейс, а не внешний.
    не верно в официальной доке написано что должно быть наоборот. Так как здесь написано работать не будет.
     
     
  • 2.25, Bocha (??), 08:53, 10/12/2006 [^] [^^] [^^^] [ответить]  
  • +/
    Мало того что оно работает на очень многих серверах в данный момент, так еще и ваш вариант просто нелогичен. Вы даже в ssh не попадете из вне в таком случае. Нетамс пропускает пакеты только от машин, прописаных для учета трафика, вы же не будете прописывать в него весь интернет? Должно быть именно на внутреннем интерфейсе.
     

  • 1.23, intelligentik (ok), 16:26, 06/12/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Очень хорошая статья, все понятно...
    не понятно как должно выглядить правило диверт.
    ведь диверт порт перебрасывает, а мне нужно снимать весь трафик.
    поясните новечку плизз :-)
     
     
  • 2.24, Bocha (??), 08:51, 10/12/2006 [^] [^^] [^^^] [ответить]  
  • +/
    Диверт заворачивает то, что скажете, в моем примере, весь трафик идущий по внутреннему интерфейсу считается нетамсом.
     

  • 1.26, intelligentik (ok), 16:08, 10/12/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    я у себя правило диверт вот такое сделал... Но что то ничего не работает :-(

    ipfw add 10000 divert natd all from any to any xl1

    Что самое интерестное, роутинг работает, траффик идет, но при попытке обращения к
    http://192.168.2.101/stat страница не открывается.
    плизз помогите :-)

     
     
  • 2.27, FlashMX (??), 09:57, 12/12/2006 [^] [^^] [^^^] [ответить]  
  • +/
    >я у себя правило диверт вот такое сделал... Но что то ничего
    >не работает :-(
    >
    >ipfw add 10000 divert natd all from any to any xl1
    >
    >Что самое интерестное, роутинг работает, траффик идет, но при попытке обращения к
    >
    >http://192.168.2.101/stat страница не открывается.
    >плизз помогите :-)


    Создай юнит с внешним ip

     

  • 1.28, AlektroNik (??), 13:53, 01/06/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Подскажите плз, как правильно прописать в файлике (допустим) target file /usr/netams/port_ip.txt
    порты которые должны входить в это правило?

    Поидее будет вяглядеть примерно так:
    172.22.0.0 /16
    172.31.255.5 /255.255.255.255
    *:3128
    172.22.0.0:3128 /16


     
     
  • 2.29, сажа (?), 10:20, 06/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Почему тут удаляют посты без мата и тролинга и рекламы?
    netams не разрабатывается дальше, комунити вялое (поглядите на форум), автор уже лет 5 как забил на проект. Проект негибкий и подходит только для небольшого офиса в 20-50 компов. Будущего заведомо нет.
     

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




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

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