Jump to content

Recommended Posts

Posted

Приветствую всех.
Не могу подружить сабж. Точнее они дружат, но пользователи не могут залогиниться. Протокол pptp, в первой и второй версии Freeradius использовал не его собственную СУБД, а СУБД биллинга, изменяя только запросы.
 

authorize_check_query = "SELECT abonent.id AS id, username AS login, 'Password', password, '==' FROM abonent INNER JOIN service_by_abonent ON abonent.id = service_by_abonent.id_abonent WHERE username = '%{SQL-User-Name}' AND status = 0 AND ('%{Calling-Station-Id}'=access_ip OR '%{Calling-Station-Id}' REGEXP access_ip) "

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

 

3 версия даже логин/пароль проверить не может.

 

Может у кого есть готовый конфиг, если не жалко?

Спасибо.

Posted

Победил.
Все что было:

'Password', стало 'Cleartext-Password'
'%{SQL-User-Name}' стало '%{User-Name}'
'==' стало каким-то хреном ':='

 

Новый вопрос, чтобы не создавать новую тему. Как скормить ему dictionary.mpd?

Posted

положить в папку словарей и проверить чтоб формат был корректным.

 

http://freeradius.org/radiusd/man/dictionary.html

из raddb/dictionary

Цитата
# This is the local dictionary file which can be
# edited by local administrators. It will be loaded
# AFTER the main dictionary files are loaded.
#
# As of version 3.0.2, FreeRADIUS will automatically
# load the main dictionary files from
#
# ${prefix}/share/freeradius/dictionary
#
# It is no longer necessary for this file to $INCLUDE
# the main dictionaries. However, if the $INCLUDE
# line is here, nothing bad will happen.
#
# Any new/changed attributes MUST be placed in this file.

# The pre-defined dictionaries SHOULD NOT be edited.

Posted
4 часа назад, NewUse сказал:

из raddb/dictionary

положил /usr/local/share/freeradius/
Даже в dictionary пробовал прописывать - не работает. Файл корректен.

 

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

Posted
1 час назад, NewUse сказал:

Покажите настройки   

authorize_check_query = "SELECT abonent.id AS id, username AS login, 'Cleartext-Password', password, ':=' FROM abonent INNER JOIN service_by_abonent ON abonent.id = service_by_abonent.id_abonent WHERE username = '%{User-Name}' AND status = 0 AND ('%{Calling-Station-Id}'=access_ip OR '%{Calling-Station-Id}' REGEXP access_ip) AND service_by_abonent.id_service=1 AND service_by_abonent.is_deleted=0"

authorize_reply_query = "SELECT id,username,'Framed-IP-Address',INET_NTOA(mod((ext_ip+0x100000000), 0x100000000)) AS ip,'=' FROM abonent WHERE username = '%{User-Name}' ORDER BY id DESC"

authorize_group_reply_query = "SELECT abonent.id, 'shape', 'mpd-limit', IF (GREATEST(abonent.special_speed, abonent.reserved) > 0, CONCAT('in#1=all shape ', GREATEST(abonent.special_speed, abonent.reserved), ' pass'), CONCAT('in#1=all shape ', IF (tariff.special_speed > 0 && current_time() BETWEEN '00:00:00' AND '06:00:00', tariff.special_speed, tariff.speed), ' pass')) AS speed, '+=' FROM abonent INNER JOIN tariff ON abonent.id_tariff = tariff.id WHERE abonent.username = '%{User-Name}' AND abonent.status=0 UNION ALL SELECT -abonent.id, 'shape', 'mpd-limit', IF (GREATEST(abonent.special_speed, abonent.reserved) > 0, CONCAT('out#1=all shape ', GREATEST(abonent.special_speed, abonent.reserved), ' pass'), CONCAT('out#1=all shape ', IF (tariff.special_speed > 0 && current_time() BETWEEN '00:00:00' AND '06:00:00', tariff.special_speed, tariff.speed), ' pass')) AS speed, '+=' FROM abonent INNER JOIN tariff ON abonent.id_tariff = tariff.id WHERE abonent.username = '%{User-Name}' AND abonent.status=0"

 authorize_group_check_query я не использую.

Posted

в reply вроде вместо '=' должно быть '=='

 

 
Цитата

 

You can use any query/tables
# you want, but the return data for each row MUST
# be in the following order:
#
# 0. Row ID (currently unused)
# 1. UserName/GroupName
# 2. Item Attr Name
# 3. Item Attr Value

# 4. Item Attr Operation

 

 

 

mpd-limit точно такой атрибут есть в словаре?

 

Выполните оба sql reply запроса на примере тестового пользователя.

 

Posted (edited)
13 часов назад, NewUse сказал:

в reply вроде вместо '=' должно быть '=='

если =, то ответ передается на NAS, == - ответ будет сравниваться. Передача IP для соединения работает без проблем.

 

 

13 часов назад, NewUse сказал:

Выполните оба sql reply запроса на примере тестового пользователя

+--------+-------+-----------+-------------------------------+----+
| id     | shape | mpd-limit | speed                         | += |
+--------+-------+-----------+-------------------------------+----+
|  77936 | shape | mpd-limit | in#1=all shape 20000000 pass  | += |
| -77936 | shape | mpd-limit | out#1=all shape 20000000 pass | += |
+--------+-------+-----------+-------------------------------+----+

вот такой ответ.

 

Словарь mpd

 

#
# dictionary.mpd

VENDOR		mpd		12341

#BEGIN-VENDOR	mpd

ATTRIBUTE	mpd-rule	1	string		mpd
ATTRIBUTE	mpd-pipe	2	string		mpd
ATTRIBUTE	mpd-queue	3	string		mpd
ATTRIBUTE	mpd-table	4	string		mpd
ATTRIBUTE	mpd-table-static	5	string		mpd
ATTRIBUTE	mpd-filter	6	string		mpd
ATTRIBUTE	mpd-limit	7	string		mpd
ATTRIBUTE	mpd-input-octets	8	string		mpd 
ATTRIBUTE	mpd-input-packets	9	string		mpd 
ATTRIBUTE	mpd-output-octets	10	string		mpd 
ATTRIBUTE	mpd-output-packets	11	string		mpd 
ATTRIBUTE	mpd-link	12	string		mpd 
ATTRIBUTE	mpd-bundle	13	string		mpd 
ATTRIBUTE	mpd-iface	14	string		mpd 
ATTRIBUTE	mpd-iface-index	15	integer		mpd 
ATTRIBUTE	mpd-input-acct	16	string		mpd 
ATTRIBUTE	mpd-output-acct	17	string		mpd 
ATTRIBUTE	mpd-drop-user	154	integer		mpd

#END-VENDOR	mpd

 

Словарь перестал работать с Freeradius 2. Если вместо shape передавать имя пользователя также без результатов?

Edited by default_vlan

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.