当前位置:   article > 正文

linux+FreeRadius+mysql+Apache安装搭建过程

freeradius+mysql+apache

                      

linux系统:centos6.5

FreeRadius:2.2.8版本源码

mysql : Ver 14.14 Distrib 5.1.73

Apache :2.2.15


好了,由于项目需要,本人搭建了Radius服务器,网上的资料坑太多,经过几天努力,已经搭建成功,现总结一下搭建的过程,方便大家一起学习。

一、安装

 

1、安装环境openssl


Yum -y install openssl

 

2、解压freeradius-server-2.2.8.tar.gz

 

Tar zxvf freeradius-server-2.2.8.tar.gz

 

3、进入freeradius-server-2.2.8目录

./configure

Make

Make install

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

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


二、测试

1、进入路径 /usr/local/etc/raddb

2、打开users文件,在第一行插入

testing Cleartext-Password := "testing"

这行的意思是创建一个名为testing的用户,密码为testing

保存退出

3、以root身份运行 radiusd -X -X调试模式启动,注意是大写的X-f 不运行在 deamon状态下,无参数 是正常模式下启动)

 

.... adding new socket proxy address * port 59867 

 Listening on authentication address * port 1812 

 Listening on accounting address * port 1813  

 Listening on command file /usr/local/var/run/radiusd/radiusd.sock  

 Listening on authentication address 127.0.0.1 port 18120 as server inner-tunnel 

 Listening on proxy address * port 1814 

 Ready to process requests. 

 

证明服务器启动成功,等待客户端发送消息

4、另启动一个终端,进入目录/usr/local/etc/raddb中执行

radtest testing testing 127.0.0.1 0 testing123

(注释:radtest [账号] [密码] [认证位址] [NAS端口] [秘钥] 

testing123FreeRADIUSNAS的共享密钥,client.conf中有定义

5、在打印出的信息最后一行中

rad_recv: Access-Accept 那就说明本地测试认证成功

rad_recv: Access-Reject那就表示本地测试认证失败

只要在/user/local/etc/raddb/users文件中添加了测试用户,那失败的原因一般都是用户名或者密码不正确。

 

 

三、添加新用户测试

 

1、添加用户

 

编辑文件users 

#vi users  

在文件末尾添加用户,格式如下: 

steve  Cleartext-Password := "testing" 

……  

admin  Cleartext-Password := "testing" 

binbin  Cleartext-Password := "binbin"

 

2

FreeRadius安装完后默认只允许本机的client客户端访问radius服务器

 

 添加代理主机,编辑文件clients.conf 

 #vi clinets.conf  

 在文件末尾添加客户端,格式如下

添加一个子网 192.168.2.0/24 的网段可访问

client 192.168.2.0/24 {

        secret          = 111111

        shortname       = binbin

 }

 

3、关闭防火墙

Iptables -F


4、在另外一台不同IP的终端上测试

radtest binbin binbin  192.168.2.100 0 111111

192.168.2.100 是我的运行radius服务的虚拟机的IP

测试成功

 


四、FreeRadius+mysql集成

1)建立数据库

 

进入mysql后,执行:

create database radius;

来创建名为radius的数据库

2)导入数据表

进入/usr/local/etc/raddb/sql/mysql下导入和建立表结构

 

mysql -u root -p radius < /usr/local/etc/raddb/sql/mysql/schema.sql

mysql -u root -p radius < /usr/local/etc/raddb/sql/mysql/nas.sql

 

