FreeRadius LDAP 组检查

FreeRadius LDAP group check

我想实施 802.1x。属于 Microsoft domey 的计算机将被验证。交换机端口将根据计算机的组成员身份配置在 VLAN 中。配置简单。运行良好 ;) FreeRadius 3.0.19

问:由于AD的复杂性,是否可以将同一个VLAN分配给不同组的电脑?

目前我是这样操作的: 在 post-auth

if (Ldap-Group == VLAN16_SIEO1) {
    update reply {
        ...
    }
}

我想给VLAN16_BSTO1和VLAN16_ADMCE1等以VLAN16_

开头的组分配相同的VLAN

我无法在条件 "if" =~ 中使用运算符。 FreeRadius 不启动!是否可以检查组名,以免创建许多 "if" 条件? 在我的例子中,这些条件大约是 800 :)

谁能帮帮我,告诉我怎么配置才能解决这个问题,谢谢

在 LDAP 模块配置中启用 cacheable_name - https://github.com/FreeRADIUS/freeradius-server/blob/v3.0.x/raddb/mods-available/ldap#L326

并取消注释设置缓存属性的行:https://github.com/FreeRADIUS/freeradius-server/blob/v3.0.x/raddb/mods-available/ldap#L333

然后您可以更改条件以对组成员资格进行模式匹配 LDAP-Cached-Membership[*] =~ /.*foo.*/

cacheable_name 和 cacheable_dn 所做的是为该特定用户创建存储在 LDAP 目录中的所有组成员身份的列表,并将这些值写入本地属性。您可以使用通配符选择器 [*] 将模式匹配应用于 LDAP-Cached-Membership.

的所有值

需要注意的是,在使用条件之前必须至少调用 LDAP 模块一次,因为它需要创建组列表。

已编辑以指定使用 LDAP-Cached-Membership。

我只想感谢 Arran!

对于其他任何人,以下语法使其有效:

if (&control:LDAP-Cached-Membership[*] =~ /.*foo.*/) {