Openldap

freeradius 和 openldap:vlan 歸屬與 radtest 一起使用,但不適用於 wpa_supplicant

  • January 24, 2022

我的服務 freeradius 和 openldap 都在同一台伺服器上。模式 Freeradius 被載入到 openldap 中。

我將radiusProfileDN使用者配置為連結到組。在這個組中,我已經radiusReplyAttribute設置了vlan的資訊。

  • radtest當我在本地(或從遠端且已通過身份驗證的客戶端)使用該命令時,我收到一個包含 vlan 資訊的 Access-Accept 數據包(半徑協議)。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. send_ldap_result & send_ldap_response

在 ldap 伺服器中,我嘗試將 vlan 資訊直接放在使用者中,或者放在已經為 vlan 資訊製作的“變數”中,但我得到了相同的結果。

你知道我的問題來自哪裡嗎?它似乎與 wpa_supplicant 使用不同的協議有關,而不是 radtest 命令和 freeradius (也許我錯過了配置中的一行)?

我正在使用 peap-gtc 協議進行身份驗證。

要傳遞 Access-Accept 數據包中的屬性資訊,我必須編輯以下 freeradius 文件:mods-enabled/eap.

peap {
   use_tunneled_reply = yes
}

現在交換機埠在相應的 vlan 中配置。

引用自:https://serverfault.com/questions/1090368