Synology部署的RADIUS服务器添加MAC地址绑定校验规则咨询
需求可行性结论
你的需求完全可以实现,你编写的SQL校验逻辑本身是合理的,仅存在一处变量写法的小问题需要调整。
操作步骤
1. 修正SQL规则写法
你现有规则里的Calling-Station-Id变量缺少大括号包裹,FreeRADIUS无法正确解析,修正后如下:
mac_check = "SELECT * from mac_addr_table WHERE Username = '%{SQL-User-Name}' AND MacAddr = '%{Calling-Station-Id}' ORDER BY ID"
注意:需要提前确认交换机上报的
Calling-Station-Id(即终端MAC地址)的格式(比如是AA:BB:CC:DD:EE:FF、AA-BB-CC-DD-EE-FF还是纯十六进制字符串),和你mac_addr_table中存储的MAC格式保持一致。如果格式不匹配,可以在SQL中用REPLACE函数自动转换,例如:mac_check = "SELECT * from mac_addr_table WHERE Username = '%{SQL-User-Name}' AND MacAddr = REPLACE('%{Calling-Station-Id}', '-', ':') ORDER BY ID"
2. 找到群晖RADIUS服务的配置目录
群晖官方的RADIUS Server套件底层基于FreeRADIUS开发,配置文件默认存储路径为:/var/packages/RadiusServer/etc/raddb/,需要通过SSH登录群晖后台操作。
3. 添加MAC校验规则到授权流程
- 进入配置目录下的
mods-enabled/文件夹,编辑sql配置文件 - 在文件中找到
authorize相关的配置块,把你修正后的mac_check查询规则添加进去 - 接着进入
/var/packages/RadiusServer/etc/raddb/sites-enabled/文件夹,编辑default站点配置文件 - 在
authorize段落中,确保sql模块的调用顺序在用户名密码校验逻辑之后,同时添加规则:如果mac_check查询无结果,直接返回接入拒绝。
4. 验证配置并重启服务
- 先执行命令测试配置语法是否正确:
radiusd -XC - 若返回
Configuration appears to be OK的提示,就可以重启RADIUS服务生效:synoservice --restart pkgctl-RadiusServer
注意事项
- 群晖RADIUS Server套件升级时会覆盖自定义配置,建议修改完成后将整个配置目录备份到个人存储空间,升级后重新恢复即可
- 如果需要调试,可以执行
radiusd -X开启实时debug日志,接入测试设备即可查看变量解析、SQL查询的完整执行过程,方便定位问题
内容的提问来源于stack exchange,提问作者rbe
相关产品推荐
相关产品推荐

