The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"freeradius не выдает адреса и виснет(?)"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [Проследить за развитием треда]

"freeradius не выдает адреса и виснет(?)" 
Сообщение от postmast emailИскать по авторуВ закладки on 13-Июл-05, 20:31  (MSK)
Поставил freeradius-1.0.1
Аутентификация через pgsql. Поскольку основные сервисы авторизуются по PAP, то изначально все делалось под gnu-radius. Но понадобился и mschap. Поэтому параллельно пришлось ставить freeradius. Но структура таблиц сильно отличается от той что идет с freeradius. Пришлось переписывать запросы.
Аутентификация работает, acct работает,
однако, есть две большие проблемы:
1. Вот фрагмент из postgresql.conf:
authorize_reply_query = "\
        SELECT \
                site AS id, \
                iplogin AS UserName, \
                'Framed-IP-Address'::char AS Attribut, \
                text(host(ipaddr[1]))::char AS Value, \
                '='::char AS Op \
                FROM ${authreply_table} \
        WHERE \
                iplogin = '%{SQL-User-Name}' AND \
                NOT disabled AND NOT deleted AND \
                text(host(ipaddr[1]))::char != ''"
Запрос этот честно выполняется и если выполнить вручную, то адрес выдается верно. Однако, радиус в reply этот адрес не выдает и никаких сообщений об ошибке тоже. Почему так может быть?

2. Включен контроль Simultaneous-Use через sql запросы.
Если одна сессия установлена, то при попытке установить еще одну - клиенту честно дается отлуп. Однако, если закрыть первую сессию и попытаться установить ее заново, запрос на аутентификацию (совершенно идентичный первой аутентификации) выполняется успешно, но радиус отвечает что нет такого пользователя. Приходится перегружать. У него что есть внутренняя таблица сессий которая почему-то не сбрасывается? Или я что-то просмотрел?

Вообще, первые впечатления о стабильности freeradius не самые благоприятные. Надеюсь что это заблуждение...

  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "freeradius не выдает адреса и виснет(?)" 
Сообщение от postmast emailИскать по авторуВ закладки on 13-Июл-05, 20:58  (MSK)
up
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "freeradius не выдает адреса и виснет(?)" 
Сообщение от Hammer Искать по авторуВ закладки(ok) on 13-Июл-05, 23:19  (MSK)
>Поставил freeradius-1.0.1
>Аутентификация через pgsql. Поскольку основные сервисы авторизуются по PAP, то изначально все
>делалось под gnu-radius. Но понадобился и mschap. Поэтому параллельно пришлось ставить
>freeradius. Но структура таблиц сильно отличается от той что идет с
>freeradius. Пришлось переписывать запросы.
>Аутентификация работает, acct работает,
>однако, есть две большие проблемы:
>1. Вот фрагмент из postgresql.conf:
>authorize_reply_query = "\
>        SELECT \
>            
>    site AS id, \
>            
>    iplogin AS UserName, \
>            
>    'Framed-IP-Address'::char AS Attribut, \
>            
>    text(host(ipaddr[1]))::char AS Value, \
>            
>    '='::char AS Op \
>            
>    FROM ${authreply_table} \
>        WHERE \
>            
>    iplogin = '%{SQL-User-Name}' AND \
>            
>    NOT disabled AND NOT deleted AND \
>
>            
>    text(host(ipaddr[1]))::char != ''"
>Запрос этот честно выполняется и если выполнить вручную, то адрес выдается верно.
>Однако, радиус в reply этот адрес не выдает и никаких сообщений
>об ошибке тоже. Почему так может быть?
>
>2. Включен контроль Simultaneous-Use через sql запросы.
>Если одна сессия установлена, то при попытке установить еще одну - клиенту
>честно дается отлуп. Однако, если закрыть первую сессию и попытаться установить
>ее заново, запрос на аутентификацию (совершенно идентичный первой аутентификации) выполняется успешно,
>но радиус отвечает что нет такого пользователя. Приходится перегружать. У него
>что есть внутренняя таблица сессий которая почему-то не сбрасывается? Или я
>что-то просмотрел?
>
>Вообще, первые впечатления о стабильности freeradius не самые благоприятные. Надеюсь что это
>заблуждение...


