Биллинговая система Nodeny
29 Марта 2024, 00:56:44 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Прекращена поддержка версии Nodeny 49
 
   Начало   Помощь Поиск Войти Регистрация  
Страниц: [1] 2 3
  Печать  
Автор Тема: Сбор трафика через Radius  (Прочитано 14151 раз)
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4794



Просмотр профиля
« : 19 Апреля 2014, 19:09:09 »

Если вы используете pppoe, то у вас стоит Radius, который периодически принимает от mpd accounting пакеты, в которых передается трафик. Вот эти пакеты в настоящее время используются только как признак "клиент жив". Хотя можно их использовать для начисления трафика в учетку клиента. Плюс в том, что практически никаких накладных расходов. Т.е мы удаляем ipcad (ну, и, соответственно, правила divert в фаерволе) и получаем увеличение производительности сервера. Минус в том, что лога трафика (графиков) не будет.

Фича оттестирована elite, поэтому если всплывут какие-то нюансы - задавайте вопросы ему.

В /usr/local/etc/raddb/sql.conf

Код:
postauth_query = "call radupdate('%{User-Name}','%{Framed-IP-Address}',\
'user=%{Calling-Station-Id};nas=%{NAS-IP-Address}',%{Acct-Session-Id},0)"
меняем на
Код:
accounting_update_query = "call radupdate('%{User-Name}','%{Framed-IP-Address}',\
'user=%{Calling-Station-Id};nas=%{NAS-IP-Address}','%{Acct-Session-Id}',\
(%{%{Acct-Input-Gigawords}:-0} * POWER(2, 32)) + %{%{Acct-Input-Octets}:-0})"}

Код:
CREATE TABLE IF NOT EXISTS `ses_traf` (
  `id` bigint(21) NOT NULL auto_increment,
  `ses_id` varchar(32) NOT NULL default '',
  `time` int(10) unsigned NOT NULL DEFAULT '0',
  `traf_in` bigint(12) unsigned NOT NULL DEFAULT '0',
  `traf_out` bigint(12) unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  UNIQUE KEY `ses_id` (`ses_id`),
  KEY `time` (`time`)
) ENGINE=MyISAM AUTO_INCREMENT=1;


DROP PROCEDURE IF EXISTS `radupdate`;
DELIMITER $$
CREATE PROCEDURE `radupdate`(IN login VARCHAR(64), IN ip VARCHAR(16),
    IN properties VARCHAR(255), IN ses VARCHAR(32), IN trafin BIGINT(20))
BEGIN
  DECLARE usr_id INT;
  DECLARE usr_ip VARCHAR(15) DEFAULT NULL;
  SELECT id INTO usr_id FROM users WHERE name=login LIMIT 1;
  SELECT get_ip(usr_id) INTO usr_ip;
  CALL set_auth(usr_ip, CONCAT('mod=pppoe;',REPLACE(properties,':','')));
  UPDATE users_trf SET in1=in1 + trafin - IFNULL(
    (SELECT traf_in FROM ses_traf WHERE ses_id=ses LIMIT 1),0)
    WHERE uid=usr_id;
  INSERT INTO ses_traf SET ses_id=ses, traf_in=trafin, time=UNIX_TIMESTAMP()
    ON DUPLICATE KEY UPDATE traf_in=trafin, time=UNIX_TIMESTAMP();
END$$
DELIMITER ;
Записан
goletsa
NoDeny
Спец
*

Карма: 21
Offline Offline

Сообщений: 978


Просмотр профиля
« Ответ #1 : 21 Апреля 2014, 13:20:57 »

Круто. Для 50 ветки можно использовать? Улыбающийся
Записан
elite
Начальник планеты
NoDeny
Спец
*

Карма: 52
Offline Offline

Сообщений: 1231

In LAN we trust!

358714596
Просмотр профиля
« Ответ #2 : 21 Апреля 2014, 15:42:38 »

можно Улыбающийся
Записан
goletsa
NoDeny
Спец
*

Карма: 21
Offline Offline

Сообщений: 978


Просмотр профиля
« Ответ #3 : 19 Мая 2014, 04:13:38 »

