1. 什么是FreeRADIUS?
RADIUS是Remote Access Dial In User Service的简称。
RADIUS主要用来提供认证(Authentication)机制,用来辨认使用者的身份与密码 –> 确认通过之后,经由授权 (Authorization)使用者登入网域使用相关资源 –> 并可提供计费(Accounting)机制,保存使用者的网络使用记录。
FreeRADIUS是一款OpenSource软件,基于RADIUS协议,实现RADIUS AAA(Authentication、Authorization、Accounting)功能。

2. 安装freeradius
安装环境CentOS,使用yum来安装。
安装freeradius和mysql扩展:

yum install freeradius
yum install freeradius-mysql

3. 验证freeradius
启动freeradius服务debug模式

radiusd -X

出现“Ready to process requests.”表示启动ok。

另外开一个shell客户端,输入测试命令:

radtest test test localhost 0 testing123

服务端和客户端会有收发消息的信息输出。
顺利通过。

4. freeradius和pptpd集成
下载ppp源码包,复制配置文件

wget http://www.sfr-fresh.com/linux/misc/ppp-2.4.5.tar.gz
tar -zxvf ppp-2.4.5.tar.gz
cp -R ppp-2.4.5/pppd/plugins/radius/etc /etc/radiusclient/

配置freeradius服务器密码

nano /etc/radiusclient/servers

最后添加

localhost testpwd

修改freeradius配置文件信息

nano /etc/radiusclient/radiusclient.conf

确保这个文件中radiusclient相关的路径都是“/etc/radiusclient”开头的
比如issue /usr/local/etc/radiusclient/issue 改为 issue /etc/radiusclient/issue

pptpd添加freeradius插件

nano /etc/ppp/options.pptpd

最后添加

plugin /usr/lib/pppd/2.4.4/radius.so

如果你是64位系统添加

plugin /usr/lib64/pppd/2.4.4/radius.so

5. freeradius和mysql集成
mysql建数据库radius(这个不用说怎么建吧?命令或者phpmyadmin)
mysql中导入freeradius表

mysql -u root -p radius < /usr/share/doc/freeradius-1.1.3/examples/mysql.sql

修改freeradius的sql配置文件,主要是mysql数据库的连接信息:

nano /etc/raddb/sql.conf

找到sql{}模块,设置数据库登录名、密码、数据库名

login = "root"
password = "12345"
radius_db = "radius"

找到# simul_count_query = "SELECT COUNT(*) FROM ${acct_table1} WHERE UserName='%{SQL-User-Name}' AND AcctStopTime = 0",去掉前面的#,打开sql的用户同时连接数测试语句;
找到#readclients = yes,去掉前面的#号,打开sql查询NAS。

配置freeradius的配置文件:

nano /etc/raddb/radiusd.conf

找到# $INCLUDE ${confdir}/sql.conf,去掉前面的#号;
找到authorize {}模块,注释掉files,去掉sql前的#号;
找到preacct {}模块,注释掉files;
找到accounting {}模块,注释掉radutmp,去掉sql前面的#号;
找到session {}模块,注释掉radutmp,去掉sql前面的#号;
找到post-auth {}模块,去掉sql前的#号;
总之就是去掉files模块,开启sql模块。

6. 添加测试用户和NAS

mysql -u root -p
use radius
insert into radcheck set username='user',attribute='User-Password',value='pwd';
insert into nas set nasname='127.0.0.1',shortname='localhost',type='other',secret='testpwd';

7. 启动pptpd和freeradius测试

service pptpd start
radiusd -X

启动后,电脑上vpn拨号,用户名/密码:user/pwd,测试。

接下来就是需要一个web界面来管理freeradius.

FreeRADIUS中包含了一个图形管理系统(dailup-admin)

http://freeradius.org/dialupadmin.html

安装请看:使用dialup_admin来管理radius服务器