Хлоп! Видел решение здесь в форуме. поищи.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "freeradius не выдает адреса и виснет(?)" 
Сообщение от postmast Искать по авторуВ закладки on 14-Июл-05, 04:20  (MSK)
>Хлоп! Видел решение здесь в форуме. поищи.

Ага, нашел похожее. Спасибо.
Только там речь идет об acct-update (видимо имеется ввиду acct-alive)
Но я то говорил о auth-reply. Неужели и там такая же фигня?! Ну тогда я точно в freeradius разочарован ;-)

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "freeradius не выдает адреса и виснет(?)" 
Сообщение от postmast Искать по авторуВ закладки on 14-Июл-05, 08:45  (MSK)
>Ага, нашел похожее. Спасибо.
>Только там речь идет об acct-update (видимо имеется ввиду acct-alive)

Действительно - этот патч относился к acct-alive.
Может будут другие соображения?

Что интересно, прописал в тот же запрос атрибуты Service-Type и Framed-Protocol и они благополучно добавляются в ответ радиуса, а вот Framed-IP-Address - ни в какую :-(

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "freeradius не выдает адреса и виснет(?)" 
Сообщение от postmast Искать по авторуВ закладки on 14-Июл-05, 09:55  (MSK)
Обалдеть!
Решил одну проблему:

>authorize_reply_query = "\
>        SELECT \
>            
>    site AS id, \
>            
>    iplogin AS UserName, \
>            
>    'Framed-IP-Address'::char AS Attribut, \
>            
>    text(host(ipaddr[1]))::char AS Value, \
>            
>    '='::char AS Op \
>            
>    FROM ${authreply_table} \
>        WHERE \
>            
>    iplogin = '%{SQL-User-Name}' AND \
>            
>    NOT disabled AND NOT deleted AND \

Здесь поле site - строка. Как каписано в postgresql.conf.sample:
0. Row ID (currently unused)
Вот я и вставил что попало - ну нет у меня поля идентификатора.
А ничего подобного! Если atoi не дает > 0, то похоже атрибут игнорируется.
Исправил на '1' AS id и адрес стал выдаваться.
Осталась проблема с отказом в повторном доступе.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "freeradius не выдает адреса и виснет(?)" 
Сообщение от postmast Искать по авторуВ закладки on 14-Июл-05, 12:16  (MSK)
Что-то я сам с собою беседую ;-)
Ситуацию упростил до предела.
Simultaneous-Use тут не причем
В postgresql.conf сделал:
num_sql_socks = 1 (до этого было 5)
connect_failure_retry_delay = 60
Соединяюсь первый раз нормально, второй раз - нет данных от pgsql. Теряется соединение
rlm_sql (sql): Reserving sql socket id: 0
rlm_sql_postgresql: Status: PGRES_TUPLES_OK
                                                ^^^^^^^^^^^^^^^
rlm_sql_postgresql: affected rows =
rlm_sql (sql): User test not found in radcheck
                        ^^^^^^^^^^^^^^^^^^^^^^^^!!!!!!!!!!!!
rlm_sql (sql): Released sql socket id: 0
Sending Access-Reject of id 124 to 127.0.0.1:2156
        MS-CHAP-Error = "\001E=691 R=1"

Причем запрос идентичен первому! Что за напасть?!!!

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "freeradius не выдает адреса и виснет(?)" 
Сообщение от postmast emailИскать по авторуВ закладки on 14-Июл-05, 16:29  (MSK)
up
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

8. "freeradius не выдает адреса и виснет(?)" 
Сообщение от postmast emailИскать по авторуВ закладки on 14-Июл-05, 19:02  (MSK)
Это просто какой-то идиотизм.
Вот мой запрос:
authorize_reply_query = "\
        SELECT \
        ...
Т.е. хотелось красиво оформить. А теперь смотрим код sql_postgresql.c:

if (strncasecmp("select", querystr, 6) != 0) {
        ...

Что в этом случае вернёт strncasecmp? Ага - строки не совпали, потому-что в запросе в начале стоят две табуляции.
Зла не хватает. Ну кто так програмирует?!
Неужели нельзя было сделать что-то типа:
if (PQntuples(pg_sock->result) > 0) {
        ...

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ]
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




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

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