freeradius编译安装+mysql配置
参考文档:
freeradius 官网的wiki
http://wiki.freeradius.org/Home
ubuntu freeradius搭建教程
http://yustanto.com/freeradius.pdf
http://blog.csdn.net/u013686990/article/details/38079653
gcc安装编译(freeradius需要gcc支持)
http://blog.csdn.net/u012822903/article/details/68934793
freeradius+mysql配置
http://blog.chinaunix.net/uid-9967220-id-1995615.html
官方文档--详细介绍配置文件及属性
http://networkradius.com/doc/current/introduction/RADIUS.html
梳理一下流程:
最好是参考官方文档去操作,官方文档搞不定在去搜。
官方文档的几个步骤:
主要就是这几步。
安装环境:ubuntu14.0
官方根据不同系统给了不同的wiki:

这里按照ubuntu的流程操作:
注意下面是从github下载源码,编译安装的步骤,嫌步骤繁琐的直接用apt-get方式安装吧:
apt-cache search freeradius //找一下相关软件
apt-get install freeradius //装freeradius
apt-get install freeradius-mysql mysql-server //需要mysql数据的,顺便再装个mysql和freeradius的mysql插件
装好的freeradius在 /etc/freeradius路径下。
一、Building and installing
1.下载二进制包
wget https://github.com/FreeRADIUS/freeradius-server/archive/v3.0.15.zip
unzip v3.0.15.zip
cd freeradius-server-3.0.15/
2.编译安装
//这里需要安装其他模块的需要将模块名称加入到 src/modules/stable文件中,比如:$ echo rlm_jradius>>src/modules/stable。具体参考第四步: Radius Clients
tar -zxvf freeradius-server-3.0.15.tar.gz
./configure
make
sudo make install
如果不指定 ./configure --prefix=路径
- 默认的配置文件在/usr/local/etc路径下。
- 可执行文件默认放在/usr /local/bin,
- 库文件默认放在/usr/local/lib
- 记账(计费)的默认路径 /usr/local/var/log/radius/radacct
./configure 执行时,根据提示,缺什么去安装什么,一步一步慢慢来,比如说你可能会却少gcc环境,见下:
由于freeradius安装依赖gcc,如果gcc没安装,编译安装就不通过。官网给的gcc对应ubuntu版本说明:
Older versions of Debian and Ubuntu use GCC < 4.8, which lacks support for the C11 features needed to build FreeRADIUS >= v3.1.x.
我安装时是网上单独找的教程,参考第三个链接。
apt-get install libc6-dev libgmp-dev libmpfr-dev texinfo
官方给的gcc安装依赖:
sudo apt-get install libssl-dev libtalloc-dev libkqueue-dev
安装gcc:
1. 下载&解压源码
$ wget http://ftp.gnu.org/gnu/gcc/gcc-4.1.2/gcc-4.1.2.tar.bz2
$ tar xvjf gcc-4.1.2.tar.bz2
2. 安装依赖库, 以及软件
$ sudo apt-get install libc6-dev libgmp-dev libmpfr-dev texinfo
3. 为头文件以及所需库添加链接
添加如下链接, 这取决于你的 Ubuntu 系统架构, 如果你使用的是64位的ubuntu系统应当使用x86_64-linux-gnu替代i386-linux-gnu
$ cd /usr/include
$ sudo ln -s i386-linux-gnu/bits bits
$ sudo ln -s i386-linux-gnu/gnu gnu
$ sudo ln -s i386-linux-gnu/sys sys
$ sudo ln -s i386-linux-gnu/asm asm
$ cd /usr/lib
$ sudo ln -s i386-linux-gnu/crt1.o crt1.o
$ sudo ln -s i386-linux-gnu/crti.o crti.o
$ sudo ln -s i386-linux-gnu/crtn.o crtn.o
4. 编译gcc
$ cd gcc-4.1.2
$ mkdir build
$ cd build
$ ../configure --prefix=/usr/local/ --program-prefix=sse- --libexecdir=/usr/local/lib --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu --disable-multilib --enable-languages=c,c++ $ make bootstrap
$ make install
5.进入bin目录下,查看gcc是否安装好
$ cd /usr/local/bin
$ ll *gcc*
会有下面四个文件说明安装成功了:
sse-gcc*
sse-gccbug*
x86_64-unknown-linux-gnu-gcc-4.1.2*
x86_64-unknown-linux-gnu-sse-gcc*
官方给的三个 Hard dependencies

