LINUX.ORG.RU

SUB Billing - открытая биллинговая система


0

0

Стартовал проект открытой биллинговой системы SUB Billing, основанной на демоне ulog-acctd.

Краткий список функций:
- Подсчет входящего и исходящего трафика
- Отображение активных соединений
- Блокирование пользователя при отрицательном балансе
- Возможность установки статической/динамической скорости для каждого тарифа
- Детальная почасовая,дневная и месячная статистика

Cкачать: http://subbilling.fatal.ru/downloads/...

>>> Подробности



Проверено: Shaman007 ()

Сложно назвать биллинговой системой продукт, который не выставляет этих самых биллов. Это скорее система тарификации и учёта интернет-траффика.

Вопрос следующий - какая максимальная нагрузка в клиентах была? Как собираете данные в систему? Может лучше написать скажем надтарификатор, который будет на шлюзах выставлять правила блокировки?

Успехов в начинании!

anonymousI
()

Может стоит избавится от pptp?

catap ★★★★★
()

неделю назад приходилось писать аналогичную систему.
уложился в 20 строк баш скрипта (коротких строк).

A2K
()
Ответ на: комментарий от dmesg

даже меньше :) использую netacctd-mysql в одну мускул базу netacctd пишет свои логи, в другой хранится информация по юзерам. задача системы ограничивать юзеров по трафику в месяц. на кроне стоит скрипт обнуляющий по 1 числам статистику по юзерам

скрипт, запускающийся по крону каждую 1 минуту:

mysql -uroot -pпароль -D traffic -e 'select ip from traff where traff<max+extra' -Bs | while read ip do traff1=`mysql -uroot -pпароль -D netacct -e "select sum(input) from traffic where ip='$ip'" -Bs` traff2=`mysql -uroot -pпароль -D netacct -e "select sum(output) from traffic where ip='$ip'" -Bs` traff=$(($traff1+$traff2)); mysql -uroot -pпароль -D traffic -e "update traff set traff=traff+$traff where ip='$ip'" done mysql -uroot -pпароль -D netacct -e "delete from traffic" iptables -t nat --flush mysql -uroot -pпароль -D traffic -e 'select ip from traff where traff<max+extra' -Bs | while read ip; do iptables -t nat -A POSTROUTING -s $ip -o eth0 -j MASQUERADE done mysql -uroot -pпароль -D traffic -e 'select ip from traff where traff>max+extra union select ip from traff where traff=max+extra' -Bs | while read ip; do iptables -t nat -A PREROUTING -s $ip -p tcp --dport 80 -j DNAT --to-destination 192.168.0.1:800 done;

часть скрипта вырезал чтобы было понятнее.

A2K
()
Ответ на: комментарий от A2K

эх, форматирование...

mysql -uroot -pпароль -D traffic -e 'select ip from traff where traff<max+extra' -Bs | while read ip
do
traff1=`mysql -uroot -pпароль -D netacct -e "select sum(input) from traffic where ip='$ip'" -Bs`
traff2=`mysql -uroot -pпароль -D netacct -e "select sum(output) from traffic where ip='$ip'" -Bs`
traff=$(($traff1+$traff2));
echo 'Adding '$traff' bytes for '$ip >> /var/log/traff.log
mysql -uroot -pпароль -D traffic -e "update traff set traff=traff+$traff where ip='$ip'"
done
mysql -uroot -pпароль -D netacct -e "delete from traffic"
iptables -t nat --flush
mysql -uroot -pпароль -D traffic -e 'select ip from traff where traff<max+extra' -Bs | while read ip;
do
iptables -t nat -A POSTROUTING -s $ip -o eth0 -j MASQUERADE
done
mysql -uroot -pпароль -D traffic -e 'select ip from traff where traff>max+extra union select ip from traff where traff=max+extra' -Bs | while read ip;
do
iptables -t nat -A PREROUTING -s $ip -p tcp --dport 80 -j DNAT --to-destination 192.168.0.1:800
done;

A2K
()

а кстати, сабжевая система, это просто обертка для ulog-acctd или полноценная система на его основе?

isden ★★★★★
()

>Вопрос следующий - какая максимальная нагрузка в клиентах была? Как собираете данные в систему? Может лучше написать скажем надтарификатор, который будет на шлюзах выставлять правила блокировки?

максимальная нагрузка была 6-7 клиентов (протестить на большей нет возможности), но парсер довольно шустрый, думаю справится со 100 и более.