А для какой версии freeradius писалось?  У меня просто 2 ветка под linux.
Сам конфиг сведен к минимуму:
Код:
root@mxradius:/etc/freeradius/sql/mysql# cat tinco.conf
# -*- text -*-
##
## dialup.conf -- MySQL configuration for default schema (schema.sql)
##
##      $Id$

sql_user_name = "%{User-Name}"

authorize_check_query = "call radcheck('%{SQL-User-Name}')"
authorize_reply_query = "call mxvrfreply('%{SQL-User-Name}')"
accounting_update_query = "call radupdate('%{SQL-User-Name}')"
accounting_stop_query = "call radstop('%{SQL-User-Name}')"

Т.е. у меня нету postauth_query
Я могу просто заменить свой accounting_update_query ?
Записан
Sidius
Постоялец
***

Карма: 0
Offline Offline

Сообщений: 130


Просмотр профиля
« Ответ #4 : 05 Августа 2014, 22:52:01 »

Учитывается трафик только в одну сторону?
Записан
goletsa
NoDeny
Спец
*

Карма: 21
Offline Offline

Сообщений: 978


Просмотр профиля
« Ответ #5 : 31 Июля 2015, 11:44:46 »

можно Улыбающийся
Не, не хватает каких-то процедур.
Но пока глубоко не ковырялся.
Надо будет посмотреть что они в N+ возвращают.
Записан
Warlock
NoDeny
Старожил
*

Карма: 8
Offline Offline

Сообщений: 377


Просмотр профиля
« Ответ #6 : 03 Августа 2015, 08:42:14 »

а в этом случае лог трафика никак нельзя сделать?
Записан
goletsa
NoDeny
Спец
*

Карма: 21
Offline Offline

Сообщений: 978


Просмотр профиля
« Ответ #7 : 03 Августа 2015, 17:31:24 »

а в этом случае лог трафика никак нельзя сделать?
Теоретически можно, но все будет упираться в частоту акаунтинга, а на некоторых железных BRAS время между Interim-Update может быть 15-30 минут.
Записан
elite
Начальник планеты
NoDeny
Спец
*

Карма: 52
Offline Offline

Сообщений: 1231

In LAN we trust!

358714596
Просмотр профиля
« Ответ #8 : 16 Мая 2017, 09:04:39 »

А чтобы сделать лог трафика, нужно заполнять x-таблицы?
Записан
Cell
NoDeny
Спец
*

Карма: 52
Offline Offline

Сообщений: 1444



Просмотр профиля
« Ответ #9 : 16 Мая 2017, 10:25:50 »

жалко что на микротике аккаунтинг не покатит, если без коммутации юзать (((
Записан
elite
Начальник планеты
NoDeny
Спец
*

Карма: 52
Offline Offline

Сообщений: 1231

In LAN we trust!

358714596
Просмотр профиля
« Ответ #10 : 16 Мая 2017, 11:37:32 »

а почему нет? разве хотспот не отдает аккаунтинг?
Записан
Cell
NoDeny
Спец
*

Карма: 52
Offline Offline

Сообщений: 1444



Просмотр профиля
« Ответ #11 : 16 Мая 2017, 14:53:19 »

а почему нет? разве хотспот не отдает аккаунтинг?
хотспот отдает, с этим у него все хорошо, только на мой взгляд без него как-то лучше работается на одном ДХЦП и аксесс листе
Записан
elite
Начальник планеты
NoDeny
Спец
*

Карма: 52
Offline Offline

Сообщений: 1231

In LAN we trust!

358714596
Просмотр профиля
« Ответ #12 : 16 Мая 2017, 21:41:18 »

меньше нагрузка на микротик?
Записан
Cell
NoDeny
Спец
*

Карма: 52
Offline Offline

Сообщений: 1444



Просмотр профиля
« Ответ #13 : 16 Мая 2017, 23:03:56 »

правил в файрволе на порядок меньше - соответственно да.
Записан
elite
Начальник планеты
NoDeny
Спец
*

Карма: 52
Offline Offline

Сообщений: 1231

In LAN we trust!

358714596
Просмотр профиля
« Ответ #14 : 17 Мая 2017, 14:10:27 »

Ладно, вопрос в другом: что нужно, чтобы сделать норм лог трафика и графики работали?
Заполнять х-таблицу? Или что-то ещё надо?
Записан
Страниц: [1] 2 3
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.20 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!