freeradius 和 openldap:vlan 归属与 radtest 兼容,但与 wpa_supplicant 不兼容

freeradius 和 openldap:vlan 归属与 radtest 兼容,但与 wpa_supplicant 不兼容

我的 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 进行身份验证的步骤相同:

  1. 允许对“mygroup”上的 radiusReplyAttribute 进行读取访问
  2. 结果在缓存中(radiusReplyAttribute)
  3. send_search_entry 退出
  4. 发送 ldap 结果和发送 ldap 响应

在 ldap 服务器中,我尝试将 vlan 信息直接放入用户中,或者放入已为 vlan 信息创建的“变量”中,但得到的结果相同。

你知道我的问题出在哪里吗?这似乎与 wpa_supplicant 使用与 radtest 命令和 freeradius 不同的协议有关(也许我在配置中漏掉了一行)?

答案1

我正在使用 peap-gtc 协议进行身份验证。

为了传递 Access-Accept 数据包中的属性信息,我必须编辑以下 freeradius 文件:mods-enabled/eap

peap {
    use_tunneled_reply = yes
}

现在交换机端口已在相应的vlan中配置。

相关内容