rlm sql mysql.so_找了好久,终于找到一篇关于FREERADIUS新版的安装说明。和以前的1.X.X还是有很大不同的。...

一、安装openssl

二、安装mysql

直接用命令#yun groupinstall "MySQL

Database"安装MySQL数据库。

安装好后,#service mysqld start 启动数据库。

使用#netstat

-nax查看3306端口是否在使用,从而确定安装是否成功。

#mysqladmin -u root password 'password'

修改root的密码

#mysql -u root -p

Enter password:

进入mysql,查看数据库是正常使用。正常使用则退出。

三,安装freeradius

最新的freeradius的版本是2.1.3。

下载后解压缩,进入解压缩后的目录:

#./config

#make

#make install

安装完后,可以使用命令#radiusd -x

进入radiusd服务器的调试模式,如果能进入则安装成功。

安装成功后freeradius的配置文件的路径是:usr/local/etc/raddb/

日志文件的路径是:usr/local/var/log

一般以上过程不会出问题,主要的问题在于配置。

四、配置过程

登陆mysql:

#mysql -u root -p

Enter password:

创建数据库:creat database radius;

exit退出数据库。

进入usr/local/etc/raddb/sql/mysql下

#mysql -u root -p radius

(注意,2.1.1版本的数据库文件是scheme.sql

,这跟其他版本不同,1.1.7版本之前的数据库文件是mysql.sql ,或者rlm_mysql.sql,而且存放路径不同)

导入后,可以在用命令

#use radius

#show tabels;看到以下数据库表:

+------------------+

| Tables_in_radius |

+------------------+

| radacct |

| radcheck |

| radgroupcheck |

| radgroupreply |

| radpostauth |

| radreply |

| radusergroup |

+------------------+

修改usr/local/etc/raddb/site_enabled下的defoult文件(2.1.1与1.1.7不同,radius.conf被分成了几个部分,authorize

被放在了defoult文件下,请注意),把authorize{} 、accounting

{}中的sql前面的#去掉,并把authorize{} 中的files前加#;如下示:

authorize {

chap

mschap

suffix

eap

#files

sql

pap

}

accounting {

detail

unix

radutmp

sql

}

修改与mysql数据库连接的配置文件/usr/local/etc/raddb/sql.conf,

server = "localhost"

login = "root"

password = "数据库root的登陆密码"

radius_db = "radius" //radius为数据库名

修改客户端信息配置文件:/usr/local/etc/raddb/clients.conf

client 127.0.0.1 {

secret = testing123

shortname = localhost

nastype = other

}

在数据库中加入测试帐号

#mysql -u root -p

Enter password:

mysql> use radius;

建立组信息:

mysql> insert into radgroupreply

(groupname,attribute,op,value) values

('user','Auth-Type',':=','Local');

Query OK, 1 row affected (0.01 sec)

mysql> insert into radgroupreply

(groupname,attribute,op,value) values

('user','Service-Type',':=','Framed-User');

Query OK, 1 row affected (0.00 sec)

mysql> insert into radgroupreply

(groupname,attribute,op,value) values

('user','Framed-IP-Address',':=','255.255.255.255');

Query OK, 1 row affected (0.00 sec)

mysql> insert into radgroupreply

(groupname,attribute,op,value) values

('user','Framed-IP-Netmask',':=','255.255.255.0');

Query OK, 1 row affected (0.01 sec)

建立用户信息:

mysql> insert into radcheck

(username,attribute,op,value) values

('test','User-Password',':=','test');

Query OK, 1 row affected (0.00 sec)

将用户加入组中:

mysql> insert into usergroup

(username,groupname) values ('test','user');

Query OK, 1 row affected (0.01 sec)

mysql>exit;退出数据库

测试radius

#radiusd -X

#radtest test test localhost 0

testing123

Sending Access-Request of id 222 to

127.0.0.1 port 1812

User-Name = "test"

User-Password = "test"

NAS-IP-Address = 127.0.0.1

NAS-Port = 0

rad_recv: Access-Accept packet from

host 127.0.0.1 port 1812, id=222, length=38

Service-Type = Framed-User

Framed-IP-Address = 255.255.255.255

Framed-IP-Netmask = 255.255.255.0

如果显示如上信息,则恭喜,freeradius安装配置成功。

一、安装openssl

二、安装mysql

直接用命令#yun groupinstall "MySQL

Database"安装MySQL数据库。

安装好后,#service mysqld start 启动数据库。

使用#netstat

-nax查看3306端口是否在使用,从而确定安装是否成功。

#mysqladmin -u root password 'password'

修改root的密码

#mysql -u root -p

Enter password:

进入mysql,查看数据库是正常使用。正常使用则退出。

三,安装freeradius

最新的freeradius的版本是2.1.3。

下载后解压缩,进入解压缩后的目录:

#./config

#make

#make install

安装完后,可以使用命令#radiusd -x

进入radiusd服务器的调试模式,如果能进入则安装成功。

安装成功后freeradius的配置文件的路径是:usr/local/etc/raddb/

日志文件的路径是:usr/local/var/log

