安装

ubuntu 18.04下直接apt install freeradius radiusd-livingston即可。前者是服务端,后者是客户端,方便测试。在完成此文时,apt下载的默认版本为3.0.16,官方最新版本是3.0.19,如果想使用最新版本,可以选择编译安装(wget ftp://ftp.freeradius.org/pub/freeradius/freeradius-server-3.0.19.tar.gz)。对于ubuntu 18.04之前的版本建议编译安装。

坑:不建议使用apt安装,默认安装没有rlm_sql_mysql.so文件,无法使用mysql。建议编译安装,按照需要安装需要的依赖。

安装lnmp环境以备后用,这里教程太多就不赘述了。

编译安装需要先安装依赖,比如libtalloc-dev,mysql依赖libmysqlclient-dev,其他依赖按照需求安装即可。

apt install libtalloc-dev libmysqlclient-dev

注:编译安装的根目录为/usr/local/etc/raddb,下面的例子都是apt安装的,需要将/etc/freeradius/3.0 替换成 /usr/local/etc/raddb。服务的名称也变成了radiusd。编译安装不会添加服务,需要自己处理开机启动。

配置

客户端配置

在/etc/freeradius/3.0/clients.conf保存了客户端白名单,需要在其他电脑发起鉴权时,要先在这里添加授权。具体配置详情可以直接看文件注释,默认只允许本地访问,密码为testing123。

存文件的帐号模块

在/etc/freeradius/3.0/mods-config/files/authorize保存了帐号信息,可以在第一行添加testing Cleartext-Password := "password"作为测试。

存数据库的帐号模块

给数据库添加radius用户和数据库:

CREATE USER 'radius'@'localhost' IDENTIFIED BY 'hello';

create database radius default charset=utf8;

grant all privileges on radius.* to radius@'localhost';

执行mysql -u root radius < /etc/freeradius/3.0/mods-config/sql/main/mysql/schema.sql

启用sql模块,ln -s /etc/freeradius/3.0/mods-available/sql /etc/freeradius/3.0/mods-enabled

修改配置,driver = "rlm_sql_mysql" dialect = "mysql",然后修改Connection info,配置数据库信息。

测试

修改完配置文件后记得重启radius,测试建议关闭服务(systemctl stop freeradius.service),使用freeradius -X开启调试模式,获取详细信息。

在本地执行radtest testing password 127.0.0.1 0 testing123,显示Access-Accept代表认证成功。

安装daloradius

wget https://github.com/lirantal/daloradius/archive/master.zip,解压到nginx配置下的文件夹。修改nginx配置使其可以正常使用。

mysql -u root -p radius < mysql-daloradius.sql导入数据库。

pear install DB安装php依赖,然后重启php:/etc/init.d/php7.2-fpm reload。这里PHP版本为7.2,其他版本对应修改即可。

http访问服务器地址,就会出现登录页面,默认帐号administrator 密码radius。

这个项目年代很久远了,适合测试使用。生产环境建议还是自己开发进行管理,可以参考此项目。

使用PHP客户端

安装依赖:pecl install https://pecl.php.net/get/radius-1.4.0b1.tgz。对于PHP版本低于7.0的,可以直接pecl install radius,radius稳定版无法运行在PHP7.X版本。

添加依赖:

echo 'extension=radius.so' >/etc/php/7.2/mods-available/radius.ini

ln -s /etc/php/7.2/mods-available/radius.ini /etc/php/7.2/cli/conf.d/20-radius.ini

ln -s /etc/php/7.2/mods-available/radius.ini /etc/php/7.2/fpm/conf.d/20-radius.ini

重启php:/etc/init.d/php7.2-fpm reload

PHP代码示例如下:

$radh = radius_auth_open();

// radius_add_server($radh,'127.0.0.1',1812,'pwd',5,3);

radius_config($radh,'r.txt');

radius_create_request($radh,RADIUS_ACCESS_REQUEST);

radius_put_attr($radh,RADIUS_USER_NAME,'user');

radius_put_attr($radh,RADIUS_USER_PASSWORD,'userpwd');

var_dump(radius_send_request($radh));

其中可以使用配置的方式来读取,配置文件格式如下:文件格式详情

//文件名r.txt

auth 127.0.0.1:1812 pwd

末尾需要添加空格,否则无效!

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