Linux平台下搭建freeRADIUS集成MySQL并整合VPN

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

1)部署freeradius服务器

@1主要文件作用:

radiusd.conf 和sql.conf  作用为radius与mysql 接连,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

图 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-vpn,这时需要将主机名加入文件 /etc/hosts,添加:127.0.0.1 dhfijk-vpn

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

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 [email protected]: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 VPN服务器所在主机上的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

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

 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的路径。

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

时间: 2024-10-12 11:56:48

Linux平台下搭建freeRADIUS集成MySQL并整合VPN的相关文章

(0.2.3)Linux平台下二进制方式安装mysql

本章节:二进制安装mysql 目录: 1.基于Linux平台的Mysql项目场景介绍 2.mysql数据库运行环境准备-最优配置 3.如何下载mysql数据库 4.linux平台下二进制文件方式安装mysql 4.1.环境检查(libaio包) 4.2.安装过程 (1)下载文件.上传安装程序 (2)创建用户,组,创建目录 (3)解压安装程序包 (4)修改权限(授权用户对解压目录的权限) (5)配置环境变量(以便可以直接运行mysql命令) (6)准备参数配置文件 (7)开始初始化Mysql (8

Linux平台下源码安装mysql多实例数据库

Linux平台下源码安装mysql多实例数据库[[email protected] ~]# netstat -tlunp | grep 330tcp6 0 0 :::3306 :::* LISTEN 6191/mysqld [[email protected] ~]# ss -tlunp | grep 330tcp LISTEN 0 80 :::3306 :::* users:(("mysqld",pid=6191,fd=10)) [[email protected] ~]# syst

测试环境搭建和部署(在Linux环境下搭建jdk+Tomcat+mysql环境和项目包的部署)

1.Linux环境(我搭建的是64位centos版本的linux系统) 1.下载并安装一个VMware Workstation虚拟机,是搭建Linux系统的平台.      2.下载一个centos安装包. 3.打开VMware Workstation,新建一个虚拟机,根据提示安装步骤,导入安装包,设置用户名和密码(此处设置的是普通账户,但密码和根账号root共用),其他的步骤全部点击下一步到最后,然后 静静等安装成功. 4.安装完成后,输入密码进入图形化界面,点击右键选择Open in Ter

阿里云服务器 :Linux环境下搭建Apache+php+mysql

以前我用的是Windows2012 的服务器,那时候只是抱着玩一玩的心态,所有用的是Windows,但是后来被导师给DISS了,于是决定改服务器的操作系统: (一)下载安装php+mysql+apache 我选的操作系统是Linux的Ubuntu系统,使用的工具是xshell,xftp 1.切换管理员身份           //这一步我没用,我进入的时候就是root权限 在ubuntu中需要用root身份进行操作,所以用下面的命令确保以root身份登录: sudo su 2.开始安装mysql

fedora linux平台下搭建lighttpd+php+sqlite

(一)lighttpd 1. 安装 yum install lighttpd 安装完成后,系统中应该多了一个用户lighttpd和组lighttpd.这个用户,默认是不允许登陆的. 我们修改/etc/passwd,将lighttpd修改为如下形式. lighttpd:x:489:470:lighttpd web server:/home/lighttpd/:/bin/bash 注意,你所看到的数字可能不是489,470,这个没关系,也不用改,保持原来的值即可. 2. 为lighttpd用户创建一

Linux平台下安装MySQL

MySQL 安装方式: (1) RPM方式:RPM 软件包是一种在 Linux 平台下的安装文件,MySQL 的 RPM 安装文件包分为两个,即服务器端和客户端,需要分别下载安装(2) 二进制包方式:二位制包安装不需编译,针对不同的平台有经过优化编译的不同的二进制文件以及包格式,安装简单方便(3) 源码包方式:源码包是 MySQL 数据库的源代码,用户需要自己编译成二进制文件之后才能安装 MySQL 软件包: (1) MySQL-5.6.35-1.linux_glibc2.5.x86_64.rp

Linux Debian 下LNMP服务器——nginx+mysql+php环境搭建及配置

昨天刚给公司服务器装了LNMP服务器环境,在这里简单记录一下过程备忘. 这里我在安装的时候是用的Dotdeb源,仅供参考. 1.导入Dotdeb源,据说Dotdeb源里的软件版本比较新. 在向源中导入Dotdeb前,我们需要先获取GnuPG key并导入: wget http://www.dotdeb.org/dotdeb.gpg cat dotdeb.gpg | apt-key add - 提示OK,表明导入成功.然后我们开始导入Dotdeb源,源列表的位置在“/etc/apt/sources

Linux CentOS下安装、配置mysql数据库

如果要在Linux上做j2ee开发,首先得搭建好j2ee的开发环境,包括了jdk.tomcat.eclipse的安装(这个在之前的一篇随笔中已经有详细讲解了Linux学习之CentOS(七)--CentOS下j2ee环境搭建),如果要开发web项目,我们当然可以安装一个myeclipse到Linux系统上去,这个安装方法和安装eclipse完全相同,就没有记录下来了,有了jdk.tomcat.eclipse我们就已经能进行我们的程序开发了,但是如果要做一个项目,哪怕是小的不能再小的项目都离不开数

ubuntu 12.04下搭建web服务器(MySQL+PHP+Apache) 教程(转+亲测)

ubuntu 12.04下搭建web服务器(MySQL+PHP+Apache) 教程 1.切换管理员身份 在ubuntu中需要用root身份进行操作,所以用下面的命令确保以root身份登录: sudo su 2.开始安装ssh (安装SSH-server:(用Xshell操作更方便,先获得ssh服务支持)sudo apt-get updatesudo apt-get install openssh-server openssh-client启动SSH-Serversudo /etc/init.d