URL: https://www.opennet.dev/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 97704
[ Назад ]

Исходное сообщение
"freeradius 3, подмена user-name"

Отправлено masz , 20-Фев-21 15:22 
Добрый день!

Может кто поможет побороть или направить в нужное направление.
Имеем сеть с авторизацией по option82(vlan+port):
- option82
- option82+mac
сейчас пытаюсь внедрить ipv6, потому добавляем авторизацию по:
- option37

Freeradius mysql + files, так как username в mysql уникальное значение, а за портом может быть больше одго dhcp-client их пишем в файлы с дополнительным параметром calling-station-id(то есть МАС-адрес). На данный момент, без option37 все работает, в радиус подменяем username на DHCP-RelayCircuitId. И можно было бы закрыть глаза на небольшие костыли в виде mysql + files, но так как хочеться еще внедрить ipv6, надо иметь username = DHCPv6-RelayCircuitId.

Вот собственно и вопрос, как сделать подмену username на нужный параметр в запросе? Если есть option82 то (username=dhcp-relaycircuitid), если есть option37 то (username=dhcpv6-relaycircuitid), если нет ничего то (username).

Спасибо!


Содержание

Сообщения в этом обсуждении
"freeradius 3, подмена user-name"
Отправлено gg , 21-Фев-21 12:25 
https://networkradius.com/doc/3.0.10/unlang/condition.html

if( ATTR == option82 {
        update request {
                User-Name := "option82"
}
}


"freeradius 3, подмена user-name"
Отправлено masz , 24-Фев-21 11:52 
> https://networkradius.com/doc/3.0.10/unlang/condition.html
> if( ATTR == option82 {
>         update request {
>            
>     User-Name := "option82"
> }
> }

:)


"freeradius 3, подмена user-name"
Отправлено masz , 12-Апр-21 09:27 
Наконец-то нашел как и где сделать подмену.
Сделал так в policy.d/filter:

filter_username {
        if (&User-Name) {

                # если есть параметр Param_1, назначаем его как Username
                if (&Param_1) {
                        update request {
                                &User-Name := &Param_1
                        }
                }
                # если Param_1 нет, назначаем Param_2 как Username
                else {
                        update request {
                                &User-Name := &Param_2
                        }
                }

....
skip
....

}