使用 strongSwan 构建 VPN 服务,我需要区分几组用户,其中每个组都分配有具有特定权限的特定子网(即“组 x”只能访问本地子网的特定部分,例如 192.168.10.10/ 32)。
官方的 strongSwan wiki 只允许使用 RADIUS 服务器进行所谓的“组选择” 。
现在,根据 Wiki,有两种可能获得组成员信息;通过读取和解释在 RADIUS-Accept 响应中发送的类属性或通过解释Filter-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 属性。我查找了Class属性并尝试设置守护程序无法读取的值(见上文)。
该文件还明确表示
第一行之后的缩进(带有制表符)行表示要传递回通信服务器以允许启动用户会话的配置值。这可以包括诸如 PPP 配置值或用户登录的主机之类的内容。
在网上搜索,这个关于 serverfault 的帖子似乎使用了类似的方法,但使用了另一个 LDAP 服务器。到目前为止,还不需要 LDAP 服务器,这意味着要依赖另一个依赖项或另一个服务。
我也不能使用明文密码(就像 Bob 一样),相反,我更喜欢基于证书的身份验证。
为基于组的策略设置 FreeRADIUS(以及,如有必要,任何其他依赖项)的正确方法是什么?我有什么可能性?
您在行尾缺少逗号
Reply-Message
。请参阅用户文件手册页中的示例。