针对VPN服务的FreeRadius管理

TODO: 定制FreeRadius的详细设置,修改一些sql脚本

TODO: 解决这个问题:

Sun Jun 25 17:59:07 2017 : Warning: rlm_sql (sql): You probably need to lower "min"
Sun Jun 25 17:59:08 2017 : Info: rlm_sql (sql): 0 of 3 connections in use.  Need more spares
Sun Jun 25 17:59:08 2017 : Info: rlm_sql (sql): Opening additional connection (2554)

使用SQL语句FreeRadius删除僵尸用户:

仅仅删除这些僵尸记录是没有用的,因为radius服务器会再次自动生成这些数据。要使用SQL语句将AccStopTime更新才能制止住这些无效数据。

UPDATE radacct SET AcctStopTime = FROM_UNIXTIME(unix_timestamp(AcctStartTime) + AcctSessionTime),AcctTerminateCause = 'NoStopRecv', AcctSessionTime = AcctSessionTime + 300 WHERE AcctStopTime is null AND (unix_timestamp(now()) - (unix_timestamp(AcctStartTime) + AcctSessionTime)) > 400 AND AcctSessiontime > 0 ;

UPDATE radacct SET AcctStopTime = AcctStartTime, AcctTerminateCause = 'NoStop-AliveRecv' WHERE AcctStopTime is null AND AcctSessionTime = 0 AND (unix_timestamp(now()) - unix_timestamp(AcctStartTime)) > 400 ;

删除无效的连接记录(比较耗时,估计会造成一段时间的锁表,慎用!)
DELETE FROM radacct WHERE AcctStopTime > 0 AND AcctSessionTime = 0 AND AcctStopTime <= DATE_SUB(CURDATE(),INTERVAL 7 DAY);

将这些SQL放到脚本中,然后每隔3分钟执行一次。

参考:

为VPN服务配置FreeRadius

在文件/etc/raddb/dictionary最后增加一些属性:

ATTRIBUTE       PPPD-Upstream-Speed-Limit       230     integer
ATTRIBUTE       PPPD-Downstream-Speed-Limit     231     integer

ATTRIBUTE       Max-Monthly-Traffic     3003    integer
ATTRIBUTE       Monthly-Traffic-Limit   3004    integer
ATTRIBUTE       Monthly-Traffic         3005    integer
ATTRIBUTE       Suspend-Use             3006    string

ATTRIBUTE       Max-Daily-Traffic       3007    integer
ATTRIBUTE       Daily-Traffic-Limit     3008    integer
ATTRIBUTE       Daily-Traffic           3009    integer

参考资料

Share Comments
comments powered by Disqus