Биллинговая система Nodeny

Главная категория => Nodeny 49 => Тема начата: zorric от 09 Апреля 2010, 17:31:01



Название: И снова RADIUS (решено)
Отправлено: zorric от 09 Апреля 2010, 17:31:01
Как всегда помогите начинающему  ;)

Планируется связка NoDeny+Mikrotik. Установил все по инструкции.
При подключении тестового клиента выдается ошибка Сервер не назначил адрес.
В логах вот:
 
Fri Apr  9 19:10:23 2010
        Service-Type = Framed-User
        Framed-Protocol = PPP
        NAS-Port = 32
        NAS-Port-Type = Virtual
        User-Name = "zorric"
        Calling-Station-Id = "192.168.5.253"
        Called-Station-Id = "192.168.5.1"
        Acct-Session-Id = "81900016"
        Framed-IP-Address = 0.0.0.0
        Acct-Authentic = RADIUS
        Event-Timestamp = "Jan  2 1970 04:33:52 MSK"
        Acct-Session-Time = 1
        Acct-Input-Octets = 100
        Acct-Input-Gigawords = 0
        Acct-Input-Packets = 7
        Acct-Output-Octets = 102
        Acct-Output-Gigawords = 0
        Acct-Output-Packets = 9
        Acct-Status-Type = Stop
        Acct-Terminate-Cause = User-Request
        NAS-Identifier = "nodeny"
        NAS-IP-Address = 192.168.11.201
        Acct-Delay-Time = 1
        Client-IP-Address = 192.168.11.201
        Acct-Unique-Session-Id = "93a37872aab1b458"
        Timestamp = 1270829423




Название: Re: И снова RADIUS
Отправлено: Efendy от 09 Апреля 2010, 23:56:55
Цитировать
Framed-IP-Address = 0.0.0.0


Название: Re: И снова RADIUS
Отправлено: zorric от 10 Апреля 2010, 15:01:08
Это я и сам вижу  ;D

mysql> call radreply("zorric");
+------+--------+-------------------+------------+---+
| NULL | login  | Framed-IP-Address | usr_ip     | = |
+------+--------+-------------------+------------+---+
| NULL | zorric | Framed-IP-Address | 172.16.1.1 | = |
+------+--------+-------------------+------------+---+
1 row in set (0.00 sec)

+------+--------+-------------------+-----------------+---+
| NULL | login  | Framed-IP-Netmask | 255.255.255.255 | = |
+------+--------+-------------------+-----------------+---+
| NULL | zorric | Framed-IP-Netmask | 255.255.255.255 | = |
+------+--------+-------------------+-----------------+---+
1 row in set (0.00 sec)

+------+--------+-----------------------+----+---+
| NULL | login  | Acct-Interim-Interval | 50 | = |
+------+--------+-----------------------+----+---+
| NULL | zorric | Acct-Interim-Interval | 50 | = |
+------+--------+-----------------------+----+---+
1 row in set (0.00 sec)

Query OK, 0 rows affected (0.00 sec)


Название: Re: И снова RADIUS
Отправлено: Efendy от 10 Апреля 2010, 17:44:11
А в файле /usr/local/etc/raddb/users


Название: Re: И снова RADIUS
Отправлено: zorric от 11 Апреля 2010, 16:36:38
А в файле /usr/local/etc/raddb/users
Да. Дело было в файле /usr/local/etc/raddb/users . Добрые люди поделились этим файлом и все заработало. Хотя вроде все делал согласно
Цитировать
Комментируем строки:
DEFAULT Auth-Type = System
Framed-IP-Address = 255.255.255.254,
Framed-MTU = 576,
Framed-Compression = Van-Jacobson-TCP-IP
Всем спасибо :)


