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", чё-т я не понимаю однако...
Функция 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.Чёт я не догоняю...
Получил такие логи: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".
Проблема была в отсутствующем файле /etc/freeradius2/modules/always.Буквально сегодня openwrt залило на downloads.openwrt.org модуль freeradius2-mod-always. Я установил это и проблема исчезла.
Кстати, для MAC-авторизации нужно будет ещё установить модуль freeradius2-mod-expr. И в /etc/freeradius2/radiusd.conf добавить или расскомментировать "expr" в секции "instantiate {". Просто иначе не будет работать функция tolower, которая преобразует MAC-адрес к нижнему регистру.