Есть wi-fi точка с прикрученным freeradius-ом и учетками в AD (WPA+PEAP+MSCHAP).
Нужно отдавать разные параметры (vlan и т.д.) в зависимости от нахождения пользователя в N-ой группе AD.
С одной группой все просто. Для двух и более есть загвоздка.
cat sites-enabled/default
Код: Выделить всё
authorize {
preprocess
auth_log
mschap
eap {
ok = return
}
files
expiration
logintime
}
authenticate {
Auth-Type MS-CHAP {
mschap
}
eap
Auth-Type vlan1 {
ntlm_auth_1
}
Auth-Type vlan2 {
ntlm_auth_2
}
}
cat modules/ntlm_auth
Код: Выделить всё
exec ntlm_auth_1 {
wait = yes
program = "/usr/local/bin/ntlm_auth --request-nt-key --username=%{%{Stripped-User-Name}:-%{%{User-Name}:-None}} --challenge=%{%{mschap:Challenge}:-00} --nt-response=%{%{mschap:NT-Response}:-00} --require-membership-of='PDC.MYDOMEN.NET\\WI-FI-1'"
}
exec ntlm_auth_2 {
wait = yes
program = "/usr/local/bin/ntlm_auth --request-nt-key --username=%{%{Stripped-User-Name}:-%{%{User-Name}:-None}} --challenge=%{%{mschap:Challenge}:-00} --nt-response=%{%{mschap:NT-Response}:-00} --require-membership-of='PDC.MYDOMEN.NET\\WI-FI-2'"
}
cat users
Код: Выделить всё
DEFAULT Auth-Type := vlan1
Service-Type = Framed-User,
Tunnel-Type = VLAN,
Tunnel-Medium-Type = IEEE-802,
Tunnel-Private-Group-ID = 1
DEFAULT Auth-Type := vlan2
Service-Type = Framed-User,
Tunnel-Type = VLAN,
Tunnel-Medium-Type = IEEE-802,
Tunnel-Private-Group-ID = 2
А требуется последовательно перебирать все указанные Auth-Type vlanN и если логин не найден отбрасывать запрос.