使用 strongSwan 构建 VPN 服务,我需要区分几组用户,其中每个组分配有具有特定权限的特定子网(即“组 x”只能访问本地子网的特定部分,例如 192.168.10.10/32)。
strongSwan 官方 wiki 只允许所谓的“群组选择”使用 RADIUS 服务器。
现在,根据 Wiki,有两种方法可以获取群组成员信息;要么通过阅读和解释班级RADIUS-Accept 响应中发送的属性或通过解释过滤器 ID属性。本文并未强调某一种方法的优缺点。
尽管我觉得使用像 FreeRADIUS 这样的 RADIUS 服务器有点小题大做 - 我更喜欢 strongSwan、一些插件等提供的解决方案 - 但我设置并配置了 FreeRadius,但却遇到了困难。
我坚持使用第一种方法(使用班级属性来发回组成员信息)。
在 rlm_files 模块的配置文件(freeradius/3.0/mods_config/files/authorize
)中我设置了 Bob:
#
# The canonical testing user which is in most of the
# examples.
#
bob Cleartext-Password := "hello"
Reply-Message := "Hello, %{User-Name}"
# Class := "myclass"
身份验证没有问题,唯一缺少的是班级属性。此页面列出了所有可用的 FreeRADIUS 属性。我寻找班级属性并尝试设置守护进程无法读取的值(参见上文)。
该文件还明确指出
第一行后面的缩进行(使用制表符)表示要传回通信服务器以允许启动用户会话的配置值。这可以包括 PPP 配置值或用户登录的主机等内容。
搜索网络,serverfault 上的这篇文章似乎使用了类似的方法,但使用了另一个 LDAP 服务器。到目前为止,还不需要 LDAP 服务器,这意味着需要依赖另一个依赖项或另一个服务。
我不能使用明文密码(就像 Bob 那样),相反,我更喜欢基于证书的身份验证。
为基于组的策略设置 FreeRADIUS(以及必要时任何其他依赖项)的正确方法是什么?我有什么可能性?
答案1
您缺少行末的逗号Reply-Message
。
请参阅用户文件手册页。