freeradius与mySQL联用的最简单例程失败,不知原因出在哪里

freeradius与mySQL联用的最简单例程失败,不知原因出在哪里,第1张

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 支持

详细的表定义参见: 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协议的开发还兴趣的话,你可以在此基础上做深入的研究。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7343828.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-04
下一篇 2023-04-04

发表评论

登录后才能评论

评论列表(0条)

保存