(注 意,2.1.12版本的数据库文件是scheme.sql ,这跟其他版本不同,1.1.7版本之前的数据库文件是mysql.sql ,或者rlm_mysql.sql,而且存放路径不同,2.x以上的版本是放在/usr/local/etc/raddb/sql/mysql里面

3导入完成后,可以在用命令

use radius

show tables

 

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

 

(4)配置

1、Vim  /usr/local/etc/raddb/radiusd.conf

$INCLUDE  sql.conf 前的#去掉

2vim /etc/raddb/sql.conf

取消readclients = yes 前的注释

3vim /usr/local/etc/raddb/site_enabled/default

authorize{} accounting {}中的sql前面的#去掉,并把authorize{} 中的files前加#;文件部分如下:

authorize {

chap

mschap

suffix

eap

#files

sql

pap

}

 

accounting {

detail

unix

radutmp

sql

}

4、vim /etc/raddb/sites-enabled/inner-tunnel

authorize{}模块中的

 files前加注释

取消sql前的注释

5、修改与mysql数据库连接的配置文件

Vim  /usr/local/etc/raddb/sql.conf

 

server = "localhost"

login = "root"

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

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

6、在数据库中加入测试帐号

mysql> use radius;

 

建立组信息:(这些命令不用做任何修改,直接ctrl+cctrl+v就好了)

mysql>insert into radgroupreply (groupname,attribute,op,value) values ('user','Auth-Type',':=','Local');

mysql> insert into radgroupreply (groupname,attribute,op,value) values ('user','Service-Type',':=','Framed-User');

mysql> insert into radgroupreply (groupname,attribute,op,value) values ('user','Framed-IP-Address',':=','255.255.255.255');

mysql> insert into radgroupreply (groupname,attribute,op,value) values ('user','Framed-IP-Netmask',':=','255.255.255.0');

 

 

建立用户信息:

 

mysql> insert into radcheck (username,attribute,op,value) values ('test','User-Password',':=','test');

 

将用户加入组中:

 

mysql> insert into radusergroup (username,groupname) values ('test','user');

 

添加用户回复信息:

 

mysql> insert  into radreply(username,attribute,op,value) values('test','Reply-Message','=','Yes,Good!');

 

以上命令已添加了一个user组和一个用户,用户名密码都是“test

 

 

5、测试radius 

终端运行radiusd -X,开启radius服务器

 

重新开一个shell终端来执行下面的命令

radtest test test localhost 0 testing123

 

若显示如下信息,则说明radius server安装与基本配置正常

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

Reply-Message=Yes,Good!

Framed-IP-Address = 255.255.255.255

Framed-IP-Netmask = 255.255.255.0

 

 

五、FreeRadiusweb配置

 

WEB管理的安装与配置

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

1、首先测试ApachePHP安装的正确性。

ApacheWEB目录在 /var/www/html

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

编辑一个PHP测试文件,保存为 phpinfo.php。在浏览器输入Http://127.0.0.1/phpinfo.php看到php相关信息页面,表示php运作正常。 

2、直接将freeradius-2.2.8/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.2.1                 //NAS服务器的IP地址 

nas1_port_num: 15 

nas1_community: public 

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

3、导入相关数据库表 

cd /var/www/html/dialup_admin/sql 

mysql -uroot p radius < userinfo.sql 

mysql -uroot p radius < totacct.sql 

mysql -uroot p radius < mtotacct.sql 

mysql -uroot p radius < badusers.sql 

dialup_admin用的是php3格式的文件,需要web服务器支持这种格式, 修改/etc/httpd/conf/httpd.conf文件,

在此文件最后添加 AddType application/x-httpd-php .php .html .htm .php3 

(备注:本人在/etc/httpd/conf/httpd.conf添加上面的语句后,通过Firefox连接失败,注释掉这句话后,就能连接成功,貌似没有什么影响,)

4、保存后重启httpd服务 

service httpd restart 

访问:http://localhost/dialup_admin/htdocs/index.html 

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

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

php图形界面参考http://freeradius.org/dialupadmin.html


六、常见错误

1错误信息:Refusing to start with libssl version OpenSSL 1.0.1e-fips 11 Feb 2013 (in range 1.0.1 - 1.0.1f).  Security advisory CVE-2014-0160 (Heartbleed)

For more information see http://heartbleed.com

解决:

radiusd.conf中的allow_vulnerable_openssl = no 改为:

allow_vulnerable_openssl = yes

 

2、error while loading shared libraries: libfreera....

 

解决的方法是在/etc/ld.so.conf文件中添加一行/usr/local/lib,然后在root用户下运行命令ldconfig即可

 

3、Failed binding to authentication address *port 1812:Address already in use

 

用命令lsof -i:1812查看占用进程,应该就是freeradius本身,kill该进程,然后重新# radiusd -X便可以运行服务程序了

 

 

4、/usr/local/etc/raddb/sql.conf[22]: Instantiation failed for module "sql"

 

重新编译安装一下数据库模块,sql的目录是在安装目录在FreeRadius代码的目录/src/modules/rlm_sql/drivers/rlm_sql_mysql

后者重启一下吗mysql服务,service mysqld restart

 


 


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/178198
推荐阅读
相关标签
  

闽ICP备14008679号