freeradius+mysql+nas(ros)

freeRadius+mysql+ROS

1.安装freeRaidus

安装前需依赖的安装包:

yum �Cy install gcc* make openssl openssl-devel wget mysql mysql-devel

wget -c ftp://ftp.freeradius.org/pub/freeradius/freeradius-server-2.2.2.tar.gz

tar zxvf freeradius-server-2.2.2.tar.gz

cd freeradius-server-2.2.2

./configure --prefix=/usr/local/freeradius--with-mysql-dir=/var/lib/mysql

--with-mysql-lib-dir=/usr/lib/mysql

####/usr/local/freeradius  freeradius 安装目录默认安装/usr/local 下

####--with-mysql-dir 指定mysql的家目录。如果是用rpm或yum的方式安装mysql,这个目录为/var/lib/mysql

####--with-mysql-lib-dir 指定mysql库文件目录。如果是用rpm或yum的方式安装mysql,这个目录为/usr/lib/mysql

make && make install


1.1、基本文件的本地测试(选做)

vim /usr/local/etc/raddb/users

查找 steve Cleartext-Password :="testing" (76-84行), 取消该段内容的注释。

# 大写X,意思是以debug模式运行。

/usr/local/sbin/radiusd -X
#新开一个窗口执行,看到 "Access-Accept packet" 表示成功了,"Access-Reject" 表示失败了。

/usr/local/bin/radtest steve testinglocalhost 0 testing123


1.2创建数据库

mysql -u root -p

CREATE DATABASE radius;

GRANT ALL ON radius.* TO radius@localhost IDENTIFIED BY"radpass";

Exit

MySQL中表结构的定义

针对FreeRadius2,数据表的设计和结构定义在下面的文件中:

/etc/raddb/sql/mysql/schema.sql 主数据库定义,7个表,包括

radcheck 用户检查信息表

radreply 用户回复信息表

radgroupcheck 用户组检查信息表

radgroupreply 用户组检查信息表

radusergroup 用户和组关系表

radacct 计费情况表

radpostauth 认证后处理信息,可以包括认证请求成功和拒绝的记录。

/etc/raddb/sql/mysql/nas.sql 网络设备定义,只有一个表

nas 网络设备表

下面的表用于一些扩展功能,可以按需导入。

ippool.sql ip

wimax.sql wimax设备支持

cui.sql cui 支持

详细的表定义参见:http://wiki.freeradius.org/MySQL_DDL_script

导入和建立表结构

mysql -u root -p radius </etc/raddb/sql/mysql/schema.sql

mysql -u root -p radius </etc/raddb/sql/mysql/nas.sql

mysql -uroot -p123456 radius < ippool.sql
mysql -uroot -p123456 radius < wimax.sql
mysql -uroot -p123456 radius < cui.sql
上述命令执行schema.sql和nas.sql的sql语句,建立相应的数据库结构。


1.3 启用Freeradius sql认证模式

vim /usr/local/freeradius/etc/raddb/radiusd.conf

//搜索 $INCLUDE sql.conf 去掉行首的注释

打开从数据库查询nas支持

默认从"/usr/local/etc/raddb/clients.conf" 文件读取,开启后可从数据库nas表读取。

sed -i's/\#readclients/readclients/g' /usr/local/etc/raddb/sql.conf

打开在线人数查询支持

# 查找simul_count_query将279-282行注释去掉
vim /usr/local/etc/raddb/sql/mysql/dialup.conf

修改sites-enabled目录配置文件

vim/usr/local/etc/raddb/sites-enabled/default

找到authorize {}模块,注释掉files,去掉sql前的#号

找到accounting {}模块,注释掉radutmp,注释掉去掉sql前面的#号。

找到session {}模块,注释掉radutmp,去掉sql前面的#号。

找到post-auth {}模块,去掉sql前的#号,去掉sql前的#号。

vim /usr/local/etc/raddb/sites-enabled/inner-tunnel

找到authorize {}模块,注释掉files,去掉sql前的#号。

找到session {}模块,注释掉radutmp,去掉sql前面的#号。

