我的 freeradius 和 openldap 服务都在同一台服务器上。Freeradius 模式已加载到 openldap 中。
我配置了radiusProfileDN
一个用户的链接到一个组。在这个组中,我radiusReplyAttribute
设置了提供 vlan 的信息。
- 当我在本地(或从远程且已通过身份验证的客户端)使用该命令时
radtest
,我收到一个包含 vlan 信息的 Access-Accept 数据包(radius 协议)。wireshark 捕获显示数据包中存在 vlan 信息。
LDAP + Radius LDAP + Radius ----- Switch ----- Client
<-------- <-----------------------------
--------> or ----------------------------->
*vlan info* *vlan info*
- 当我使用该工具
wpa_supplicant
(peap-gtc 协议)时,我成功进行了身份验证,但客户端端口未添加到 vlan 组中。wireshark 捕获显示交换机和 Radius 服务器之间交换的 Access-Accept 数据包中没有 vlan 信息。
LDAP + Radius ----- Switch ----- Client
<------------------ <----------
------------------> ---------->
*no vlan info* wpa_supplicant
从 openldap 的日志中可以看出,使用 radtest 或 wpa_supplicant 进行身份验证的步骤相同:
- 允许对“mygroup”上的 radiusReplyAttribute 进行读取访问
- 结果在缓存中(radiusReplyAttribute)
- send_search_entry 退出
- 发送 ldap 结果和发送 ldap 响应
在 ldap 服务器中,我尝试将 vlan 信息直接放入用户中,或者放入已为 vlan 信息创建的“变量”中,但得到的结果相同。
你知道我的问题出在哪里吗?这似乎与 wpa_supplicant 使用与 radtest 命令和 freeradius 不同的协议有关(也许我在配置中漏掉了一行)?
答案1
我正在使用 peap-gtc 协议进行身份验证。
为了传递 Access-Accept 数据包中的属性信息,我必须编辑以下 freeradius 文件:mods-enabled/eap
。
peap {
use_tunneled_reply = yes
}
现在交换机端口已在相应的vlan中配置。