>Может стоит избавится от pptp?

Зачем? Придется отказаться от многих функций, если нужно могу сделать версию для НАТа, но это будет только статистика.

>неделю назад приходилось писать аналогичную систему. уложился в 20 строк баш скрипта (коротких строк).

что-то я не заметил в ваших 20 строках ни веб-морды, ни шейпера.

>даже меньше :) использую netacctd-mysql в одну мускул базу netacctd пишет свои логи, в другой хранится информация по юзерам....

Угу, пробовал. на !! 4х !! клиентах за сутки в базу ушло ~70000 записей, представляете сколько будет весить БД через месяц? Наверное, нет..

PycmaM
() автор топика
Ответ на: комментарий от PycmaM

>Может лучше написать скажем надтарификатор, который будет на шлюзах выставлять правила блокировки?

Не совсем понял, можно по-подробней?

PycmaM
() автор топика
Ответ на: комментарий от PycmaM

>что-то я не заметил в ваших 20 строках ни веб-морды, ни шейпера.
веб-морда:
<?
mysql_connect('127.0.0.1','root','пароль');
mysql_select_db('traffic');
$list=mysql_query("select * from traff");
echo '<table border=1 width=600>';
echo '<tr><td>Пользователь</td><td>Траффик</td><td&g
t;Лимит</td><td>Статус</td></tr>';
while ($traff=mysql_fetch_array($list))
{
echo '<tr><td>'.$traff[comment].'</td><td>'.round($traff['tra
ff']/1024/1024).'mb </td><td>'.round(($traff['max']+$traff['extra'])/1024/1024).'</td
><td>';
if ($traff['traff']>($traff['max']+$traff['extra']))
    {
    echo '<font color=red>Отключен</font>';
    }
else
    {
    echo '<font color=green>Включен</font>';
    }
echo '</td></tr>';
}
echo '</table>';
$total=mysql_query("select sum(traff) from traff");
echo 'Всего:'.round(mysql_result($total,0,0)/1024/1024);
?>

А ограничение скорости по средствам iptables добавляется дописыванием одного параметра в скрипт.


И никаких напрягов с pptp...

A2K
()
Ответ на: комментарий от A2K

> А ограничение скорости по средствам iptables добавляется дописыванием одного параметра в скрипт.

опа.. А посредством iptables - это как ? -j DROP,да ? )

romka
()

Я писал биллинг по одному заказу. Писал долго. Работает и сейчас на >3к клиентов с несколькими терабайтами посчитанного, тарифицированного трафика в месяц. Поэтому ответственно заявляю: использовать для подсчета трафика ни ULOG ни тем более netacct, который основан на libpcap нельзя, т.к. они при нагрузках начинают просто терять трафик, и соотв. потерянный трафик не считается

anonymous
()

А она имеет сертифткат ССС? Если нет, то это пионерское поделие не для серьезных контор.

Lee_Noox ★★★
()
Ответ на: комментарий от anonymous

> гуглянуть перед тем как обсирать не пробовали? Вот, например: http://www.opennet.ru/openforum/vsluhforumID10/2128.html

Это годится разве что для домашней тачки. Можно еще роутер сделать на тостере, который под netbsd работает.

> Поэтому ответственно заявляю: использовать для подсчета трафика ни ULOG ни тем более netacct, который основан на libpcap нельзя, т.к. они при нагрузках начинают просто терять трафик, и соотв. потерянный трафик не считается

А что тогда ? afair большая половина систем учета трафика работает либо c ulog, либо с libpcap.

romka
()
Ответ на: комментарий от romka

> Это годится разве что для домашней тачки. Можно еще роутер сделать на тостере, который под netbsd работает.

а есть еще tc

A2K
()
Ответ на: комментарий от Lee_Noox

>А она имеет сертифткат ССС? Если нет, то это пионерское поделие не для серьезных контор.

А никто и не заявлял, что это "поделие" для серъезные контор. Серъезные конторы могут позволить себе сертифицированный _платный_ биллинг.

Сие поделие предназначено для раздачи трафика в небольшой сети (домашняя сетка, например), и не расчитанно на огромную нагрузку.

PycmaM
() автор топика
Ответ на: комментарий от romka

Использовать надо IP QUEUE тогда траф при любых нагрузках посчитается байт в байт - проверено на собственной шкуре :) IPCAD умеет вроде

