我在使用最新的 hostap 版本 v2.9 进行有线连接时遇到 MACsec 设置问题。我的设置很简单(仅用于测试) - HOSTAP 和 RADIUS 在同一台机器上,通过 RADIUS 协议在 127.0.0.1 上进行通信;wpa_supplicant 正在从通过网络接口连接到 HOSTAP 的另一台机器请求安全的以太网访问。EAP TLS 用于 HOSTAP 的客户端授权。wpa_supplicant 和 HOSTAP 之间用于授权的 EAP 帧交换通过多播地址 01:80:c2:00:00:03 进行。
问题:
- wpa_supplicant 由 RADIUS 成功验证,这由 HOSTAP 发送的“成功”EAP 帧指示。此时 EAPOL-MKA 应该介入。
- wpa_supplicant 发送一个 EAPOL-MKA 帧,据我了解,它是一种心跳或指示器。HOSTAP 不响应任何 EAPOL-MKA 帧,之后也不发送任何 EAPOL 帧。
- EAPOL-MKA“指标”被 wpa_supplicant 重复 3 次以上,这就是结束。
在认证完成阶段来自 hostapd 的调试跟踪片段:
...
...
EAP:EAP 进入状态 SUCCESS2
enp0s8:CTRL-EVENT-EAP-SUCCESS2 08:00:27:6e:f4:d8
IEEE 802.1X: 08:00:27:6e:f4:d8 BE_AUTH 进入状态成功
enp0s8:STA 08:00:27:6e:f4:d8 IEEE 802.1X:发送 EAP 数据包(标识符 112)
IEEE 802.1X: 08:00:27:6e:f4:d8 AUTH_PAE 进入状态 AUTHENTICATED
enp0s8: STA 08:00:27:6e:f4:d8 IEEE 802.1X: 授权端口
enp0s8:STA 08:00:27:6e:f4:d8 IEEE 802.1X:已验证 - EAP 类型:13 (TLS)
IEEE 802.1X:外部通知 - 为 08:00:27:6e:f4:d8 创建 MKA
MACsec: 成功获取密钥 (len=64)
MSK: - hexdump(len=64): [已移除]
MACsec:无法从 EAPOL 状态机获取 SessionID
IEEE 802.1X:无法获得 EAP 会话 ID
...
...
上述跟踪的最后两行指向一个我无法解释的问题。请指教。我的 hostapd.conf 设置是:
ieee8021x=1
eapol_version=3
eapol_key_index_workaround=0
use_pae_group_addr=1
驱动程序=macsec_linux
macsec_policy=1
eap_server=0
own_ip_addr=127.0.0.1
radius_client_addr=127.0.0.1
auth_server_addr=127.0.0.1
auth_server_port=1812
auth_server_shared_secret=testing123
acct_server_addr=127.0.0.1
acct_server_port=1813
acct_server_shared_secret=testing123
有趣的是,如果我使用相同的 hostapd 二进制文件,但将 hostapd.conf 更改为内置 EAP 身份验证器而不是外部 RADIUS 服务器,那么 EAPOL-MKA 会唤醒并成功启用 MACsec。在瘦情况下,在跟踪输出中未观察到“无法获取 SessionID...”行,并且 HOSTAP 发送 EAPOL-MKA 帧。
我的“好”案例的 hostapd.conf 设置与上面的配置不同,只有“eap_server=1”和用户文件和证书的路径。当然,RADIUS 相关部分完全被注释掉了。
请给我一个线索,在“坏”情况下可能会出现什么问题。以下 hostapd 跟踪输出的根本原因是什么?MACsec:无法从 EAPOL 状态机获取 SessionID IEEE 802.1X:无法获取 EAP 会话 ID