参考文档:

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方式安装吧:

  1. apt-cache search freeradius //找一下相关软件
  1. apt-get install freeradius  //装freeradius
  1. apt-get install freeradius-mysql mysql-server //需要mysql数据的,顺便再装个mysql和freeradius的mysql插件
    装好的freeradius /etc/freeradius路径下。

一、Building and installing

1.下载二进制包

  1. wget https://github.com/FreeRADIUS/freeradius-server/archive/v3.0.15.zip
  2. unzip v3.0.15.zip
  3. cd freeradius-server-3.0.15/

2.编译安装

//这里需要安装其他模块的需要将模块名称加入到   src/modules/stable文件中,比如:$ echo rlm_jradius>>src/modules/stable。具体参考第四步: Radius Clients

  1. 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.

我安装时是网上单独找的教程,参考第三个链接。

  1. apt-get install libc6-dev libgmp-dev libmpfr-dev texinfo

官方给的gcc安装依赖:

  1. sudo apt-get install libssl-dev libtalloc-dev libkqueue-dev

安装gcc:

  1. 1. 下载&解压源码
  2. $ wget http://ftp.gnu.org/gnu/gcc/gcc-4.1.2/gcc-4.1.2.tar.bz2
  3. $ tar xvjf gcc-4.1.2.tar.bz2
  4. 2. 安装依赖库, 以及软件
  5. $ sudo apt-get install libc6-dev libgmp-dev libmpfr-dev texinfo
  6. 3. 为头文件以及所需库添加链接
  7. 添加如下链接, 这取决于你的 Ubuntu 系统架构, 如果你使用的是64位的ubuntu系统应当使用x86_64-linux-gnu替代i386-linux-gnu
  8. $ cd /usr/include
  9. $ sudo ln -s i386-linux-gnu/bits bits
  10. $ sudo ln -s i386-linux-gnu/gnu gnu
  11. $ sudo ln -s i386-linux-gnu/sys sys
  12. $ sudo ln -s i386-linux-gnu/asm asm
  13. $ cd /usr/lib
  14. $ sudo ln -s i386-linux-gnu/crt1.o crt1.o
  15. $ sudo ln -s i386-linux-gnu/crti.o crti.o
  16. $ sudo ln -s i386-linux-gnu/crtn.o crtn.o
  17. 4. 编译gcc
  18. $ cd gcc-4.1.2
  19. $ mkdir build
  20. $ 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++
  21.  
  22. $ make bootstrap
    $ make install
  1. 5.进入bin目录下,查看gcc是否安装好
  1. $ cd /usr/local/bin
  2. $ 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的配置。

这里就可以调试了,

  1. freeradius的启动/关闭/重启
    radiusd start/stop/restart //编译安装的freeradius用的是这个命令,默认不会开机自启动
    service freeradius start/stop/restart   //直接apt安装,使用这个命令启动,默认开机自启动

radiusd -X  (或freeradius -X   ---apt方式安装的用这个命令)这个命令是进入调试模式,会把后台各个log日志打印到shell窗口,以便分析(可以不用)

进入安装目录,编辑users文件,将下面图片内容的注释去掉

  1. cd /usr/local/etc/raddb // 或cd /etc/freeradius
    vim users

再打开另一个终端做客户端,输入命名

  1. 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插件

  1. 编译源码方式:
    编译源码时,其实已经装好freeradiussql插件了,可以看下freeradius路径下 src/modules/stable,里边有个rlm_sql就是sql模块,默认是安装的。mysql自己装,网上好多教程。
  2.  
  3. //apt安装方式
    //apt-get install freeradius-mysql
  4. //apt-get install mysql-server

官方给的主要配置文件:

Main configuration files

radius.conf    将$INCLUDE sql.con反注释,我们需要使用sql模块