anonymous
()
Ответ на: комментарий от A2K

>а есть еще tc

Если Вы приглядитесь к скриптам, то увидете, что tc и используется.

PycmaM
() автор топика
Ответ на: комментарий от anonymous

> использовать для подсчета трафика ни ULOG ни тем более netacct, который основан на libpcap нельзя, т.к. они при нагрузках начинают просто терять трафик

Поделись, тогда, сокровенной тайной - на чем писал своий биллинга для >3k пользователей, не теряющий трафик при нагрузке?

xbow
()
Ответ на: комментарий от anonymous

спасибо тебе, добрый анонимус, будем посмотреть ) У нас уже используется ipcad, но в связке с libpcap. Нагрузки небольшие, поэтому "в Багдаде все спокойно"

romka
()
Ответ на: комментарий от xbow

> Поделись, тогда, сокровенной тайной - на чем писал своий биллинга для >3k пользователей, не теряющий трафик при нагрузке?

Тот биллинг, что я писал на бывшей работе (платный и довольно дорогой, mind) траффик умел собирать с кошек по SNMP или NetFlow. Ну или по RADIUS.

3k VPN-клиентов с нормальной скоростью PC-маршрутизатор, пожалуй, ниасилит.

anonymous
()
Ответ на: комментарий от xbow

>Поделись, тогда, сокровенной тайной - на чем писал своий биллинга для >3k пользователей, не теряющий трафик при нагрузке?

на перле, а модуль подсчета - на С с использованием IP QUEUE

anonymous
()
Ответ на: комментарий от anonymous

> VPN-клиентов с нормальной скоростью PC-маршрутизатор, пожалуй, ниасилит.

Ну все - сейчас понабегут меряться цисками, жуниперами, чекпоитами и айпитэйблсами...

no-dashi ★★★★★
()
Ответ на: комментарий от anonymous

>3k VPN-клиентов с нормальной скоростью PC-маршрутизатор, пожалуй, ниасилит.

Это средний кошак за 5-7 килобаксов загнется на 3000 pptp, а писюк под линухом молотит только в путь.

anonymous
()
Ответ на: комментарий от A2K

>> опа.. А посредством iptables - это как ? -j DROP,да ? ) гуглянуть перед тем как обсирать не пробовали? Вот, например: http://www.opennet.ru/openforum/vsluhforumID10/2128.html

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

Мне больше понравилось то, что описано в "Linux Advanced Routing & Traffic Control HOWTO" -- iptables только помечает пакеты (-j MARK --set-mark n), а скорость задавать при помощи tc

vadiml ★★★★★
()
Ответ на: комментарий от vadiml

AFAIK, если резать иптэйблами по ко-ву пакетов, то те пакеты, которые вышли за лимит -- будут теряться. Не есть хорошо.

PycmaM
() автор топика

Очень забавный поиск попадания ip адреса в сеть :) Проверь его на таких значениях - сеть 172.16.0.0/12, адреса - 172.11.0.1, 172.17.0.1

Нельзя удалять файл статистики, полностью не закончив его успешную обработку !!

Дальше не смотрел - ибо "поделка"

anonymous
()

А кто с билингом Fastcom работает, в частности 3-я версия. Интересно мнение...

OpenStorm ★★★
()

а посоветуйте пожалуйста какую-нибудь считалку, которая выдаёт статистику не только по траффику но у по адресам (куда аббонент ходил).

perevintin
()
Ответ на: комментарий от perevintin

>которая выдаёт статистику не только по траффику но у по адресам (куда аббонент ходил).

man squid

anonymous
()

Биллинг в законе.

А коммерческий провайдер имеет право пользоваться этой учётной системой? Налоговая приставать не будет? Какую-нибудь платную сертификацию проводить надо?

Camel ★★★★★
()
Ответ на: Биллинг в законе. от Camel

>А коммерческий провайдер имеет право пользоваться этой учётной системой? Налоговая приставать не будет? Какую-нибудь платную сертификацию проводить надо?

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

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

anonymous
()
Ответ на: комментарий от anonymous

Netup конечно сделан через анал. Его логику нормальному человеку понять тяжело. Написан явно программерами-шизоидами.
Но ничего более функционального за 1500 буказоидов не видел.

anonymous
()
Ответ на: Биллинг в законе. от Camel

у меня в сети какойто lanbilling стоит, кривой, косой, но сертифицированный (~500 абонентов в сети)

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

