The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
openwrt, freeradius, !*! NekroMen, 13-Апр-16, 08:49  [смотреть все]
OpenWrt Chaos Calmer 15.05.1
freeradius 2.2.8-2

Установлено:
freeradius2
freeradius2-common
freeradius2-democerts
freeradius2-mod-chap
freeradius2-mod-eap
freeradius2-mod-eap-mschapv2
freeradius2-mod-eap-peap
freeradius2-mod-eap-tls
freeradius2-mod-eap-ttls
freeradius2-mod-exec
freeradius2-mod-files
freeradius2-mod-mschap
freeradius2-mod-pap
freeradius2-mod-radutmp
freeradius2-mod-realm
freeradius2-utils

Проблема:
Всё работает, но хочу сделать авторизацию по MAC-адресу.

Я добавил "rewrite.calling_station_id" в секцию "authorize {", в файлике "/etc/freeradius2/sites/default". Вот такой получился конфиг:
authorize {
        rewrite.calling_station_id
eap {
ok = return
}
files
pap
}
authenticate {
Auth-Type PAP {
pap
}
Auth-Type CHAP {
chap
}
Auth-Type MS-CHAP {
mschap
}
eap
}
accounting {
exec
}
session {
radutmp
}

В итоге получаю такую ошибку:
Module: Checking authorize {...} for more modules to load
/etc/freeradius2/sites/default[92]: Failed to find "rewrite.calling_station_id" in the "modules" section.

Я порешил данную ошибку - в файле /etc/freeradius2/radiusd.conf, расскоментировал:
#$INCLUDE policy.conf

Теперь получаю такую ошибку:
Module: Checking authorize {...} for more modules to load
Module: Loading virtual module rewrite.calling_station_id
/etc/freeradius2/policy.conf[250]: Failed to find "updated" in the "modules" section.
/etc/freeradius2/policy.conf[250]: Failed to parse "updated" entry.
/etc/freeradius2/policy.conf[246]: Failed to parse "if" subsection.
/etc/freeradius2/sites/default[69]: Errors parsing authorize section.

Чё эт за модуль такой "updated", чё-т я не понимаю однако...

  • openwrt, freeradius, !*! NekroMen, 07:39 , 14-Апр-16 (1)
    Функция rewrite.calling_station_id находится в файле /etc/freeradius2/policy.conf:
    rewrite.calling_station_id {
                    if((Calling-Station-Id) && "%{Calling-Station-Id}" =~ /^%{config:policy.mac-addr}$/i) {
                            update request {
                                    Calling-Station-Id := "%{tolower:%{1}-%{2}-%{3}-%{4}-%{5}-%{6}}"
                            }
                            updated
                    }
                    else {
                            noop
                    }
            }

    "updated", если я правильно понял, находится в "словаре" /usr/share/freeradius2/dictionary.freeradius.internal:

    ATTRIBUTE       Module-Return-Code                      1108    integer

    VALUE   Module-Return-Code              reject                  0
    VALUE   Module-Return-Code              fail                    1
    VALUE   Module-Return-Code              ok                      2
    VALUE   Module-Return-Code              handled                 3
    VALUE   Module-Return-Code              invalid                 4
    VALUE   Module-Return-Code              userlock                5
    VALUE   Module-Return-Code              notfound                6
    VALUE   Module-Return-Code              noop                    7
    VALUE   Module-Return-Code              updated                 8

    Если она находится в словаре... то почему я получаю ошибку...:
    > Module: Checking authorize {...} for more modules to load
    > Module: Loading virtual module rewrite.calling_station_id
    > /etc/freeradius2/policy.conf[250]: Failed to find "updated" in the "modules" section.

    Чёт я не догоняю...

    • openwrt, freeradius, !*! NekroMen, 08:13 , 14-Апр-16 (2)
      Получил такие логи:

      Mon Apr 11 20:15:00 2016 : Debug: including configuration file /etc/freeradius2/policy.conf
      Mon Apr 11 20:15:00 2016 : Debug: including files in directory /etc/freeradius2/sites/
      Mon Apr 11 20:15:00 2016 : Debug: including configuration file /etc/freeradius2/sites/default
      Mon Apr 11 20:15:00 2016 : Debug: main {
      Mon Apr 11 20:15:00 2016 : Debug: allow_core_dumps = no
      Mon Apr 11 20:15:00 2016 : Debug: }
      Mon Apr 11 20:15:00 2016 : Debug: including dictionary file /etc/freeradius2/dictionary

      Как я понимаю:
      Сначала грузится /etc/freeradius2/sites/default
      И только потом /etc/freeradius2/dictionary

      Но если "updated" объявлен в файле dictionary, то естественно про "updated" ничего не известно во время загрузки файла "default".

      Хотя в инструкции http://wiki.freeradius.org/guide/Mac-Auth, сказано, что "rewrite.calling_station_id" надо добавлять в файл "/etc/freeradius2/sites/default".

      • openwrt, freeradius, !*! NekroMen, 14:32 , 14-Апр-16 (3)
        Проблема была в отсутствующем файле /etc/freeradius2/modules/always.

        Буквально сегодня openwrt залило на downloads.openwrt.org модуль freeradius2-mod-always. Я установил это и проблема исчезла.

        Кстати, для MAC-авторизации нужно будет ещё установить модуль freeradius2-mod-expr. И в  /etc/freeradius2/radiusd.conf добавить или расскомментировать "expr" в секции "instantiate {". Просто иначе не будет работать функция tolower, которая преобразует MAC-адрес к нижнему регистру.




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

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