我正在尝试通过客户端的首次登录来设置访问时间 首先,我在启用模式的文件夹操作系统版本:Ubuntu 18.04和Freeradius版本:3.0.16
中启用sqlcounter
模块
sqlcounter文件包含以下内容:
#/etc/freeradius/3.0/mods-enabled/sqlcounter
sqlcounter expire_on_login {
sql_module_instance = sql
dialect = mysql
counter_name = Expire-After-Initial-Login
check_name = Expire-After
key = User-Name
reset = never
query = "\
SELECT IFNULL( MAX(TIME_TO_SEC(TIMEDIFF(NOW(), acctstarttime))),0) \
FROM radacct \
WHERE UserName='%{${key}}' \
ORDER BY acctstarttime \
LIMIT 1;"
}
在/etc/freeradius/3.0/sites-available/default
文件中,我在
authorize {
expire_on_login
在我通过以下代码在radchceck
的{{1}}表中添加限制后:
phpmyadmin
最后通过以下命令测试用户访问权限:INSERT INTO radcheck ( id , UserName , Attribute , op , Value ) VALUES (NULL , 'zaib', 'Expire-After', '=', '3600');
。
结果是:
radtest zaib zaib localhost 1812 testing123
在 User-Name = "zaib"
User-Password = "zaib"
NAS-IP-Address = 192.168.22.101
NAS-Port = 1812
Message-Authenticator = 0x00
Cleartext-Password = "zaib"
Received Access-Reject Id 167 from 127.0.0.1:1812 to 0.0.0.0:0 length 20
(0) -: Expected Access-Accept got Access-Reject
日志输出中,我看到:
2019年5月10日星期五18:56:30:警告:(0)expire_on_login:找不到检查属性,控件:Expire-After,什么也不做...
还有:
2019年5月10日星期五18:56:30:错误:(0)找不到Auth-Type:通过Post-Auth-Type = Reject拒绝用户
我尝试将sql中的freeradius -xxX
选项从op
更改为=
,然后得到以下结果:
:=
看起来不错,但限制根本不起作用,用户可以在时段结束后访问。
在自由半径日志中,我看到了:
2019年5月10日星期五18:56:30:警告:(0)expire_on_login:找不到检查属性,控件:Expire-After,什么也不做...
并且在MySQL Sent Access-Request Id 72 from 0.0.0.0:42845 to 127.0.0.1:1812 length 74
User-Name = "zaib"
User-Password = "zaib"
NAS-IP-Address = 192.168.22.101
NAS-Port = 1812
Message-Authenticator = 0x00
Cleartext-Password = "zaib"
Received Access-Accept Id 72 from 127.0.0.1:1812 to 0.0.0.0:0 length 39
Mikrotik-Rate-Limit = "1024k/1024k"
表中,当用户登录时,我可以看到radacct
的值是这样的:acctstarttime
任何想法如何解决? 请帮助我,谢谢。