昨天分享了自己在Ubuntu下搭建L2TP ×××服务器的历程,并贴出了自己测试运行的效果图片,这个比较适合个人购买服务器搭建×××。但是搭建×××后,无法实现AAA功能,管理账号也是利用文件。为此,选择搭建freeRADIUS同时与MySQL整合,同样选择Ubuntu平台。闲话少说 ,就是干.......

 1)部署freeradius服务器

@1主要文件作用:

radiusd.conf sql.conf  作用为radiusmysql 接连client.conf NAS freeradius 服务连接用的

@2 安装

a)初始化机器环境,安装必备的服务器软件

#sudo -i //获得root权限
#apt-get install mysql freeradius freeradius-mysql freeradius-utils

由于我使用的是apt安装的freeRadius,所以radiusd不能使用,应该用以下方法解决:

sudo ln -s freeradius radiusd

随后便可以使用radiusd -X.

b)安装完freeradius后,对其进行测试

打开其users文件,并添加用户

# vi /etc/freeradius/users

wKiom1kKybnzOhoUAABgylowgx0965.jpg-wh_50

图 1: 配置users

users文件中的steve项反注释掉,同时,将添加另外一项测试账号(自定义):

User:Dhfijk  Password:XXXXXX

@3 测试服务器 radiusd -X

当测试radiusd -X,使用radtest steve testing localhost 1812 testing123进行测试时,出现Failed to find IP address for zhantengfei-***这时需要将主机名加入文件 /etc/hosts添加:127.0.0.1 dhfijk-***

这时,有可能遇到以下问题:

a)客户端测试出现:client no response ......

b)服务器测试窗口出现:Listen to the unknown client 172.16.0.61(本机外网IP....

这时需要对client.conf文件进行相关配置,修改客户端信息,将freeRadius服务器IP写入

wKioL1kK0azDgclfAAAonvaltwE666.jpg-wh_50

图 2: 配置client.conf

并在 /etc/hosts文件中配置 IP和主机名:

wKioL1kK0kXSAVutAABMnRJY8Vc591.jpg-wh_50

图 3: 配置hosts

使用radiusd -X进入调试模式测试,启动 radiusd 时可能会出现如下错误

Failed binding to authentication address *port 1812:Address already in use

用命令lsof -i:1812查看占用进程,一般就是freeradius本身,kill -9 PID强制终止该进程,或者sudo service freeradius stop,然后重新运行命令radiusd -X(或者freeradius -X)便可以运行服务程序了


wKiom1kK0qbyIN51AAB7jT9ejgo171.jpg-wh_50

图4 : radiusd -X

另外开一个终端窗口,作为客户端使用,进行测试,输入以下语句

radtest 账号 密码 localhost 0 testing123(对应填写在users文件中自定义的userName和passWord)

其中,localhost是客户端的IP0是客户端向服务端发送数据包的端口号,testing123是通信密码secret
 wKiom1kK026D1bvdAABHwMHTKKI178.jpg-wh_50

图5:Access-Accept服务器响应

  在客户端添加连接radius服务器的地址和密码

/usr/local/radius-client/etc/radiusclient/servers

加入:freeradius server IP               testing123

添加字典,让其支持Windows客户端dictionary文件最后添加以下字典

#  vim  /etc/radiusclient/dictionary

   INCLUDE /etc/radiusclient/dictionary.microsoft
    INCLUDE /etc/radiusclient/dictionary.ascend
    INCLUDE /etc/radiusclient/dictionary.merit
    INCLUDE /etc/radiusclient/dictionary.compat
    INCLUDE /etc/radiusclient/dictionary.sip

2)集成Mysql

     @1 安装MySQL服务端和客户端

apt-get install mysql-server mysql-client

  安装过程中根据提示,设置root用户以及对应的登录密码,并以设定的用户名和密码登录 MySQL -u root -p  ,为了使freeRadius连接到MySQL数据库,将用户信息记录在数据库,必须在相应的配置文件中进行相关配置,具体配置流程如下。

    1 首先配置freeRadius核心配置文件radiusd.conf

vim /etc/freeradius/radiusd.conf

$INCLUDE sql.conf进行反注释,去掉#

     2 修改配置文件sql.conf

vim /etc/freeradius/sql.conf

  此配置文件包含了访问的数据库的用户名和密码,也包含了数据库服务器的IP地址,以及各种默认的表的信息。操作总可以使用默认值,若想自己定义,便修改相应的项,但必须保持一致。

wKioL1kK41SgcxcMAAA6QzsN76c414.jpg-wh_50

图 6  sql.conf配置文件

默认的数据库名为MySQL,服务器为localhost,及数据库服务器地址,同时指定了默认的登录“radius”和登录密码“radpass”在此文件中反注释掉以下信息。


 wKioL1kK46PwB9xmAAAgVWIvT-g513.png-wh_50


取消readclients = yes nas_table = "nas"行表示freeRadius可以在radius数据库中的nas表中加载client,可以不在client.conf中读取NAS信息。

  在以上操作中集成MySQL时,可能遇到这个问题,如果将sql.conf文件中的server改成MySQL服务器对应的ip地址,将报告一下错误

couldn't connect socket to MySQL server radius@172.25.11.224:radius

应该维持原来的localhost,因为MySQL Server freeRadius Server在同一机器上,即指代本机地址即可。

     3 修改default文件,开启AAA功能