具体参考官网。注意安装的freeradius版本和gcc版本。
二、Configuration
1.这里如果不用mysql,用本地文件file的方式存放radius用户信息的话,不需要做mysql的配置。
这里就可以调试了,
freeradius的启动/关闭/重启
radiusd start/stop/restart //编译安装的freeradius用的是这个命令,默认不会开机自启动
service freeradius start/stop/restart //直接apt安装,使用这个命令启动,默认开机自启动
radiusd -X (或freeradius -X ---apt方式安装的用这个命令)这个命令是进入调试模式,会把后台各个log日志打印到shell窗口,以便分析(可以不用)
进入安装目录,编辑users文件,将下面图片内容的注释去掉
cd /usr/local/etc/raddb // 或cd /etc/freeradius
vim users

再打开另一个终端做客户端,输入命名
radtest steve testing localhost 1812 testing123
回复 rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=66, length=20 说明装成功了。
2.这里按照mysql的方式做配置。
所以首先安装一下mysql和freeradius的sql插件
编译源码方式:
编译源码时,其实已经装好freeradius的sql插件了,可以看下freeradius路径下 src/modules/stable,里边有个rlm_sql就是sql模块,默认是安装的。mysql自己装,网上好多教程。 //apt安装方式
//apt-get install freeradius-mysql
//apt-get install mysql-server
官方给的主要配置文件:
Main configuration files
- radiusd.conf
- clients.conf
- modules configuration
- sites configuration
- proxy.conf
- policy.d (previously
policy.confin v2)
radius.conf 将$INCLUDE sql.con反注释,我们需要使用sql模块。
radius.conf 中有各个目录的配置路径,其中 libdir: Where to find the rlm_* modules.这个目录是模块的安装目录,可以在这个目录下查看都安装了那些模块,都是以.so结尾的文件。
.....
prefix = /usr
exec_prefix = /usr
sysconfdir = /etc
localstatedir = /var
sbindir = ${exec_prefix}/sbin
logdir = /var/log/freeradius
raddbdir = /etc/freeradius
radacctdir = ${logdir}/radacct #
# name of the running server. See also the "-n" command-line option.
name = freeradius # Location of config and logfiles.
confdir = ${raddbdir}
run_dir = ${localstatedir}/run/${name} # Should likely be ${localstatedir}/lib/radiusd
db_dir = ${raddbdir} # name of the running server. See also the "-n" command-line option.
name = freeradius # Location of config and logfiles.
confdir = ${raddbdir}
run_dir = ${localstatedir}/run/${name} # Should likely be ${localstatedir}/lib/radiusd
db_dir = ${raddbdir} # libdir: Where to find the rlm_* modules.
libdir = /usr/lib/freeradius
......
clients.conf 需要改localhost,如果知道ip段,可以写ip段,比如:192.168.6.0/24 支持ipv4和ipv6和域名的方式。
(文件注释中介绍尽量用ip,不要用域名,域名依赖dns解析,dns挂了,radius服务就挂了)
secret 为服务器和客户端的共享密码,默认testing123。
client localhost {
ipaddr = 127.0.0.1
secret = testing123
require_message_authenticator = no
nastype = other
}
这个client可以配置多个,维基百科里有段话:
UDP与TCP不同,无法识别伪装送信者和数据篡改。因此仅靠通信对方的IP地址是不足以信任通信内容的。
为了防止伪装和篡改,RADIUS客户端和服务器之间共享一个叫“共享密码” (Shared secret)的密钥字符串,将数据包的内容和共享密码得到的摘要信息配给验证符号和属性值。
应该为每对 RADIUS客户端和服务器准备一个共享密码。针对一个RADIUS服务器只用一个密码而与所有RADIUS客户端都共用会造成安全上的重大隐患。另外,从安全的角度来说,共享密码的内容若被第三方泄露也是一大问题。
modules configuration 这个模块我们用到mysql,需要进入/etc/freeradius/sql/mysql目录下
有个schema.sql (V3.0也叫 db_mysql.sql),执行一下
mysql -uroot -prootpass radius < schema.sql
表就建好了。
其他表可以参考上面第四个链接,适用不同的场景。这里就搭建一个简单可用的freeradius。admin.sql是给freeradius创建个mysql的账户,我直接给了root用户,就没执行(这一步在后面)。