一般以上过程不会出问题,主要的问题在于配置。

四、配置过程

登陆mysql:

#mysql -u root -p

Enter password:

创建数据库:creat database radius;

exit退出数据库。

进入usr/local/etc/raddb/sql/mysql下

#mysql -u root -p radius

(注意,2.1.1版本的数据库文件是scheme.sql

,这跟其他版本不同,1.1.7版本之前的数据库文件是mysql.sql ,或者rlm_mysql.sql,而且存放路径不同)

导入后,可以在用命令

#use radius

#show tabels;看到以下数据库表:

+------------------+

| Tables_in_radius |

+------------------+

| radacct |

| radcheck |

| radgroupcheck |

| radgroupreply |

| radpostauth |

| radreply |

| radusergroup |

+------------------+

修改usr/local/etc/raddb/site_enabled下的defoult文件(2.1.1与1.1.7不同,radius.conf被分成了几个部分,authorize

被放在了defoult文件下,请注意),把authorize{} 、accounting

{}中的sql前面的#去掉,并把authorize{} 中的files前加#;如下示:

authorize {

chap

mschap

suffix

eap

#files

sql

pap

}

accounting {

detail

unix

radutmp

sql

}

修改与mysql数据库连接的配置文件/usr/local/etc/raddb/sql.conf,

server = "localhost"

login = "root"

password = "数据库root的登陆密码"

radius_db = "radius" //radius为数据库名

修改客户端信息配置文件:/usr/local/etc/raddb/clients.conf

client 127.0.0.1 {

secret = testing123

shortname = localhost

nastype = other

}

在数据库中加入测试帐号

#mysql -u root -p

Enter password:

mysql> use radius;

建立组信息:

mysql> insert into radgroupreply

(groupname,attribute,op,value) values

('user','Auth-Type',':=','Local');

Query OK, 1 row affected (0.01 sec)

mysql> insert into radgroupreply

(groupname,attribute,op,value) values

('user','Service-Type',':=','Framed-User');

Query OK, 1 row affected (0.00 sec)

mysql> insert into radgroupreply

(groupname,attribute,op,value) values

('user','Framed-IP-Address',':=','255.255.255.255');

Query OK, 1 row affected (0.00 sec)

mysql> insert into radgroupreply

(groupname,attribute,op,value) values

('user','Framed-IP-Netmask',':=','255.255.255.0');

Query OK, 1 row affected (0.01 sec)

建立用户信息:

mysql> insert into radcheck

(username,attribute,op,value) values

('test','User-Password',':=','test');

Query OK, 1 row affected (0.00 sec)

将用户加入组中:

mysql> insert into usergroup

(username,groupname) values ('test','user');

Query OK, 1 row affected (0.01 sec)

mysql>exit;退出数据库

测试radius

#radiusd -X

#radtest test test localhost 0

testing123

Sending Access-Request of id 222 to

127.0.0.1 port 1812

User-Name = "test"

User-Password = "test"

NAS-IP-Address = 127.0.0.1

NAS-Port = 0

rad_recv: Access-Accept packet from

host 127.0.0.1 port 1812, id=222, length=38

Service-Type = Framed-User

Framed-IP-Address = 255.255.255.255

Framed-IP-Netmask = 255.255.255.0

如果显示如上信息,则恭喜,freeradius安装配置成功。

心得:

如果接收到类似于这样的信息:rad_recv: Access-Reject

packet from host 127.0.0.1 port 1812, id=222, length=38。

可以到usr/local/var/log去查看freeradius的日志。在安装过程我就接收到这样的信息,百思不得其解,以为是安装出了问题,后来是查看日志,发现如下信息:

141 WARNING: Found User-Password ==

"...".

142 WARNING: Are you sure you don't

mean Cleartext-Password?

143 WARNING: See "man rlm_pap" for more

information.

144 rlm_sql: Failed to create the pair:

Invalid octet string "Yes,Good!" for attribute name

"Repley-Message"

145 rlm_sql (sql): Error getting data

from database

146 [sql] SQL query error; rejecting

user

147 rlm_sql (sql): Released sql socket

id: 1

从而发现我在表radrepley中的数据记录内容是错误的,删除这条记录后,问题得到解决

出错

1、如果出现“rlm_sql (sql): Could not link

driver rlm_sql_mysql: rlm_sql_mysql.so: cannot open shared object

file: No such file or directory

”找不到驱动包的错误,就要

a:先安装mysql-devel

b:然后进入到freeradius的安装文件目录下的src/modules/rlm_sql/drivers/rlm_sql_mysql

运行命令:./configure --with-mysql-dir=/usr/share/mysql/

--with-mysql-lib-dir=/usr/lib/mysql/

c:make;make

intall 这时候会把rlm_sql_mysql的驱动安装到/usr/local/lib目录下,但是必须把这些驱动copy到/usr/lib目录下才能正常运行:#cp

-a /usr/local/lib/rlm_sql_mysql* /usr/lib

还有可能出现关于eap的错误,说什么server.pem证书读取失败,实际上server.pem证书根本没有.进到/usr/local/etc/raddb/certs/目录下.运行里面的bootstrap文件#./bootstrap

