Мы используем FreeRadius
для аутентификации наших пользователей в сети, и одним из требований является балансировка нагрузки DNS на двух DNS-серверах, поэтому, когда пользователи получают свои IP-адреса после подключения, они получают свои DNS-серверы в произвольном порядке, например, некоторые пользователи получают 10.10.10.1 и 10.10.10.2 соответственно, в то время как другие пользователи получают их в обратном порядке.
Для этого мы назначаем пользователям случайные атрибуты DNS-серверов после их аутентификации через радиус. Мы думали об использовании метода rand FreeRadius вместе с операторами un lang if, однако, мы подумали, что, возможно, существует лучший или более элегантный способ достижения аналогичных требований.
Текущая настройка работает отлично (обратите внимание, что она не в циклическом стиле), но ей удалось использовать un lang вместе с методами rand и expr, как показано ниже:
if (&User-Name == "bob") {
if ("%{expr:%{rand:2}+1}" == "1") { ## A workaround to switch DNS orders
update reply {
Reply-Message := "Primary DNS comes first"
MS-Primary-DNS-Server := "192.168.41.1"
MS-Secondary-DNS-Server := "192.168.41.2"
}
accept
}
else {
update reply {
Reply-Message := "Secondary DNS comes first"
MS-Primary-DNS-Server := "192.168.41.2"
MS-Secondary-DNS-Server := "192.168.41.1"
}
accept
}
}
Можете ли вы посоветовать или предложить лучший способ достижения подобных результатов?
Использование : FreeRADIUS Версия 3.0.11