昨天分享了本身在Ubuntu下搭建L2TP ×××服务器的历程,并贴出了本身测试运行的效果图片,这个比较适合我的购买服务器搭建×××。可是搭建×××后,没法实现AAA功能,管理帐号也是利用文件。为此,选择搭建freeRADIUS同时与MySQL整合,一样选择Ubuntu平台。闲话少说 ,就是干.......
mysql
1)部署freeradius服务器sql
@1主要文件做用:数据库
radiusd.conf 和sql.conf 做用为radius与mysql 接连,client.conf 是NAS 和freeradius 服务链接用的vim
@2 安装bash
a)初始化机器环境,安装必备的服务器软件服务器
#sudo -i //得到root权限 #apt-get install mysql freeradius freeradius-mysql freeradius-utils
因为我使用的是apt安装的freeRadius,因此radiusd不能使用,应该用如下方法解决:session
sudo ln -s freeradius radiusd
随后即可以使用radiusd -X.socket
b)安装完freeradius后,对其进行测试ide
打开其users文件,并添加用户post
# vi /etc/freeradius/users
图 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写入
图 2: 配置client.conf
并在 /etc/hosts文件中配置 IP和主机名:
图 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)即可以运行服务程序了
图4 : radiusd -X
另外开一个终端窗口,做为客户端使用,进行测试,输入如下语句
radtest 帐号 密码 localhost 0 testing123(对应填写在users文件中自定义的userName和passWord)
其中,localhost是客户端的IP,0是客户端向服务端发送数据包的端口号,testing123是通讯密码secret
图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地址,以及各类默认的表的信息。操做总可使用默认值,若想本身定义,便修改相应的项,但必须保持一致。
图 6 sql.conf配置文件
默认的数据库名为MySQL,服务器为localhost,及数据库服务器地址,同时指定了默认的登陆“radius”和登陆密码“radpass”在此文件中反注释掉如下信息。
取消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;
图 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
图 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
图 8 远程测试RADIUS验证功能(2)
远程测试回应请求为Access-Accept,代表从172.25.11.223发给172.25.11.224的数据包经过了172.25.11.224主机上的freeRadius服务器的验证。
以上验证结果会在radius数据库中的radpostauth表中
图 9 远程测试RADIUS验证记录
以上测试结果证实,L2TP ×××服务器所在主机上的radiusClient与freeRadiusServer的通讯是正常的,而且freeRadius与MySQL集成是成功的。
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
图 10 radiusClient的radiusServer配置
以上servers配置文件中172.25.11.224为freeRadius服务器IP地址,testing123为默认的radiusClient与radiusServer的通讯秘钥。
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相关信息。
图 11 配置radiusClient端的radius服务器信息
指定freeRadius服务器的IP和端口:
authserver 172.25.11.224:1812 acctserver 172.25.11.224:1813
指定服务器配置文件位置:
servers /etc/radiusclient/servers
同时需注意dictionary的路径。
到这里,操做基本就完成了,能够尝试对系统进行测试,以上内容是在上一篇内容成功的基础上进行操做,若是你想搭建×××系统,请先阅读上篇内容并实验。