会自动创建证书.实在不明白,里面还有个README文件可做参考.

五、WEB管理的安装与配置

服务器搭建成功后如果需要web管理,freeradius自带了一个web管理程序dialup_admin。

首先测试Apache与PHP安装的正确性。Apache的WEB目录在

/var/www/html 下首先测试Apache,在浏览器输入 Http://127.0.0.1 下看到Apache界面表示正常。

编辑一个PHP测试文件,内容为 < phpinfo >,保存为

phpinfo.php。在浏览器输入Http://127.0.0.1/phpinfo.php

看到php相关信息页面,表示php运作正常。

直接将/usr/local/src/freeradius-1.1.0/dialup_admin/文件夹全部拷贝到Apache网页目录下/var/www/html下。

修改dialup_admin/conf/下的admin.conf文件中的如下参数:

sql_type:mysql

sql_server:localhost //sql地址

sql_port:3306 //默认端口

sql_username:root

sql_password:123456 //密码

sql_database:radius //数据库名

general_charset: UTF-8 //避免浏览器乱码

general_base_dir:

/var/www/html/dialup_admin //dialup_admin主目录

general_domain: company.com

//这个可改也可不改,没什么影响,改了还看点而已

general_radius_server_auth_proto: chap

//将pap改成chap

general_encryption_method: clear

//将crypt改成clear

说明一下,general_encryption_method:

clear是必须得改的,否则用web管理界面添加用户后会出现密码被加密后无法识别导致认证失败,clear方式是以明文存储密码,freeradius默认是用明文存储密码,两者要对应,所以这里要用clear方式。

修改dialup_admin/conf/下的naslist.conf文件如下

nas1_name: nas1.%{general_domain}

nas1_model: Computer //NAS服务器的类型

nas1_ip: 192.168.1.1 //NAS服务器的IP地址

nas1_port_num: 15

nas1_community: public

其他的通通删掉或用#号注释掉,这样修改的目的是方便在web管理界面中直观的看到每个NAS服务器连接用户的情况。

导入相关数据库表

cd /var/www/html/dialup_admin/sql

mysql -uroot –p123456 radius <

userinfo.sql

mysql -uroot –p123456 radius <

totacct.sql

mysql -uroot –p123456 radius <

mtotacct.sql

mysql -uroot –p123456 radius <

badusers.sql

dialup_admin用的是php3格式的文件,需要web服务器支持这种格式,

修改/etc/httpd/conf/httpd.conf文件,在此文件最后添加

AddType application/x-httpd-php .php

.html .htm .php3

保存后重启httpd服务

service httpd restart

能正常打开各页面就ok了。默认是打开的sql调试模式。可以在admin.conf中找到sql_debug.把true改为false即可关闭。

至此,整个Radius服务器搭建完成。

如果要对其他NAS服务器提供验证服务,只需修改/usr/local/etc/raddb下的clients.conf文件,在后面加上

client 192.168.1.1 {

//IP地址修改为NAS服务器的地址

secret = testing123

//NAS服务器与Radius服务器通信的密码

shortname = NAS //这个无所谓,随便填

nastype = other

}

心得:

如果接收到类似于这样的信息:rad_recv: Access-Reject

packet from host 127.0.0.1 port 1812, id=222, length=38。

可以到usr/local/var/log去查看freeradius的日志。在安装过程我就接收到这样的信息,百思不得其解,以为是安装出了问题,后来是查看日志,发现如下信息:

141 WARNING: Found User-Password ==

"...".

142 WARNING: Are you sure you don't

mean Cleartext-Password?

143 WARNING: See "man rlm_pap" for more

information.

144 rlm_sql: Failed to create the pair:

Invalid octet string "Yes,Good!" for attribute name

"Repley-Message"

145 rlm_sql (sql): Error getting data

from database

146 [sql] SQL query error; rejecting

user

147 rlm_sql (sql): Released sql socket

id: 1

从而发现我在表radrepley中的数据记录内容是错误的,删除这条记录后,问题得到解决

出错

1、如果出现“rlm_sql (sql): Could not link driver rlm_sql_mysql:

rlm_sql_mysql.so: cannot open shared object file: No such file or

directory

”找不到驱动包的错误,就要

a:先安装mysql-devel

b:然后进入到freeradius的安装文件目录下的src/modules/rlm_sql/drivers/rlm_sql_mysql

运行命令:./configure --with-mysql-dir=/usr/share/mysql/

--with-mysql-lib-dir=/usr/lib/mysql/

c:make;make

intall 这时候会把rlm_sql_mysql的驱动安装到/usr/local/lib目录下,但是必须把这些驱动copy到/usr/lib目录下才能正常运行:#cp

-a /usr/local/lib/rlm_sql_mysql* /usr/lib

还有可能出现关于eap的错误,说什么server.pem证书读取失败,实际上server.pem证书根本没有.进到/usr/local/etc/raddb/certs/目录下.运行里面的bootstrap文件#./bootstrap

会自动创建证书.实在不明白,里面还有个README文件可做参考.


版权声明:本文为weixin_29483853原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。