Название: Re: И снова RADIUS (решено)
Отправлено: blackjack от 16 Июня 2010, 17:58:01
Всем привет
Есть процедура
Код:
CREATE DEFINER=`root`@`localhost` PROCEDURE `radreply2`(IN login VARCHAR(64))
BEGIN
  DECLARE usr_id INT; 
  DECLARE usr_ip VARCHAR(15);
  DECLARE speed_input,speed_output,usr_paket INT; 
  SELECT id,ip,paket INTO usr_id,usr_ip,usr_paket FROM users WHERE name=login;
  SELECT speed,speed_out INTO speed_input,speed_output FROM plans2 WHERE id=usr_paket;
  INSERT into dblogin (mid,act,time) VALUES (usr_id,47,unix_timestamp());

  SELECT NULL,login,'Framed-IP-Address',usr_ip,'=';
  SELECT NULL,login,'Framed-IP-Netmask','255.255.255.255','=';
  SELECT NULL,login,'Framed-Protocol','PPP','=';

  SELECT NULL,login,'Cisco-Avpair',CONCAT('lcp:interface-config=rate-limit output ',speed_output,'000 ',FLOOR(speed_output*0.1875),'000 ',FLOOR(speed_output*0.375),'000 conform-action transmit exceed-action drop')AS Value,'=';
  SELECT NULL,login,'Cisco-Avpair',CONCAT('lcp:interface-config=rate-limit input ',speed_input,'000 ',FLOOR(speed_input*0.1875),'000 ',FLOOR(speed_input*0.375),'000 conform-action transmit exceed-action drop') AS Value,'=';
 
END


возвращает следующее
Код:
mysql> call radreply2('cisco7200');
+------+-----------+-------------------+----------------+---+
| NULL | login     | Framed-IP-Address | usr_ip         | = |
+------+-----------+-------------------+----------------+---+
| NULL | cisco7200 | Framed-IP-Address | 91.214.160.254 | = |
+------+-----------+-------------------+----------------+---+
1 row in set (0.00 sec)

+------+-----------+-------------------+-----------------+---+
| NULL | login     | Framed-IP-Netmask | 255.255.255.255 | = |
+------+-----------+-------------------+-----------------+---+
| NULL | cisco7200 | Framed-IP-Netmask | 255.255.255.255 | = |
+------+-----------+-------------------+-----------------+---+
1 row in set (0.00 sec)

+------+-----------+-----------------+-----+---+
| NULL | login     | Framed-Protocol | PPP | = |
+------+-----------+-----------------+-----+---+
| NULL | cisco7200 | Framed-Protocol | PPP | = |
+------+-----------+-----------------+-----+---+
1 row in set (0.00 sec)

+------+-----------+--------------+-------------------------------------------------------------------------------------------------------+---+
| NULL | login     | Cisco-Avpair | Value                                                                                                 | = |
+------+-----------+--------------+-------------------------------------------------------------------------------------------------------+---+
| NULL | cisco7200 | Cisco-Avpair | lcp:interface-config=rate-limit output 512000 96000 192000 conform-action transmit exceed-action drop | = |
+------+-----------+--------------+-------------------------------------------------------------------------------------------------------+---+
1 row in set (0.00 sec)

