freeradius 性能优化

Posted 坐看云起时

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了freeradius 性能优化相关的知识,希望对你有一定的参考价值。

目前freeradius 使用线程池多线程的方案处理,radius认证报文,自己内部维持一个状态机。网络模型为监听1812的认证端口,以及1813的计费端口。

linux搭建freeradius服务器

相关网站

Freeradius下载链接   https://github.com/FreeRADIUS/freeradius-server/tree/v3.0.x

系统版本: CentOS Linux release 7.3.1611 (Core)

freeradius:https://github.com/FreeRADIUS/freeradius-server/archive/v3.0.x.zip

我的系统上面什么都没有安装,这里要下载一些需要的包,这里说明下,我使用yum安装php RPM包的时候会自动安装apache服务,所以这里我就不安装apache了,如果你们的php RPM包中没有Apache就用yum install -y httpd安装下。

yum install -y php php-gd wget gcc gcc-c++ unzip php-mysql libtalloc-devel freeradius-mysql

daloRADIUS管理界面需要用到php-pear-DB,但是centos默认的yum源中没有这个包,所以这里使用go-pear来进行安装。

wget http://pear.php.net/go-pear.phar

php go-pear.phar

技术分享

这里我们选择路径安装,直接回车安装在默认路径就可以了

vi /etc/profile   在最后一行添加下面的配置(在vi视图中使用大写的GG可以直接到最后一行)

export PATH=/usr/bin/pear:$PATH

pear的系统环境就添加好了,保存退出

source /etc/profile

重新加载系统环境

pear install db

这样php-pear-DB包就安装好了

这里询问要修改/etc/php.ini文件,这里我们选择y,让其修改php配置文件

在防火墙上面放行我们需要用到的端口,freeradius需要用到1812和1813端口,1812端口用来认证,1813端口用来计费

还需要放行80端口或443端口

firewall-cmd --permanent --zone=public --add-service=http

firewall-cmd --permanent --zone=public --add-service=https

firewall-cmd --permanent --zone=public --add-port=1812/tcp

firewall-cmd --permanent --zone=public --add-port=1813/tcp

firewall-cmd --reload

firewall-cmd --state

可以用来查看防火墙是否是启用的

下面安装mysql数据库

wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm

rpm -ivh mysql-community-release-el7-5.noarch.rpm

yum install mysql-community-server mysql-devel

service mysqld start

启动mysql数据库

/usr/bin/mysqladmin -u root password "123456"

用来设置mysql初始密码

到此LAMP平台和freeradius和dalofreeradius管理平台所需要的包都安装完成了,接下来就开始安装freeradius和dalofreeradius。

wget https://github.com/FreeRADIUS/freeradius-server/archive/v3.0.x.zip

unzip v3.0.x.zip

cd freeradius-server-3.0.x/

./configure --with-openssl=no && make && make install

cd /usr/local/etc/raddb/

vi /usr/local/etc/raddb/users

技术分享

将箭头处的#去掉。然后保存退出。

运行 radiusd -X  调试freeradius ,在开一个窗口

技术分享

radtest steve testing localhost 1812 testing123

运行上面的命令,如果看到上图的中的提示,说明freeradius搭建成功了。

这样用文件来管理设备,会十分的复杂和难以管理,所以这里我们使用一个web图形化管理和用mysql数据库来存储数据

由于dalofreeradius图形化管理有点问题,所以这里要修改下freeradius的数据库

vi /usr/local/etc/raddb/mods-config/sql/ippool/mysql/schema.sql

技术分享

为所有字段加上默认值。

cd /usr/local/etc/raddb/mods-config/sql/main/mysql

mysql -uroot -p

mysql> cerate database radius;

mysql> use radius;

mysql> source /usr/local/etc/raddb/mods-config/sql/main/mysql/schema.sql;

freeradius 数据库就添加完了,接下来要设置freeradius关联mysql数据库

vi /usr/local/etc/raddb/sites-enabled/default

编辑default文件,利用vi文字搜索将所有files和radutmp在前面加#号注释掉,在搜索sql文本,将sql文本全部取消注释,取消#号就可以了。

技术分享

将rlm_sql_null修改为rlm_sql_mysql

技术分享

将数据库设置注释(#)取消掉,然后在添加数据库信息

技术分享

将注释(#)取消,如果注释该配置,表示从clients文件中读取nas数据,取消该注释,表示从mysql数据库中读取nas数据

ln -s /usr/local/etc/raddb/mods-available/sql /usr/local/etc/raddb/mods-enabled/sql

由于freeradius需要读取mods-enabled目录下的sql文件,而mods-enabled没有这个sql文件,所以这里从mods-available中把sql做一个链接,也可以在复制sql文件到mods-enabled,但是如果需要修改sql文件,就需要修改两个目录中的sql文件,所以这里我用了一个链接,只需要修改一个sql文件即可

cp /usr/local/sbin/rc.radiusd /etc/init.d/radiusd

将freeradius启动文件复制到/etc/init.d/目录中

到此freeradius就安装完成了,下面来安装daloradius 管理界面

cd /var/www/html

wget https://nchc.dl.sourceforge.net/project/daloradius/daloradius/daloradius0.9-9/daloradius-0.9-9.tar.gz

tar zxvf daloradius-0.9-9.tar.gz

mv daloradius-0.9-9 dalor

vi /var/www/html/daloradius/library/daloradius.conf.php

技术分享

添加数据库信息

技术分享

第一处标记出来的是proxy.conf文件目录,该文件在freeradius服务的根目录中

第二处标记出来的是dolaradius安装目录,我将dolaradius放在了/var/www/html目录中

技术分享

看到dolaradius有报错,但是用户还是添加成功了,这是因为dolaradius非常的老了,已经好久没更新,mysql数据库有某些地方改动增加安全性,所以这里要对mysql数据库进行一些修改

vi /etc/my.cnf

技术分享

将STRICT_TRANS_TABLES配置删除即可。

重启mysql数据库

service mysqld restart

现在在新建用户就不会出现错误了

到此dolaradius也安装完成了


本文出自 “技术交流” 博客,转载请与作者联系!

以上是关于freeradius 性能优化的主要内容,如果未能解决你的问题,请参考以下文章

linux搭建freeradius服务器

freeradius3安装和拓展需求

安装freeradius,输入make后报错,但是不知道错在啥地方,求助,报错如下:

CentOS7源码编译安装FreeRadius3.17

FreeRadius3.0 带 ldap 配置

Freeradius:Open Directory 存在问题,不存在 rlm_opendirectory.*