Debian Lenny里面FreeRadius的一个bug

在radius的验证文件里面 有个radutmp文件 其作用和Unix/Linux里面的wtmp一样 记录了当前登录的用户和地址等信息
当我们配置完freeradius-mysql以后 我们就希望直接从数据库session来验证Simultaneous-Use,控制用户同时拨入的数量。
但是当我在/etc/freeradius/sites-enabled/default的session节里面注释掉radutmp验证后,居然Simultaneous-Use的检查失效了。
最后翻箱倒柜,终于发现了问题,在/etc/freeradius/sql/mysql/dialup.conf里面制定的simul_count_query是这样写的

[sql] simul_count_query = "SELECT COUNT(*) \
FROM ${acct_table1} \
WHERE username = '%{SQL-User-Name}' \
AND acctstoptime = NULL"

simul_verify_query = "SELECT radacctid, acctsessionid, username, \
nasipaddress, nasportid, framedipaddress, \
callingstationid, framedprotocol \
FROM ${acct_table1} \
WHERE username = '%{SQL-User-Name}' \
AND acctstoptime = NULL"[/sql]

我了个去 居然用= NULL来查询 把= NULL换成 is NULL后 问题解决
经过请教@yegle和查阅Debian的BUG ticket 确认了这是Debian lenny内freeradius-mysql 2.0.4的一个BUG在2009年的时候FreeRADIUS 2.1.7已经修复了
特地查看了一些Debian 6.0 Squeeze 内此包的配置文件 确实已经修复了
除了simul_count_query 上面还有一处 = NULL的查询是accounting_onoff_query
特此记录

Author Info :
  • From:Debian Lenny里面FreeRadius的一个bug
  • URL:https://blog.ihipop.com/2011/05/2357.html
  • Please Reserve This Link,Thanks!
  • 发表回复

    您的邮箱地址不会被公开。 必填项已用 * 标注