1.WPA_Supplicant介绍
WPA_Supplicant:开源项目源码、它主要是用来支持WEP,WPA/WPA2无线协议和加密认证的,而实际上的工作内容是通过与驱动交互上报数据给用户而用户可以通过socket发送命令给wpa_supplicant调动驱动来对WiFi芯片操作。简单的说,wpa_supplicant就是WiFi驱动和上层用户的中转站外加对协议和加密认证的支持。
WPA_Supplicant是 WPA/WPA2 认证的客户端,同时也适用于 WEAP,即WPA_supplicant实现了WPA密钥与WPA认证及使用认证服务器Radius上的EAP认证的协商。
WPA_Supplicant被设计为一个运行在后台的守护进程来控制无线的连接,支持与WPA_cli前端程序的分离WPA_Supplicant分成两部分:WPA_cli及WPA_Supplicant.conf(配置文件)
1.1 WPA_Supplicant配置文件
WPA_Supplicant配置文件中包括两部分:全局参数、网络块
1.1.1 全局参数
使用如下形式来描述,具体的参数及值含义见下面描述:
parameter = value
- update_config
在配置文件中设置update_config = 1,即允许wpa_supplicant更新(覆盖)配置文
如:wpa_cli进行网络配置后会同步更新到wpa_supplicant.conf中
- ctrl_interface
wpa_cli前端程序与wpa_supplicant后台交互时使用的是socket控制接口,通常情况下/var/run/wpa_supplicant(linux使用的控制接口),udp(windows使用的控制接口)
- ctrl_interface_group
设置允许组的成员访问ctrl_interface控制接口,可以使用group id或group name来表示,当group id=0,即ctrl_interface_group = 0表示以root用户访问WPA的配置
当ctrl_interface与ctrl_interface_group同时定义时,可以使用如下方式进行定义
DIR=/var/run/wpa_supplicant GROUP=wheel
DIR=/var/run/wpa_supplicant GROUP=0
- eapol_version
wpa_supplicant 的实现是基于 IEEE 802.1X-2004定义的EAPOL 第二版本 的标准。然而很多AP没有正确地遵循这一新版本号,为了能让wpa_supplicant和这些接入点进行交互操作,默认eapol_version=1
When using MACsec, eapol_version shall be set to 3, which is defined in IEEE Std 802.1X-2010.
- ap_scan
ap_scan = 1使用wpa_supplicant来扫描和选择AP(默认的方式),并会先去匹配网络块中的AP,当不匹配时才会创建新的网络(AP模式或IBSS模式)
ap_scan = 0 使用驱动来扫描及选择AP
ap_scan = 2 使用驱动来扫描和选择AP,与ap_san = 0区别在于使用的是安全策略及SSID来连接AP,即必须包含key_mgmt, pairwise, group, proto 变量,并会尝试一个一个连接网络块中的AP直到驱动反馈连接成功
ap_scan