FreeRadius произвольно назначает атрибуты ради баланса нагрузки - PullRequest
2 голосов
/ 11 января 2020

Мы используем 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

1 Ответ

1 голос
/ 11 января 2020

Используйте ключевое слово балансировки нагрузки

load-balance {
    group {
        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      
    }
    group {
        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      
    }
}

Вы также можете поменять разделы 'group' для вызовов политики или вызовов модулей.

IIR C Были проблемы с использованием пустые разделы обновления в разделах балансировки нагрузки в v3.0.x, поэтому, даже если у вас есть только раздел обновления, вы все равно можете обернуть его в группу.

...