TERRANZ ★★★★
()
Ответ на: комментарий от anonymous

Именно поэтому сплошь и рядом используют самописные биллинги. Провайдеров интернета в последние пару лет развелось как грибов после дождя, нетапу наверно и так хорошо, конкуренции то практически нет.

anonymous
()
Ответ на: комментарий от romka

> А что тогда ? afair большая половина систем учета трафика работает

> либо c ulog, либо с libpcap.

Только ловить netflow. По-другому никак. Иначе это несерьезно.

dmesg
()
Ответ на: комментарий от anonymous

> 3k VPN-клиентов с нормальной скоростью PC-маршрутизатор, пожалуй, ниасилит.

Осилит.

SKYRiDER ★★★
()
Ответ на: комментарий от dmesg

> а готовых скриптов, чтоб эту статистику в вэб-страничку запихнуть, случайно нет? :)

man sarg

anonymous
()
Ответ на: комментарий от perevintin

> а готовых скриптов, чтоб эту статистику в вэб-страничку запихнуть, случайно нет? :)

use lightsquid

nebm51
()
Ответ на: комментарий от perevintin

>а посоветуйте пожалуйста какую-нибудь считалку, которая выдаёт статистику не только по траффику но у по адресам (куда аббонент ходил).

netams

anonymous
()
Ответ на: комментарий от A2K

>>> неделю назад приходилось писать аналогичную систему. уложился в 20 строк баш скрипта (коротких строк).

нихрена себе, ты мастер какой на все руки. слушай, а мускуль переписать на баше сможешь? я так полагаю, это займет строк 30...

anonymous
()
Ответ на: комментарий от anonymous

> Психологи утверждают, что все программеры - шизоиды

Психиатры утверждают, что все психологи - шарлатаны

anonymous
()
Ответ на: комментарий от anonymous

!!!ABILLS!!!
http://abills.asmodeus.com.ua/wiki/doku.php

Тарификация по времени
Тарификация по трафику
Периодические отчисления (месячная и дневная абонплата)
Возможность раздельной и совместной тарификации по времени и трафику
Ограничение доступа в интернет по времени суток
Callback
Система скидок
Установка минимальной цены сесии
Работа с неограниченным количеством NAS серверов
Авторизация по SQL базе даных или по системной UNIX базе паролей
Авторизация по PAP, CHAP, MS-CHAP, MS-CHAPv2+MPPE (CHAP, MS-CHAP, MS-CHAPv2 при сохраниени паролей в SQL базе)
Шифрование траффика MPPE
IEEE 802.1x
Авторизация PPPoE по MAC адресу
Авторизация PPTP по IP адресу (для MPD по IP и MAC одновременно)
Изменение тарифного плана или снятие денег со счета по расписаню
Класова тарификация трафика (внутрений, внешний, бесплатный) (Только для VPN, Ipnet)
Ограничение скорости в зависимости от вида трафика и времени суток (Только для VPN)
Создание месячных предоплаченых по трафику пакетов
Дневные, недельные и месячные лимиты по трафику и времени
Отчёты по работе системы и с остоянию счетов за любой период времени
Генерация и отправка администратору добовых и месячных отчётов по работе системы
WEB интерфейс управления системой с возможностью настроики прав доступа
Лог действий администратора, менеджера
Ограничение сесий по количеству общего (in+out) трафика (для exppp, mpd, pppd + RADIUS plugin (Linux))
Несъёмный минимум для подключений к NAS серверам (Tarif Plans &#8594; Credit Tresshold)
Выписка счётов из пользовательского интерфейса
Обратная связь
Система предоплаченых карт.
VoIP - GNU Gatekeeper, Asterisk
Система поплнения через платёжные системы Webmoney.ru и RUpay.ru
Squid монитор
SNMP монитор и набор утилит для работы с NAS серверами.
Система рассылки сообщений для пользователей.

Выходит под GPL-2 недавно выпустили версию 0.34 но лучше брать текущюю с CVS.
Есть русский форум http://abills.asmodeus.com.ua/forum/
документация http://abills.asmodeus.com.ua/wiki/doku.php?id=abills:docs_03:install:ru
и локализация.
Недостатком, можно назвать - сложность, но большое сообщество компенсирует это.



hse
()
Ответ на: комментарий от perevintin

mysar - парсит логи squid-а, кидает в базу mysql, есть простенькая веб-морда.

green_forest
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.