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

Freeradius配置需求:允许指定WISPr-Location-ID用户并应用属性

Hey,我来帮你搞定这个FreeRADIUS的配置问题!你已经搭好环境并实现了基础的站点拦截,现在就差让Site1用户的速率限制、超时这些属性生效了,咱们一步步来调整:

解决FreeRADIUS针对MikroTik热点的站点专属认证与属性配置问题

第一步:调整认证规则优先级,让Site1的Reply属性精准生效

你之前用了Fall-Through=1,这个参数会让认证请求继续匹配后续规则,很可能导致你配置的速率、超时属性被覆盖或者没触发。咱们要把允许Site1的规则放在最前面,匹配后直接返回所有需要的属性,不再走后续流程;其他站点的请求直接拦截。

1.1 用组统一管理Site1用户的属性(更高效)

如果是批量Site1用户,建议用FreeRADIUS的组功能来统一配置属性,不用给每个用户单独加规则。编辑/etc/freeradius/3.0/users文件:

# 先定义Site1专属组的属性
Site1-Group    Framed-Protocol = PPP,
               # MikroTik速率限制(格式:下行速率/上行速率,单位bps,这里是10M下行5M上行)
               Mikrotik-Rate-Limit = "10240k/5120k",
               # 空闲超时(3600秒=1小时)
               Idle-Timeout = 3600,
               # 并发用户数限制(1个账号只能同时登1台设备)
               Simultaneous-Use = 1

# 给Site1的用户绑定这个组
site1-user1    Cleartext-Password := "your_password",
               MemberOf = "Site1-Group"

site1-user2    Cleartext-Password := "another_password",
               MemberOf = "Site1-Group"

如果习惯用Daloradius操作,也可以在后台的Radius > Groups里创建Site1组,把这些属性添加到组的Reply属性里,再给用户分配组即可。

1.2 调整认证规则的逻辑顺序

编辑FreeRADIUS的/etc/freeradius/3.0/sites-enabled/default文件,找到authorize段,替换成下面的逻辑:

authorize {
    # 先检查请求是否来自Site1
    if (WISPr-Location-ID == "Site1") {
        # 直接允许认证,并加载Site1组的所有属性
        update control:Auth-Type := Accept
        # 把组里的属性同步到Reply里
        update reply += {
            Mikrotik-Rate-Limit = "%{config:Site1-Group/Mikrotik-Rate-Limit}"
            Idle-Timeout = "%{config:Site1-Group/Idle-Timeout}"
            Simultaneous-Use = "%{config:Site1-Group/Simultaneous-Use}"
        }
        # 停止后续规则匹配,直接返回结果
        return
    }

    # 所有非Site1的请求直接拒绝
    reject
}

第二步:确认MikroTik的RADIUS配置没毛病

路由器这边要确保能正确发送站点标识,并且接受RADIUS返回的属性:

  • 进入MikroTik的Hotspot配置,打开Server Profiles > RADIUS,勾选Send WISPr Location ID,并把Location ID设为Site1(对应站点的路由器设对应值,其他站点设不同的ID)
  • 然后在Hotspot的User Profiles里,把Rate Limit和Idle Timeout都设为RADIUS,让路由器优先使用RADIUS返回的属性,而不是本地配置。

第三步:测试配置并排查问题

  1. 先重启FreeRADIUS让配置生效:
sudo systemctl restart freeradius
  1. 开启调试模式,实时看请求和返回的细节(方便排查哪里出问题):
sudo freeradius -X
  1. 分别用Site1用户和其他站点的用户测试登录:
    • Site1用户应该能正常登录,并且调试日志里能看到返回的Mikrotik-Rate-Limit、Idle-Timeout等属性
    • 非Site1用户应该直接被拒绝,日志里会显示Reject的记录

常见坑点排查

  • 如果Reply属性还是不生效:检查FreeRADIUS的字典文件,确保/etc/freeradius/3.0/dictionary.d/dictionary.mikrotik存在,这个文件包含了MikroTik专属的属性定义
  • 并发用户数限制没效果:需要开启FreeRADIUS的simul_count模块,在authorize段里加上simul_count,并且如果用Daloradius的SQL存储,要确保sql模块配置正确,能记录在线用户信息

内容的提问来源于stack exchange,提问作者Safi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 07:37:35