+------+-----------+--------------+------------------------------------------------------------------------------------------------------+---+
| NULL | login     | Cisco-Avpair | Value                                                                                                | = |
+------+-----------+--------------+------------------------------------------------------------------------------------------------------+---+
| NULL | cisco7200 | Cisco-Avpair | lcp:interface-config=rate-limit input 512000 96000 192000 conform-action transmit exceed-action drop | = |
+------+-----------+--------------+------------------------------------------------------------------------------------------------------+---+
1 row in set (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

как бы это объединить воедино
Код:
+------+-----------+--------------+-------------------------------------------------------------------------------------------------------+---+
| NULL | login     | Cisco-Avpair | Value                                                                                                 | = |
+------+-----------+--------------+-------------------------------------------------------------------------------------------------------+---+
| NULL | cisco7200 | Cisco-Avpair | lcp:interface-config=rate-limit output 512000 96000 192000 conform-action transmit exceed-action drop | = |
+------+-----------+--------------+-------------------------------------------------------------------------------------------------------+---+
1 row in set (0.00 sec)

+------+-----------+--------------+------------------------------------------------------------------------------------------------------+---+
| NULL | login     | Cisco-Avpair | Value                                                                                                | = |
+------+-----------+--------------+------------------------------------------------------------------------------------------------------+---+
| NULL | cisco7200 | Cisco-Avpair | lcp:interface-config=rate-limit input 512000 96000 192000 conform-action transmit exceed-action drop | = |
+------+-----------+--------------+------------------------------------------------------------------------------------------------------+---+
1 row in set (0.00 sec)
чтобы было вот так
Код:
+------+-----------+--------------+-------------------------------------------------------------------------------------------------------+---+
| NULL | login     | Cisco-Avpair | Value                                                                                                 | = |
+------+-----------+--------------+-------------------------------------------------------------------------------------------------------+---+
| NULL | cisco7200 | Cisco-Avpair | lcp:interface-config=rate-limit output 512000 96000 192000 conform-action transmit exceed-action drop | = |
+------+-----------+--------------+------------------------------------------------------------------------------------------------------+---+
| NULL | cisco7200 | Cisco-Avpair | lcp:interface-config=rate-limit input 512000 96000 192000 conform-action transmit exceed-action drop | = |
+------+-----------+--------------+------------------------------------------------------------------------------------------------------+---+



Название: Re: И снова RADIUS (решено)
Отправлено: Efendy от 16 Июня 2010, 18:51:03
попробуй через union


Название: Re: И снова RADIUS (решено)
Отправлено: blackjack от 16 Июня 2010, 20:11:28
спасибо, то что надо


Название: Re: И снова RADIUS (решено)
Отправлено: blackjack от 17 Июня 2010, 10:46:30
значит выкладываю рабочую процедуру для pppoe браса на Cisco 7200 с авторизацией через freeradius-mysql, c7200-jk9o3s-mz.124-8.bin
может пригодится кому  :)

Код:
DROP PROCEDURE IF EXISTS `radreply2`;
DELIMITER $$ 
CREATE PROCEDURE `radreply2` (IN login VARCHAR(64))
BEGIN
  DECLARE usr_id INT; 
  DECLARE usr_ip VARCHAR(15);
  DECLARE speed_input,speed_output,usr_paket INT; 
  SELECT id,ip,paket INTO usr_id,usr_ip,usr_paket FROM users WHERE name=login;
  SELECT speed,speed_out INTO speed_input,speed_output FROM plans2 WHERE id=usr_paket;
  INSERT into dblogin (mid,act,time) VALUES (usr_id,47,unix_timestamp());

  SELECT NULL,login,'Framed-IP-Address',usr_ip,'=';
  SELECT NULL,login,'Framed-IP-Netmask','255.255.255.255','=';
  SELECT NULL,login,'Framed-Protocol','PPP','=';

  SELECT NULL,login,'Cisco-Avpair',CONCAT('lcp:interface-config#1=rate-limit output ',speed_output,'000 ',FLOOR(speed_output*0.1875),'000 ',FLOOR(speed_output*0.375),'000 conform-action transmit exceed-action drop')AS Value,'=' UNION
  SELECT NULL,login,'Cisco-Avpair',CONCAT('lcp:interface-config#2=rate-limit input ',speed_input,'000 ',FLOOR(speed_input*0.1875),'000 ',FLOOR(speed_input*0.375),'000 conform-action transmit exceed-action drop') AS Value,'+=';
 
END$$
DELIMITER ;


Название: Re: И снова RADIUS (решено)
Отправлено: blackjack от 17 Июня 2010, 16:25:43
вот еще для UA-IX и остального

