FreeRadius为负载均衡而随机分配属性

问题描述 投票:2回答:1

我们正在使用FreeRadius对网络上的用户进行身份验证,其中一项要求是在两台DNS服务器之间实现DNS负载平衡,因此当用户在连接后获得IP时,他们会随机接收其DNS服务器,例如某些用户分别获得10.10.10.1和10.10.10.2,而其他用户获得相反的结果。

为此,一旦用户通过半径进行身份验证,我们便向他们分配随机DNS服务器属性。我们曾考虑将FreeRadius rand方法与unlang if语句一起使用,但是,我们认为也许有一种更好或更优雅的方式来实现类似的要求。

当前的设置运行良好(请注意,它不是循环样式的,但是它成功地使用了unlang以及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

感谢您的支持。

load-balancing freeradius radius
1个回答
1
投票

使用负载平衡关键字

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      
    }
}

您还可以将“组”部分换成策略调用或模块调用。

IIRC在v3.0.x的负载平衡部分中使用裸露的更新部分存在一些问题,因此,即使您只有更新部分,您仍可能希望将其包装在一个组中。

© www.soinside.com 2019 - 2024. All rights reserved.