skydiablo / skyradius
第一个(据我所知)用PHP原生实现的RADIUS服务器!基于ReactPHP的强大功能,我能够编写这个库。目前实现了RFC2865、RFC2866、RFC2868 + RFC2869,如果您想贡献,可以跟进RFC2867(我总是很高兴看到PRs ;) )。
dev-master
2024-07-11 08:27 UTC
Requires
- react/cache: ^1.2
- react/datagram: ^1.9
- skydiablo/sky-ttl-list: @dev
This package is auto-updated.
Last update: 2024-09-11 08:45:58 UTC
README
第一个(据我所知)用PHP原生实现的RADIUS服务器!基于ReactPHP的强大功能,我能够编写这个库。目前实现了RFC2865、RFC2866、RFC2868 + RFC2869,如果您想贡献,可以跟进RFC2867(我总是很高兴看到PRs ;) )。
示例
进入 ./Example/
目录
cd ./Example/
加载供应商库
composer install
从 freeRADIUS
项目安装 radclient
sudo apt install freeradius-utils
运行 SkyDiablo/SkyRadius
示例服务器
php radius.php
在独立的控制台会话中运行 radclient
echo "User-Name=test,User-Password=mypass,Framed-Protocol=PPP" | radclient -x 127.0.0.1:3500 auth test
Sent Access-Request Id 31 from 0.0.0.0:52235 to 127.0.0.1:3500 length 50
User-Name = "test"
User-Password = "mypass"
Framed-Protocol = PPP
Cleartext-Password = "mypass"
Received Access-Accept Id 31 from 127.0.0.1:3500 to 0.0.0.0:0 length 110
Reply-Message = "Echo Test-Radius-Server"
User-Name = "test"
User-Password = "ѣ\3332a\274\016({\312A\257P\3623\214\273-\342\331Z\035\024:\267\254i#h'\200\262\021f˷c\305y2*\201qlNh\234\236u\377\207"
Framed-Protocol = PPP
- 如你所见,echo缺少了属性
Cleartext-Password
-> 默认情况下还没有实现,但很快会有 ;) - 同时忽略看起来神秘的
User-Password
属性,对于这个属性的服务器端加密也尚未实现。但根据RFC,服务器永远不会做这件事!
基准测试
除了上述示例之外,您可以通过改进请求来对您的 SkyDiablo/SkyRadius
实例进行压力测试
echo "User-Name=test,User-Password=mypass,Framed-Protocol=PPP" | radclient -n 1000 -c 99999999999 127.0.0.1:3500 auth test
在我的设置中,我能够以90%的CPU负载处理每秒15k个请求,使用这里提到的演示服务器。为此,我在同一服务器上启动了5次radclient,使用-n 40000
,并将输出重定向到> /dev/null
。使用的CPU:Intel(R) Xeon(R) Gold 6140 CPU @ 2.30GHz
,2核
待办事项
- 属性字典加载器
- YAML
- JSON
- 单元测试