首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有冗余负载均衡LDAP-Group的Freeradius问题

具有冗余负载均衡LDAP-Group的Freeradius问题
EN

Stack Overflow用户
提问于 2019-10-01 14:50:23
回答 1查看 778关注 0票数 0

在用户通过EAP-TLS认证后,我需要为用户分配与活动目录中的组相对应的vlan。我创建了在/policy.d.d/ vlan _赋值中处理vlan分配的脚本:

代码语言:javascript
复制
vlan_assignment {
    if (LDAP-Group == "CN=radiusClient,CN=Users,DC=myGroup,DC=dom") {
        update reply {
    [...]
    }
}

在启用mods的情况下,只有一个ldap服务器可以很好地工作。我想使用自由人提供的冗余负载平衡功能。

在radius.conf模块部分中,我将创建两个ldap服务器的配置:

代码语言:javascript
复制
modules {
    ldap server1 {
            server = 'SRVAD01'
            port = 389
           [...]
    }
    ldap server2 {
            server = 'SRVAD02'
            port = 389
           [...]
    }
}

在实例化部分中

代码语言:javascript
复制
instantiate {
    redundant-load-balance rlb_ldap {
        server1
        server2
    }   
}

到ldap服务器的连接只发生在我站点外部隧道的post_auth部分。

代码语言:javascript
复制
server outer-tunnel {
    listen {
    [...]
    }
    authorize {
        filter_username
        preprocess
        auth_log
        suffix
        eap {
            ok = return
            updated = return
        }
        sql
        expiration
        logintime
        pap
    }
    authenticate {
        Auth-Type PAP {
            pap
        }
        pam
        eap
    }
    preacct {
        preprocess
        acct_unique
        suffix
    }
    accounting {
        detail
        unix
        sql
        exec
        attr_filter.accounting_response
    }
    session {
        sql
    }
    post-auth {
        update {
            &reply: += &session-state:
        }   
       #*****edit ****         
        rlb_ldap.authorize
        if (ok || updated) {
            update session-state {
                &LDAP-Group += &LDAP-Group[*]
            }
        }
        #********************
        vlan_assignment
        exec
        [...]
    }
        [...]
}

但是,在启动freeradius -X时,策略.d/vlan_转让人中有以下错误:

未知属性“LDAP-Group”

我阅读并寻找解决方案,但失败了。有谁可以帮我?

EN

回答 1

Stack Overflow用户

发布于 2019-10-01 20:12:59

这是因为您已经创建了LDAP模块的实例,因此LDAP-Group属性的名称已经更改。有几种方法可以解决这个问题,但最简单的方法是指示LDAP模块对其所有实例使用相同的属性,然后让它检索完整的成员资格列表。

对于每个LDAP模块,取消注释并将属性设置为相同。如果您愿意,只需将其设置为“LDAP-Group”即可。

然后,对于每个LDAP模块,取消注释并将dn设置为'yes‘。

您可能需要调用rlb_ldap预先填充组信息,在尝试任何组检查之前,否则组检查只会击中一个LDAP或另一个,您将不会得到冗余。

如果使用EAP,并在innter隧道中提取LDAP信息,则需要将组成员信息存储在会话状态列表中,并在再次检查成员信息之前进行还原。

要存储LDAP组信息:

代码语言:javascript
复制
ldap
if (ok || updated) {
    update session-state {
        &LDAP-Group += &LDAP-Group[*]
    }
}

为了恢复它:

代码语言:javascript
复制
update request {
    update request {
        &LDAP-Group += &session-state:LDAP-Group[*]
    }
}

如果要在内部服务器中提取组信息,则需要将update session-state更改为update outer.session-state

另一个可能存在的问题是,您正在将rlb_ldap列在后期,但并没有覆盖该方法。这意味着当rlb_ldap被调用时,它将执行其正常的后任务,即修改LDAP目录中的用户对象以记录最后一次登录。

若要解决此问题,请将rlb_ldap调用更改为rlb_ldap.authorize,这将导致检索组成员信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58187426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档