radius.conf 中有各个目录的配置路径,其中  libdir: Where to find the rlm_* modules.这个目录是模块的安装目录,可以在这个目录下查看都安装了那些模块,都是以.so结尾的文件。

  1. .....
    prefix = /usr
  2. exec_prefix = /usr
  3. sysconfdir = /etc
  4. localstatedir = /var
  5. sbindir = ${exec_prefix}/sbin
  6. logdir = /var/log/freeradius
  7. raddbdir = /etc/freeradius
  8. radacctdir = ${logdir}/radacct
  9.  
  10. #
  11. # name of the running server. See also the "-n" command-line option.
  12. name = freeradius
  13.  
  14. # Location of config and logfiles.
  15. confdir = ${raddbdir}
  16. run_dir = ${localstatedir}/run/${name}
  17.  
  18. # Should likely be ${localstatedir}/lib/radiusd
  19. db_dir = ${raddbdir}
  20.  
  21. # name of the running server. See also the "-n" command-line option.
  22. name = freeradius
  23.  
  24. # Location of config and logfiles.
  25. confdir = ${raddbdir}
  26. run_dir = ${localstatedir}/run/${name}
  27.  
  28. # Should likely be ${localstatedir}/lib/radiusd
  29. db_dir = ${raddbdir}
  30.  
  31. # libdir: Where to find the rlm_* modules.
  32. libdir = /usr/lib/freeradius
  33. ......

 clients.conf   需要改localhost,如果知道ip段,可以写ip段,比如:192.168.6.0/24  支持ipv4和ipv6和域名的方式。

    (文件注释中介绍尽量用ip,不要用域名,域名依赖dns解析,dns挂了,radius服务就挂了)

    secret 为服务器和客户端的共享密码,默认testing123。

  1. client localhost {
  2. ipaddr = 127.0.0.1
  3. secret = testing123
  4. require_message_authenticator = no
  5. nastype = other
  6. }

这个client可以配置多个,维基百科里有段话:

  1. UDPTCP不同,无法识别伪装送信者和数据篡改。因此仅靠通信对方的IP地址是不足以信任通信内容的。
    为了防止伪装和篡改,RADIUS客户端和服务器之间共享一个叫“共享密码” (Shared secret)的密钥字符串,将数据包的内容和共享密码得到的摘要信息配给验证符号和属性值。
    应该为每对 RADIUS客户端和服务器准备一个共享密码。针对一个RADIUS服务器只用一个密码而与所有RADIUS客户端都共用会造成安全上的重大隐患。另外,从安全的角度来说,共享密码的内容若被第三方泄露也是一大问题。

modules configuration   这个模块我们用到mysql,需要进入/etc/freeradius/sql/mysql目录下

有个schema.sql (V3.0也叫  db_mysql.sql),执行一下

  1. 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  
  1. - 数据库功能性定义文件: /etc/raddb/sites-available/default
  2. 实现相关模块对数据库的支持
  3. authorize(认证),accounting(审计),session(会话,用于监测同时连接),post_auth(记录) 子段加入sql关键字,如:
  4. authorize {
  5. preprocess
  6. chap
  7. mschap
  8. suffix
  9. eap
  10. sql
  11. pap
  12. }

将上面2个文件中sql部分的注释都去掉,没有的就添加sql。

