freeradius编译安装+mysql配置

参考文档:html

freeradius 官网的wiki
http://wiki.freeradius.org/Homejava

ubuntu freeradius搭建教程mysql

http://yustanto.com/freeradius.pdf
http://blog.csdn.net/u013686990/article/details/38079653linux

gcc安装编译(freeradius须要gcc支持)
http://blog.csdn.net/u012822903/article/details/68934793 c++

freeradius+mysql配置git

http://blog.chinaunix.net/uid-9967220-id-1995615.htmlgithub

官方文档--详细介绍配置文件及属性sql

http://networkradius.com/doc/current/introduction/RADIUS.htmlshell

 

梳理一下流程:

最好是参考官方文档去操做,官方文档搞不定在去搜。数据库

官方文档的几个步骤:

主要就是这几步。

安装环境: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路径下。

1、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版本。

2、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

 

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-availablesites-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!

完美。安装成功。

3、Base Modules

freeradius支持安装的模块:

https://freeradius.org/modules/

4、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 

相关文章
相关标签/搜索