Цитировать
DROP PROCEDURE IF EXISTS `radreply2`;
DELIMITER $$ 
CREATE PROCEDURE `radreply2` (IN login VARCHAR(64))
BEGIN
  DECLARE usr_id INT; 
  DECLARE usr_ip VARCHAR(15);
  DECLARE speed_input,speed_output,speed_uaix,usr_paket INT; 
  SELECT id,ip,paket INTO usr_id,usr_ip,usr_paket FROM users WHERE name=login;
  SELECT speed,speed_out,speed2 INTO speed_input,speed_output,speed_uaix FROM plans2 WHERE id=usr_paket;
  INSERT into dblogin (mid,act,time) VALUES (usr_id,47,unix_timestamp());

  SELECT NULL,login,'Framed-IP-Address',usr_ip,'=';
  SELECT NULL,login,'Framed-IP-Netmask','255.255.255.255','=';
  SELECT NULL,login,'Framed-Protocol','PPP','=';

  SELECT NULL,login,'Cisco-Avpair',CONCAT('lcp:interface-config#1=rate-limit output access-group 1 ',speed_uaix,'000 ',FLOOR(speed_uaix*0.1875),'000 ',FLOOR(speed_uaix*0.375),'000 conform-action transmit exceed-action drop')AS Value,'=' UNION
  SELECT NULL,login,'Cisco-Avpair',CONCAT('lcp:interface-config#2=rate-limit input access-group 1 ',speed_uaix,'000 ',FLOOR(speed_uaix*0.1875),'000 ',FLOOR(speed_uaix*0.375),'000 conform-action transmit exceed-action drop') AS Value,'+=' UNION
  SELECT NULL,login,'Cisco-Avpair',CONCAT('lcp:interface-config#3=rate-limit output access-group 2 ',speed_output,'000 ',FLOOR(speed_output*0.1875),'000 ',FLOOR(speed_output*0.375),'000 conform-action transmit exceed-action drop') AS Value,'+=' UNION
  SELECT NULL,login,'Cisco-Avpair',CONCAT('lcp:interface-config#4=rate-limit input access-group 2 ',speed_input,'000 ',FLOOR(speed_input*0.1875),'000 ',FLOOR(speed_input*0.375),'000 conform-action transmit exceed-action drop') AS Value,'+=';
 
END$$
DELIMITER ;
ну и на циске дожны быть два standard acces-list, 1 с украинскими сетями, 2 any


Название: Re: И снова RADIUS (решено)
Отправлено: stix от 17 Июня 2010, 16:28:45
сколько у вас в среднем идет трафик на клиента?


Название: Re: И снова RADIUS (решено)
Отправлено: blackjack от 17 Июня 2010, 17:03:27
уточните вопрос


Название: Re: И снова RADIUS (решено)
Отправлено: stix от 17 Июня 2010, 18:49:50
Сколько трафика проходит через брас от каждого пользователя?
особенно интересует локальный трафик, как вы его распределяете.


Название: Re: И снова RADIUS (решено)
Отправлено: blackjack от 17 Июня 2010, 19:11:03
Код:
День	Клиент	К клиенту, Мб	От клиента, Мб
17 Нет данных за текущий день
16 сеть 2 144 873 20 649
15 сеть 2 491 379 27 594
14 сеть 1 750 737 21 818
13 сеть 1 751 664 21 957
12 сеть 1 539 163 14 772
11 сеть 1 728 226 20 419
10 сеть 1 916 761 25 842
9 сеть 1 900 585 39 932
8 сеть 1 589 084 30 196
7 сеть 1 478 964 12 516
6 сеть 1 897 977 25 637
5 сеть 1 793 409 45 961
4 сеть 2 018 948 35 302
3 сеть 2 124 676 6 798
2 сеть 1 807 683 3 740
1 сеть 1 507 958 3 269
Сумма 29 442 095 356 410
это локалка

Код:
День	Клиент	К клиенту, Мб	От клиента, Мб
17 Нет данных за текущий день
16 сеть 922 915 382 201
15 сеть 863 384 395 562
14 сеть 791 878 379 389
13 сеть 820 676 375 669
12 сеть 749 050 368 561
11 сеть 780 654 355 445
10 сеть 827 132 364 642
9 сеть 832 369 334 443
8 сеть 840 109 324 486
7 сеть 873 686 374 397
6 сеть 851 789 383 661
5 сеть 873 935 342 809
4 сеть 886 271 359 557
3 сеть 917 384 366 023
2 сеть 727 434 304 852
1 сеть 658 284 258 482
Сумма 13 216 959 5 670 187
это интернет
cisco6509, схема влан на дом

пользователи очень разные, есть что в месяц плтора терабайта выкачивают, а есть что пару десятков мегабайт


Название: Re: И снова RADIUS (решено)
Отправлено: Андрій от 12 Июля 2010, 11:50:07
дайте будь ласка  хтось процедуру для авторизації на мікротіку