sql.conf     数据库设置sql.conf,和数据库定义相符(数据库服务器、用户密码、表名称等等):

  1. sql {
  2. #
  3. # Set the database to one of:
  4. #
  5. # mysql, mssql, oracle, postgresql
  6. #
  7. database = "mysql"
  8.  
  9. #
  10. # Which FreeRADIUS driver to use.
  11. #
  12. driver = "rlm_sql_${database}"
  13.  
  14. # Connection info:
  15. server = "localhost"
  16. port = 3306
  17. login = "root"
  18. password = "pwd123123"
  19.  
  20. # Database table configuration for everything except Oracle
  21. radius_db = "radius"
    ....

修改以上几个值。执行admin.sql创建的mysql账户是在这里配置的。

配置部分结束,可以测试一下了:

在之前执行schema.sql文件的时候,已经创建了这个表

  1. CREATE TABLE radcheck (
  2. id int(11) unsigned NOT NULL auto_increment,
  3. username varchar(64) NOT NULL default '', //这是账号
  4. attribute varchar(64) NOT NULL default '',
  5. op char(2) NOT NULL DEFAULT '==',
  6. value varchar(253) NOT NULL default '', //这是密码
  7. PRIMARY KEY (id),
  8. KEY username (username(32))
  9. ) ;

登录数据库,在这个表中随便插入几条信息。

  1. 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

另起一个客户端,输入

  1. 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

然后编译安装。

  1. ./configure
  2. make
  3. 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配置的更多相关文章

  1. CentOS6.7下使用非root用户(普通用户)编译安装与配置mysql数据库并使用shell脚本定时任务方式实现mysql数据库服务随机自动启动

    CentOS6.7下使用非root用户(普通用户)编译安装与配置mysql数据库并使用shell脚本定时任务方式实现mysql数据库服务随机自动启动1.关于mysql?MySQL是一个关系型数据库管理 ...

  2. 源码编译安装 MySQL 5.5.x 实践

    1.安装cmakeMySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具.因此,我们首先要在系统中源码编译安装cmake工具. # wget ht ...

  3. CentOS 编译安装 mysql

    1.前期准备 1.1 环境说明: 操作系统: CentOS release 6.4 (Final) [查看命令 cat /etc/redhat-release ] mysql : mysql-5.6. ...

  4. Linux CentOS6.5下编译安装MySQL 5.6.16【给力详细教程】

    一.编译安装MySQL前的准备工作 安装编译源码所需的工具和库 yum install gcc gcc-c++ ncurses-devel perl 安装cmake,从http://www.cmake ...

  5. Linux编译安装Mysql步骤

    一. Centos 用 wget 下载需要的软件,保存到目录/home/zwl/MySql/下 wget http://dev.mysql.com/get/Downloads/MySQL-5.5/my ...

  6. CentOS下编译安装MySQL 5.6.21

    一.编译安装MySQL前的准备工作 安装编译源码所需的工具和库 yum install gcc gcc-c++ ncurses-devel perl 安装cmake:http://www.cnblog ...

  7. 【排障】编译安装Mysql并使用自启动脚本mysqld后报错

    本文用于记录在某次个人实验搭建DZ论坛,在编译安装部署mysql环节时出的错到最终排除错误的过程, 前面采用DZ官网所采用的编译安装mysql的过程就省去,主要从报错处开始讲述. (题外话,经此一役后 ...

  8. 源码编译安装 MySQL 5.5.x 实践(转)

    1.安装cmakeMySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具.因此,我们首先要在系统中源码编译安装cmake工具. # wget ht ...

  9. Linux 环境编译安装mysql (源码安装包)

    标注: Linux需要先配置网络yum源,确定yum能在线安装软件包,方便测试过程中安装部分依赖包.配置163网易提示的网络yum源参考博客  http://www.cnblogs.com/zoulo ...

随机推荐

  1. 基于Django的Rest Framework框架的RESTful规范研究

    一.什么是RESTful规范 总的来说:RESTful规范就是一个非技术,人为约定的一个面向资源的架构理念. REST与技术无关,代表的是一种软件架构风格,REST是Representational ...

  2. Java实现牛顿迭代法求解平方根、立方根

    一.简介 牛顿迭代法(Newton's method)又称为牛顿-拉夫逊(拉弗森)方法(Newton-Raphson method),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法. ...

  3. 手动下载jar包导入mvn repo的方法

    转载自:http://www.360doc.com/content/19/1101/16/67125028_870487351.shtml 常用Maven仓库网址:http://mvnreposito ...

  4. windows环境中hbase源码编译遇到的问题

    转载请注明出处 问题一 [ERROR] Failed to execute goal org.codehaus.mojo:findbugs-maven-plugin:3.0.0:findbugs (d ...

  5. Unsafe例子

    Java和C++语言的一个重要区别就是Java中我们无法直接操作一块内存区域,不能像C++中那样可以自己申请内存和释放内存.Java中的Unsafe类为我们提供了类似C++手动管理内存的能力,不建议使 ...

  6. Teradata 数据库介绍

    Teradata在整体上是按Shared Nothing 架构体系进行组织的,他的定位就是大型数据仓库系统,定位比较高,他的软硬件都是NCR自己的,其他的都不识别:所以一般的企业用不起,价格很贵.由于 ...

  7. Blackbox_exporter黑盒监测

    一.概述 blackbox_exporter是Prometheus 官方提供的 exporter 之一,可以提供 http.dns.tcp.icmp 的监控数据采集.Blackbox_exporter ...

  8. java8 Lambda 表达式和函数式接口快速理解

    前言 接上篇文章 java8 新特性 由于上篇过于庞大,使得重点不够清晰,本篇单独拿出 java8 的 Lambda 表达式和函数式接口说明. Lambda 表达式 lambda 表达式其实就是使用了 ...

  9. 2019-11-29-WPF-笔刷绑定不上可能的原因

    原文:2019-11-29-WPF-笔刷绑定不上可能的原因 title author date CreateTime categories WPF 笔刷绑定不上可能的原因 lindexi 2019-1 ...

  10. .Net FrameWork获取配置文件信息

    今天在做项目的时候需要到配置文件中读取信息,之前自己并没有操作过,今天算是完成自己的一个心愿.读取配置文件中的信息并不难,大致思路是: 1.载入配置文件,获取配置文件的实例. 2.获取配置文件的节点 ...