vim /etc/freeradius/sites-available/default
authorize {
......
Sql 取消掉sql行的#注释,反注释之
......
} 
accounting {
.....
sql
......
}
session {
......
}
post-auth {
.......
}

 4 用户信息管理

:~# mysql -u root -p
mysql>create database radius;
mysql> use radius;

将存储用户必要的表到收入radius数据库:

mysql> source /etc/freeradius/sql/mysql/admin.sql

(建立radius对应的用户名和密码,并赋予所有权限,以下导入的sql文件作用类似)

mysql> source /etc/freeradius/sql/mysql/ippool.sql
mysql> source /etc/freeradius/sql/mysql/cui.sql
mysql> source /etc/freeradius/sql/mysql/nas.sql
mysql> source /etc/freeradius/sql/mysql/wimax.sql
mysql> source /etc/freeradius/sql/mysql/schema.sql

导入后可以查看以下radius数据库中的表项mysql>show tables;


 wKioL1kK5MbyVYwNAAA321OO1Vw870.png-wh_50

图 7 存储用户信息的radius数据库表项

 5 添加用户信息

radius数据库的表现中加入用户组以及隶属于用户组的用户名和登录密码,以及用户的各项相关信息。

 @1在radgroupreply表中建立名为user的用户组,并制定该组的相关属性信息

insert into radgroupreply (groupname,attribute,op,value) values ('user','Auth-Type',':=','Local'); 
加入Auth-Type属性
insert into radgroupreply (groupname,attribute,op,value) values ('user','Service-Type',':=','Framed-User'); 
加入'Service-Type'属性
insert into radgroupreply (groupname,attribute,op,value) values ('user','Framed-IP-Address',':=','255.255.255.255'); 
加入Framed-IP-Address属性
insert into radgroupreply (groupname,attribute,op,value) values ('user','Framed-IP-Netmask',':=','255.255.255.0');
加入Framed-IP-Netmask属性,PPP通信的掩码不限


 @2 radcheck表中加入用户dhfijk

insert into radcheck (username,attribute,op,value) 
values ('dhfijk','Cleartext-Password',':=','xxxxxx');xxxxxx

 @3 将用户与所属组进行关联

insert into radusergroup (username,groupname) values ('dhfijk','user');

dhfijk用户加入到所属的user

6 进行远程测试

   当用户在client.conf中时,进行测试

:~# radtest steve testing 172.25.11.224 1812 testing123

wKioL1kK5hzQBzvPAACMb71Szi0177.jpg-wh_50 

图 8 远程测试RADIUS验证功能(1

远程测试回应请求为Access-Accept,表明从172.25.11.223发给172.25.11.224的数据包通过了172.25.11.224主机上的freeRadius服务器的验证。

当用户在MySQL数据库中时,进行测试

:~# radtest dhfijk xxxxxx 172.25.11.224 1812 testing123

wKioL1kK5tOSV3pzAABqc51tWuw980.jpg 

图 8 远程测试RADIUS验证功能(2

远程测试回应请求为Access-Accept,表明从172.25.11.223发给172.25.11.224的数据包通过了172.25.11.224主机上的freeRadius服务器的验证。

以上验证结果会在radius数据库中的radpostauth表中

wKioL1kK55ajgDppAABItJ7k00g211.jpg-wh_50 

图 9 远程测试RADIUS验证记录

以上测试结果证明,L2TP ×××服务器所在主机上的radiusClientfreeRadiusServer的通信是正常的,并且freeRadiusMySQL集成是成功的。

3)集成L2TP服务器

 1 修改options.xl2tp配置文件

  vim /etc/ppp/options.xl2tp

 在L2TP配置文件中加入

plugin /usr/lib/pppd/2.4.5/radius.so
plugin /usr/lib/pppd/2.4.5/radattr.so
radius-config-file /etc/radiusclient/radiusclient.conf

 这几行配置代码作用便是在客户端向×××服务器发起连接时,将转向认证服务器,通过认证后才连接。

 2 修改servers配置文件

 vim /etc/radiusclient/servers

wKiom1kK6N_hhmXjAAAUdAloO5M867.png-wh_50 

图 10 radiusClientradiusServer配置

 以上servers配置文件中172.25.11.224freeRadius服务器IP地址,testing123为默认的radiusClientradiusServer的通信秘钥。

 3 修改相关配置文件,添加字典,支持Windows客户端

cd  /usr/share/freeradius/
cp * /etc/radiusclient/将该目录下的dictinary文件复制到radiusClient目录下。

同时将该目录下的dictionary文件末尾添加INCLUDE信息

vim /etc/radiusclient/dictionary

添加:

INCLUDE /etc/radiusclient/dictionary.
INCLUDE /etc/radiusclient/
INCLUDE /etc/radiusclient/dictionary.
INCLUDE /etc/radiusclient/dictionary.
INCLUDE /etc/radiusclient/dictionary.sip(省略此句不异影响)

 4 配置radiusClient.conf

radiusclient.conf文件中配置radiusServer相关信息。

wKioL1kK6bKj9KkeAACQtJsqEMI242.png-wh_50

图 11 配置radiusClient端的radius服务器信息

指定freeRadius服务器的IP和端口:

authserver      172.25.11.224:1812
acctserver      172.25.11.224:1813

指定服务器配置文件位置:

servers         /etc/radiusclient/servers

同时需注意dictionary的路径。

   到这里,操作基本就完成了,可以尝试对系统进行测试,以上内容是在上一篇内容成功的基础上进行操作,如果你想搭建×××系统,请先阅读上篇内容并实验。