Chinaunix首页 | 论坛 | 博客
  • 博客访问: 362583
  • 博文数量: 71
  • 博客积分: 1656
  • 博客等级: 上尉
  • 技术积分: 931
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-17 10:42
文章分类

全部博文(71)

文章存档

2012年(6)

2011年(9)

2010年(4)

2009年(9)

2008年(43)

我的朋友

分类: LINUX

2011-06-17 10:18:31

FreeRadius2可以和MySQL进行集成,集成的内容包括创建符合要求的数据库和表结构,为MySQL进行的相关配置,基于数据库安装Web管理程序(如daloradius,ARA等),大部分内容可以参见

FreeRadius SQL How To:

 

0. 环境

FreeRadius2 / MySQL 5 /CentOS 5.5(VirtualBox)

 

1. 创建数据库

mysql -u root -p
  CREATE DATABASE radius;
  GRANT ALL ON radius.* TO radius@localhost IDENTIFIED BY "radpass";
  exit

上述命令创建了一个名为radius的数据库,并且创建了一个名为radius@localhost,密码为radpass的数据库用户,并赋予相应权限。

 

2. MySQL中表结构的定义

针对FreeRadius2,数据表的设计和结构定义在下面的文件中:

/etc/raddb/sql/mysql/schema.sql 主数据库定义,7个表,包括

radcheck 用户检查信息表

radreply 用户回复信息表

radgroupcheck 用户组检查信息表

radgroupreply 用户组检查信息表

radusergroup 用户和组关系表

radacct 计费情况表

radpostauth 认证后处理信息,可以包括认证请求成功和拒绝的记录。

/etc/raddb/sql/mysql/nas.sql 网络设备定义,只有一个表

nas 网络设备表

下面的表用于一些扩展功能,可以按需导入。

ippool.sql  ip池

wimax.sql wimax设备支持

cui.sql cui 支持

详细的表定义参见: 

3. 导入和建立表结构

mysql -u root -p radius < /etc/raddb/sql/mysql/schema.sql
mysql -u root -p radius < /etc/raddb/sql/mysql/nas.sql
上述命令执行schema.sql和nas.sql的sql语句,建立相应的数据库结构。

4.FreeRadius2配置,重要!! 

- radius主配置文件包括sql部分: /etc/raddb/radiusd.conf

$INCLUDE  sql.conf

否则会出现错误:

Failed to load module "sql".

同时还会影响freeradius其他模块的安装,出现错误:

E: Sub-process /usr/bin/dpkg returned an error code (1)


 

 

- 数据库设置 /etc/raddb/sql.conf,和数据库定义相符(数据库服务器、用户密码、表名称等等):

database = "mysql"
login = "radius"
password = "radpass"

- 数据库功能性定义文件: /etc/raddb/sites-available/default 
实现相关模块对数据库的支持

authorize(认证),accounting(审计),session(会话,用于监测同时连接),post_auth(记录) 子段加入sql关键字,如:

authorize {        preprocess        chap        mschap        suffix        eap        sql        pap }

--配置数据库记录所有(包括拒绝reject)认证请求

默认情况下,SQL模块仅记录认证成功的请求(可能是基于防止数据库快速增加和ddos攻击的考虑),如果我们基于统计的考虑需要开启这个功能的话,非常简单,还是在 /etc/raddb/sites-available/default  中的 post_auth区段中,找到或增加Post_Auth_Type REJECT 子类型,增加sql 关键字就可以了,它的原理是,在认证后,如果失败,就进入Post-Auth-Type REJECT子类型,如果定义了sql,系统会调用 /sql/mysql/dialup.conf 文件中的 postauth_query= 定义的sql语句进行处理。

post-auth {

....

sql

....

Post-Auth-Type REJECT { # Login failed: log to SQL database. sql }

}

5. 测试

添加测试用帐号:

mysql -u root -p

use radius

insert into radcheck (username,attribute,value,op) values ('userdbtest','Cleartext-Password','password123',':=')

使用测试帐号进行测试:

启动服务器或者使用调试模式:

service radiusd  restart

测试客户端:

radtest userdb password123 localhost 10 testing123

阅读(8913) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~