You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FreeRADIUS的post-auth段能否引用LDAP属性实现用户IP分配?

问题解答

可以在post-auth段中直接引用LDAP属性,你给出的写法是可行的,但需要注意几个关键点确保配置生效:

1. 确认LDAP模块已正确获取目标属性

首先要保证你的LDAP模块配置(通常在modules/ldap目录下)中,已经明确指定要检索radiusFramedIPAddress属性。需要在LDAP配置的attributes列表里添加该属性,否则FreeRADIUS无法从LDAP读取到对应值。示例配置片段:

ldap network-auth-LDAP {
    server = "你的AD服务器地址"
    base_dn = "DC=xxx,DC=company,DC=com"
    filter = "(sAMAccountName=%{%{Stripped-User-Name}:-%{User-Name}})"
    attributes = {
        radiusFramedIPAddress = radiusFramedIPAddress
        # 其他需要同步的属性...
    }
    # 其余LDAP配置项
}

2. 验证属性引用语法的正确性

你使用的%{ldap:'radiusFramedIPAddress'}是FreeRADIUS中引用LDAP属性的标准语法,但要注意:

  • 属性名需与LDAP中定义的完全一致(大小写敏感,取决于Active Directory的配置)
  • 如果该属性是多值类型,需要用%{ldap:'radiusFramedIPAddress[0]'}指定取第一个值

3. 排查此前LDAP配置中update不生效的原因

之前在LDAP模块的update段配置未生效,大概率是以下原因:

  • LDAP模块的update优先级低于post-auth段的默认处理逻辑,导致赋值被覆盖
  • 未在authorize段中正确调用LDAP模块,使得属性读取流程未触发

最终可用配置

结合你的需求,调整后的post-auth段配置如下(前提是LDAP模块已正确配置并读取到属性):

post-auth {
    if (network-auth-LDAP-Group == "xxxcompany-vpn") {
        update reply {
            Framed-Ip-Address := %{ldap:'radiusFramedIPAddress'}
        }
    } else {
        reject
    }
    Post-Auth-Type REJECT {
        attr_filter.access_reject
    }
}

配置完成后,可以通过radiusd -X启动调试模式,查看日志中是否成功读取到radiusFramedIPAddress属性,以及Framed-Ip-Address是否被正确赋值。

内容的提问来源于stack exchange,提问作者Jonathan S. Fisher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 11:01:36