sites configuration 官方介绍 The sites-available, sites-enabled convention has been borrowed from Apache, Nginx, and other similar projects.
- sites-available/default
- sites-available/inner-tunnel
- 数据库功能性定义文件: /etc/raddb/sites-available/default
实现相关模块对数据库的支持
authorize(认证),accounting(审计),session(会话,用于监测同时连接),post_auth(记录) 子段加入sql关键字,如:
authorize {
preprocess
chap
mschap
suffix
eap
sql
pap
}
将上面2个文件中sql部分的注释都去掉,没有的就添加sql。
sql.conf 数据库设置sql.conf,和数据库定义相符(数据库服务器、用户密码、表名称等等):
sql {
#
# Set the database to one of:
#
# mysql, mssql, oracle, postgresql
#
database = "mysql"
#
# Which FreeRADIUS driver to use.
#
driver = "rlm_sql_${database}"
# Connection info:
server = "localhost"
port = 3306
login = "root"
password = "pwd123123"
# Database table configuration for everything except Oracle
radius_db = "radius"
....
修改以上几个值。执行admin.sql创建的mysql账户是在这里配置的。
配置部分结束,可以测试一下了:
在之前执行schema.sql文件的时候,已经创建了这个表
CREATE TABLE radcheck (
id int(11) unsigned NOT NULL auto_increment,
username varchar(64) NOT NULL default '', //这是账号
attribute varchar(64) NOT NULL default '',
op char(2) NOT NULL DEFAULT '==',
value varchar(253) NOT NULL default '', //这是密码
PRIMARY KEY (id),
KEY username (username(32))
) ;
登录数据库,在这个表中随便插入几条信息。
insert into radcheck (username,attribute,value,op) values ('user007','Cleartext-Password','password123',':=')
通过命令 radiusd restart 或 radiusd -X 启动服务, radiusd -X这个命令是进入调试模式(方便观察debug日志)
如果是apt方式安装成功的通过这个命令 service freeradius restart 或freeradius -X
另起一个客户端,输入
radtest user007 password123 localhost 1812 testing123
Access-Accept!
完美。安装成功。
三、Base Modules
freeradius支持安装的模块:
https://freeradius.org/modules/
四、Radius Clients
本文以java为例,安装jradius。
需要在编译freeradius前,将编译模块名称加入到src/modules/stable文件中,模块名称可以参考 Base Modules 这步的链接,这里是
echo rlm_jradius >> src/modules/stable
然后编译安装。
./configure
make
make install
之后到github下载jradius的源码编译安装。具体参考另一篇文章。
freeradius client 和jradius安装编译
异常处理
./configure时 的报错处理,比如:
No rule to make target `@abs_top_builddir@/main.mk
没有安装依赖包,缺少编译的插件,apt-cache search xxxx 搜一下,安装即可。
报错一般都是缺少依赖,根据提示,将缺少的依赖逐个安装即可。
openssl拒绝:
Refusing to start with libssl version OpenSSL 1.0.1f 6 Jan 2014
修改etc/raddb下的radiusd.conf文件
找到allow_vulnerable_openssl = no,修改成allow_vulnerable_openssl = yes
rlm_eap: Failed to initialize type tls
这个错误,执行一下,换个窗口再执行就好了
other
FreeRADIUS Beginner's Guide
https://freeradius.akagi201.org/
FreeRadius : 模块开发
http://blog.csdn.net/huntinux/article/details/52881504
http://blog.csdn.net/huntinux/article/details/52892221
freeradius编译安装+mysql配置的更多相关文章
- CentOS6.7下使用非root用户(普通用户)编译安装与配置mysql数据库并使用shell脚本定时任务方式实现mysql数据库服务随机自动启动
CentOS6.7下使用非root用户(普通用户)编译安装与配置mysql数据库并使用shell脚本定时任务方式实现mysql数据库服务随机自动启动1.关于mysql?MySQL是一个关系型数据库管理 ...
- 源码编译安装 MySQL 5.5.x 实践
1.安装cmakeMySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具.因此,我们首先要在系统中源码编译安装cmake工具. # wget ht ...
- CentOS 编译安装 mysql
1.前期准备 1.1 环境说明: 操作系统: CentOS release 6.4 (Final) [查看命令 cat /etc/redhat-release ] mysql : mysql-5.6. ...
- Linux CentOS6.5下编译安装MySQL 5.6.16【给力详细教程】
一.编译安装MySQL前的准备工作 安装编译源码所需的工具和库 yum install gcc gcc-c++ ncurses-devel perl 安装cmake,从http://www.cmake ...
- Linux编译安装Mysql步骤
一. Centos 用 wget 下载需要的软件,保存到目录/home/zwl/MySql/下 wget http://dev.mysql.com/get/Downloads/MySQL-5.5/my ...
- CentOS下编译安装MySQL 5.6.21
一.编译安装MySQL前的准备工作 安装编译源码所需的工具和库 yum install gcc gcc-c++ ncurses-devel perl 安装cmake:http://www.cnblog ...
- 【排障】编译安装Mysql并使用自启动脚本mysqld后报错
本文用于记录在某次个人实验搭建DZ论坛,在编译安装部署mysql环节时出的错到最终排除错误的过程, 前面采用DZ官网所采用的编译安装mysql的过程就省去,主要从报错处开始讲述. (题外话,经此一役后 ...
- 源码编译安装 MySQL 5.5.x 实践(转)
1.安装cmakeMySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具.因此,我们首先要在系统中源码编译安装cmake工具. # wget ht ...
- Linux 环境编译安装mysql (源码安装包)
标注: Linux需要先配置网络yum源,确定yum能在线安装软件包,方便测试过程中安装部分依赖包.配置163网易提示的网络yum源参考博客 http://www.cnblogs.com/zoulo ...
随机推荐
- SpringBoot+EventBus使用教程(一)
一.简介 EventBus是一个基于发布订阅的事件总线,在Java和Android里都可以使用. 二.使用 1.引入pom <dependency> <groupId>org. ...
- SpringBoot第十四篇:统一异常处理
作者:追梦1819 原文:https://www.cnblogs.com/yanfei1819/p/10984081.html 版权声明:本文为博主原创文章,转载请附上博文链接! 引言 本文将谈论 ...
- nginx报错111: Connection refused
最近遇到了nginx疯狂抛错,access.log一天一共5W多条,但error.log中有大概9K多条,基本都是111: Connection refused,这到底是为什么呢? 从日志看起 我们还 ...
- MongoDB 学习笔记 ---创建用户
MongoDB安装好了之后,开始学习常用命令 首先,运行MongoDB, 记住,先不用带参数--auth /usr/local/mongodb/bin/mongod -dbpath=/usr/loca ...
- 关于wordpress4.8中的Twenty Seventeen主题的主题选项增加章节的实现
我这里的wordpress版本是4.8 默认的主题是 Twenty Seventeen 我想实现的事 主题选项的首页 多增加2个章节 默认是只有4个章节 我想在增加2个 到6个 看下实现后的效果 ...
- Delphi - 鼠标上下滚动基础消息事件
Delphi实现对鼠标上下滚动基础消息的截获并处理 前几天有客户提出需求:由于个人PC界面限制,有时候电子图档显示不全,希望通过鼠标上下滚动用来控制电子图档的放大和缩小. 下面通过一个测试Demo来说 ...
- python 进程和线程-简介及进程
进程和线程的关系及应用 参考链接:https://www.liaoxuefeng.com/wiki/1016959663602400/1017627212385376 多任务: 什么叫“多任务”呢?简 ...
- Java内功心法,行为型设计模式
行为型 1. 责任链(Chain Of Responsibility) Intent 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系. 将这些对象连成一条链,并沿着这条链发送该 ...
- 关于final
最近见的一道选择题 刚学习一直认为final修饰,为常量,必须声明时被初始化,现在又明白第二种情况可以通过创建对象之后由构造方法立即初始化. 1.final修饰类不能被继承 2.final修饰方法不能 ...
- html书写行内元素时-tab和换行会在行内元素间引入间距
目录 html文本中的控制字符会被解析为文本节点 书写行内元素时,换行符LF与水平制表符HT会引入莫名的元素间间隔 其他控制字符是否会引入间距的验证 html文本中的控制字符会被解析为文本节点 举例: ...