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 支持
详细的表定义参见: http://wiki.freeradius.org/MySQL_DDL_script
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 -puse radiusinsert into radcheck (username,attribute,value,op) values ('userdbtest','Cleartext-Password','password123',':=')使用测试帐号进行测试:启动服务器或者使用调试模式:service radiusd restart测试客户端:radtest userdb password123 localhost 10 testing123
要安装整套的IC-RADIUS,首先我们需要如表9所示的几个软件包。需要说明一下:表9中的源码包都是免费得到的,它们可以帮助我们架设一个完整的RADIUS应用环境。
软件源码包 说明
mysql-3.23.39.tar.gz MySQL数据库系统
DBI-1.18.tar.gz Perl调用数据库的通用接口
Msql-Mysql-modules-1.2216.tar.gz Perl DBI针对MySQL的Driver,即DBD for MySQL
RadiusPerl-1.05.tar.gz Perl对Radius的Authen模块
icradius-0.18.1.tar.gz IC-RADIUS源码包
假设所有的原码包都被拷贝到了/usr/tmp目录下了。
安装MySQL
1.解压源码包:
CODE
Linux]#cd /usr/tmp
Linux]#gzip zxvf mysql-3.23.39.tar.gz
Linux]#cd mysql-3.23.39
2.配置参数,安装软件:
//将mysql安装在/usr/local/mysql中
CODE
Linux]#./configure prefix=/usr/local/mysql
Linux]#make //编译,时间有点长,要有耐心
Linux]#make install //安装到/usr/local/mysql中
3.创建初始数据库:
CODE
Linux]#cd /usr/local/msyql/bin
Linux]#./mysql_install_db
4.创建共享库链接
CODE
Linux]#ldconfig //更新系统共享库链接
5.复制启动/停止脚本:
L
CODE
inux]#cp /usr/tmp/mysql-3.23.39/support-files/mysql.server \
/etc/rc.d/init.d/mysql.server
6.复制并修改初始化配置文件:
CODE
Linux]#cp /usr/tmp/mysql-3.23.39/support-files/my-medium.cnf \
/etc/my.cnf
使用vi打开my.cnf,在[client]下加入user=root,password处留空。
7.改变root口令:
CODE
Linux]#mysqladmin u root p password ‘新口令’
8.如果有多个版本的mysql共存
在/etc/my.cnf的[mysqld]下加入:
CODE
1. Log-bin
2. Server-id=1 //必须是唯一的,以区别于其他的mysql.server的id
安装DBI
CODE
Linux]#cd /usr/tmp
Linux]#tar zxvf DBI-1.18.tar.gz
Linux]#cd DBI-1.18
Linux]#perl Makefile.PL
Linux]#make test
//如果测试不通过,则使用make test TEST_VERBOSE=1
Linux]#make install
安装DBD for MySQL
CODE
Linux]#cd /usr/tmp
Linux]#tar zxvf Msql-Mysql-modules-1.2216.tar.gz
Linux]#cd Msql-Mysql-modules-1.2216
Linux]#perl Makefile.PL
这时,系统开始和用户交互,如下:
MySQL only
mSQL only (either of mSQL 1 or mSQL 2)
MySQL and mSQL (either of mSQL 1 or mSQL 2)
mSQL 1 and mSQL 2
MySQL,mSQL1andmSQL2
Enter the appropriate number: [3] 1
在我们这里的需求,应该回答1(说明此模块是同时for MySQL和mSQL的)
Do you want to install the MysqlPerl emulation? You might keep your old Mysql module (to be distinguished from DBD::mysql!) if you are concerned
about compatibility to existing applications! [n] n 这里回答n
Where is your MySQL installed? Please tell me the directory that
contains the subdir 'include'. [/usr/local/mysql]?
这是缺省的mysql安装目录,我们已经按照上面的方式安装,则MySQL自动被安装到这个目录下,则这里直接回车即可
Which database should I use for testing the MySQL drivers? [test]
直接回车即可
On which host is database test running (hostname, ip address
or host:port) [localhost]?
若mysql服务器和icradius服务器安装在同一个服务器上 则这里直接回车即可
User name for connecting to database test? [undef] root?
root Password for connecting to database test? [undef] passwd?
这里输入mysql的root用户的密码
make
make test
make install
安装RadiusPerl:Authen模块
CODE
Linux]#cd /usr/tmp
Linux]#tar zxvf RadiusPerl-0.05.tar.gz
Linux]#cd RadiusPerl-0.05
Linux]#perl Makefile.PL
Linux]#make
Linux]#make test
Linux]#make install
安装IC-RADIUS
1. 安装软件:
CODE
Linux]#cd /usr/tmp
Linux]#tar zxvf icradius-0.18.1.tar.gz
Linux]#cd icradius-0.18.1
Linux]#cp Makefile.lnx Makefile
Linux]#make
Linux]#make install
2.创建radius数据库:
CODE
Linux]#cd scripts
Linux]#mysql u root p mysql
Mysql>create database radius//创建radius数据库
//添加radius用户
Mysql>grant all on radius.* on radius@localhost identified by ‘radius’
Linux]#mysqladmin u root p refresh //刷新数据库内容
3.导入数据表:
CODE
Linux]# mysql -u root -pyourpassword radius <radius.db
修改dictimport.pl,设置
my $dbusername = 'radius'
my $dbpassword = 'radius'
然后,导入dictionary内容,使radius.dictionary数据表中包含了基本的属性(ATTRIBUTE)和属性值(VALUE)等信息。
CODE
Linux]# ./dictimport.pl ../raddb/dictionary
Radius数据库结构如表10所示。
Radius数据库
dictionary radgroupcheck
hints radgroupreply
nas radreply
radacct realmgroup
radact_summary realms
radcheck usergroup
4. 启动radiusd
CODE
Linux]#cd /etc/rc.d/init.d
Linux]#radiusd start
这样,我们已经在Linux上成功的安装了一个完整的RADIUS服务器,你可以体验一下RADIUS服务器运行的感觉了。若你对RADIUS协议的开发还兴趣的话,你可以在此基础上做深入的研究。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)