找到post-auth {}模块,去掉sql前的#号,去掉sql前的#号。

用户权限管理

连接 MySQL数据库
mysql -uroot -p123456;

# 使用 radius 数据库

USE radius;

# 添加用户demo,密码demo,注意是在radchec表

INSERT INTO radcheck(username,attribute,op,VALUE) VALUES ('demo','Cleartext-Password',':=','demo');

# 将用户demo加入VIP1用户组

INSERT INTO radusergroup(username,groupname) VALUES ('demo','VIP1');

# 限制同时登陆人数,注意是在radgroupcheck表

INSERT INTO radgroupcheck(groupname,attribute,op,VALUE) VALUES ('normal','Simultaneous-Use',':=','1');

# 其他

INSERT INTO radgroupreply(groupname,attribute,op,VALUE) VALUES ('VIP1','Auth-Type',':=','Local');

INSERT INTO radgroupreply(groupname,attribute,op,VALUE) VALUES('VIP1','Service-Type',':=','Framed-User');

INSERT INTO radgroupreply(groupname,attribute,op,VALUE) VALUES ('VIP1','Framed-Protocol',':=','PPP');

INSERT INTO radgroupreply(groupname,attribute,op,VALUE) VALUES ('VIP1','Framed-MTU',':=','1500');

INSERT INTO radgroupreply(groupname,attribute,op,VALUE) VALUES('VIP1','Framed-Compression',':=','Van-Jacobson-TCP-IP');

启动

cp /usr/local/sbin/rc.radiusd/etc/init.d/radiusd
/etc/init.d/radiusd start


测试客户端:

radtest demo demo localhost 1812testing123

175841510.png

radtest 为radius 测试命令

demo demo 前面为用户名 后面为密码

127.0.0.1 1812 freeradius 服务器IP地址及端口 默认1812

testing123 为 client.conf 中配置的secret 字段。

"Access-Accept packet" 表示成功了,"Access-Reject" 表示失败了。


验证数据库,请仔细查看用户demo字段属性:

180323492.png

基中ppoe 拨号 radcheck 表中attribute 字段值必为:Cleartext-Password 否则用户登陆不成功。 ps:这个字段值可以修改,请有心童鞋费心一下。


ROS连接:

clients.conf 文件(主配置文件)

这个文件主要是配置与ROS的对接程序!

设置以下字段:

client 192.168.1.156 {  // ros IP地址

secret = ros    //ros服务器的密钥,ros对接的唯一标识号

shortname = routeros  //名字可以随便写,作用还不知

nastype = other   //一般固定的

ROS 添加设置:

180817978.png

180911638.png

选择Incoming 然后要勾选Accept端口可以不修改.

Client配置样例:

181117750.png


设置freeRadiu 帐户到期下线

INSERT INTO `radius`.`radcheck` (`id` , `username` , `attribute` , `op` , `value`) VALUES ( NULL , 'sxy', 'Expiration', ':=', '06 Jun 2006 14:55:22');

切记,此记录存在后,用户拨号到期即可下线。(曾测试,先将用户名与密码填写后,用户拨号成功在线,再添加Expiration字段填写到期时间,发现到期未能下线,如下教你将过期用户踢下线:)

将在线用户踢下线:

181959826.png



[root@radiusmysql]# echo User-Name=demo | radclient 192.168.1.156:1700 disconnect 123456

User-Name=demo    #####剔除在线的用户名称

192.168.1.156:1700    ######Nas pope IP地址及端口默认1700端口

disconnect123456    ######disconnect 断开命令 123456 即与ros 对应的secret 密钥字段


排错:

一会可以发现freeradius服务器,一会查找不到报:

radclient:Failed to find IP address for radius

radclient:Nothing to send

190854151.png


此问题解决办法:

 将主机名添加到/etc/hosts中,即可!


启动时报错未发现sql模块:

113528331.jpg


修改/usr/local/freeradius/etc/raddb/radiusd.conf  配置文件:

  将 $INCLUDE sql.conf 去掉行首的注释


你可能感兴趣的:(mysql,NAS,ROS,freeradius)