1、wpa_supplicant介绍--配置参数说明

转载自:[https://zhuanlan.zhihu.com/p/674052171] ,侵权请告知,立即删除。

一、wpa_supplicant简介及使用:
1. wpa_supplicant简介:

wpa_supplicant是linux系统和android系统用来配置无线网络的 开源工具,它是WPA的应用层认证客户端,负责完成WEP,WPA/WPA2和WAPI等无线协议认证相关的登录和加密等工作。

wpa_supplicant与内核层通过netlink通信,来完成应用层和驱动层间的控制命令和事件类型的数据交互。简单的说,wpa_supplicant就是wifi驱动和用户(wifi应用程序)的中间件,支持相关协议和加密认证。

而且是一个开源项目,目前已经被移植到Linux,Windows以及很多嵌入式系统上。

2. wpa_supplicant的运行方法

wpa_supplicant -D nl80211 -i wlan0 -c/etc/wpa_supplicant.conf
-D: 指定使用的 wifi 驱动接口方式,有nl80211和Wext两种方式。nl80211 = Linux nl80211/cfg80211; Wext: 采用比较老的 ioctl方式;

-i: 指定设备端口;

-C: 指定配置文件

-O: 覆盖新接口的 ctrl_interface 参数

-B: 后台运行;

-dd:打印出更多的debug信息,方便调试

例子:

  1. 运行STA模式:
wpa_supplicant -i wlan0 -s -D nl80211 -O/var/run/sockets -c/etc/wifi/p2p_supplicant.conf -B -dd

2)运行STA模式+p2p模式:

wpa_supplicant -wlan0 -D nl80211 -c/data/misc/wifi/wpa supplicant.conf -N -iwlan1 -c/data/misc/wifip2p supplicant.conf -B -dd
  1. wpa_supplicant的配置文件;
    对应的配置文件名称为wpa_supplicant.conf,路径一般linux系统位于/etc/wpa_supplicant/,android系统下位于:/etc/misc/wifi/目录下,当然也可以放在任意地方,在运行时指定,但此文件必须为可读写权限,因为连接网络成功后会对此配合文件作一些修改操作,保存连接的ssid和password。

    wpa_supplicant.conf中的选项非常多,且大部分选项都有默认设置,无需要修改。但如果能对其中的配置选项作进一步了解,那么就可更加灵活的使用wpa_supplicant这个工具了,而且里面的一些参数设置是非常重要的,必须了解其意义。

二、wpa_supplicant.conf配置选项详解:

 1. updata_config=1

—是否允许wpa_supplicant在运行过程中修改了配置信息,则需要把它们保存到到wpa_supplicant.conf文件中。
—在update_config = 1时 可以在客户端发送SAVE_CONFIG命令更新这个配置文件。

 1. ctrl_interface=/var/run/wpa_spplicant

—是默认推荐使用的存放套接字的目录,在这个目录中默认会生成一个文件/var/run/wpa_supplicant/wlan0。
wpa_cli和wpa_supplicant进程间通信时会使用它,这是local socket address,相当于UNIX
Domain Socket。
—全局配置控制接口的参数,如若参数是指定的,wpa_supplicant将会为外部程序打开控制接口从而管理wpa_supplicant。

3. DIR=/var/run/wpa_supplicant GROUP=wheel

DIR=/var/run/wpa_supplicant GROUP=0 (groud 可以是组的名称或者gid)
—在配置目录和组时,使用如上格式; —通过设置该目录从而只允许一组成员使用套接字,控制接口的接入控制可以得到配置。
由于该控制接口可以改变网络配置,在很多情况下这个接口需要被保护,wpa_supplicant一般都是以root权限运行的,所以如果想允许非root权限的用户去使用该控制接口的话,通过添加用户到该组就拥有了控制网络接口的权限了。

4. eapol_version=1

—IEEE 802.1X/EAPOL 版本。 wpa_supplicant 的实现是基于 IEEE 802.1X-2004定义的EAPOL 第二版本 的标准。但是很多AP没有正确地遵循这一新版本号,为了能让wpa_supplicant和这些接入点进行交互操作,默认eapol_version=1。

5. ap_scan=1

—接入点的扫描和选择。 —默认情况下,wpa_supplicant请求驱动程序执行接入点的扫描并使用扫描结果选择合适的接入点。 参数: 0: 驱动负责扫描和连接; 1: wpa_supplicant负责扫描和选择网络; 2:
驱动负责扫描和连接。但是通过使用安全的规则和SSID和接入点取得通信; 例如,使用增强型的设备驱动来操作隐藏了的SSID和优化漫游。

6. user_mpm=1

—对等网络管理模块(mpm)的实现选择,默认是1。 0: MPM管理功能在设备驱动中 实现;
1:MPM管理功能由wpa_supplicant 进程实现(当当AMPE 使能时,必须使用这个选项)

7. driver_param="field=value"

—设备驱动程序的接口参数
这个区域可以被用于配置随意的设备驱动接口参数。选择设备驱动接口的格式是指定的。在很多案例中这个区域是不起作用的。

8. country=US

----国家语言代码 当前设备驱动操作的国家语言代码

9. uuid=12345678-91bc-def0-1234-56789abcdef0

—建立Wi-Fi保护参数 设备通用唯一的标识符(UUID;参照RFC 4122) 如果没有配置,UUID将会被设置为本地MAC地址

10. device_name=Wireless Client

—设置设备名称. 对设备使用友好的描述;UTF-8编码的32个字节

11. manufacturer=Company

—设置制造商 设备的制造商(64个ASCII特征码)

12. model_name=cmodel

—设置型号 设备型号(32个ASCII特征码)

13. model_number=123

—设置型号编号 额外的设备描述(32个ASCII特征码)

14. serial_number=12345

—序列号 设备的序列号(32个ASCII特征码)

15. device_type=1-0050F204-1

—主设备类型 使用格式: -- subcateg =OUI-特定的整型类型数值子类 categ:整型类型的数值 OUI =组织唯一标识符;四个八位字节的16进制编码数值;WPS OUT默认为0050F204 例如:
1-0050F204-1 (Computer / PC)
1-0050F204-2 (Computer / Server)
5-0050F204-1 (Storage / NAS)
6-0050F204-1 (Network Infrastructure / AP)

16. os_version=01020300

—操作系统版本 操作系统版本数字的四个八位字节(16进制字符串)

17. bss_max_count=200

—保存在内存中最大的BSS 实体数量, 默认值为:200
这个选项可以被设置限制BSS 实体(扫描结果缓存)的内存使用。
在使用ap_scan=1模式时在环境中可能需要一个比较大的值存储大量的接入点。

18. autoscan=periodic:30

—自动扫描周期设置 (可选项)
1)这是一个设置自动扫描以下格式的接口的配置参数: autoscan=<自动扫描模块名称>:<模块参数>
2)自动扫描与bgscan类似,但处于断开连接或非活动状态;
例如指数模型上的参数将会为:autoscan=exponential:3:300
以上选项表示每次扫描的延时是基于3的指数的延时时间, 最大为300s (3,9,27,……300).
3) 对于周期性的模型,参数将会是<固定的整数> autoscan=periodic:30
以上参数表示30S一个周期自动扫描一次

19. filter_ssids=0

—SSID过滤-基于SSID扫描结果过滤
0: 表示对扫描结果不过滤(默认)
1: 表示从扫描结果中或者扫描结果缓存表中过滤出配置文件中的SSID

20. ext_password_backend=test:pw1=password|pw2=testing

—外部存储后端的密码(密码口令,等等)
格式:<后端名称>[:<后端参数选项>]

21. dtim_period=2

—DTIM周期的默认值(如果没有在代码程序中被重新设置的话)

22. beacon_int=100

—信标beacon帧间隔的默认值(如果没有在代码程序中被重新设置的话)

23. ap_vendor_elements=dd0411223301

—信标和探测响应帧的基本属性
该参数可以被用于增加另外的基本属性到信标和探测响应帧的末尾。这些属性的格式是一个十六位进制转储的原始信息元素(一个或多个元素的id+len+payload),这用于AP 和 P2P GO 模式下。

24. ignore_old_scan_res=0

—忽略请求扫描结果命令
当我们触发扫描命令时,设备驱动可能有扫描结果的返回信息,这个参数可以用于配置类似于被忽略旧的信息而不是更新内部BSS 列表。
–scan_cur_freq :是否只在当前频率下扫描 0:在所有可用的频率下扫描(默认) 1:如果另一个同一个无线 VIF已经取得关联下,在当前操作频率下扫描

25. mac_addr=0

—默认的MAC 地址规则 0:使用永久的MAC地址 1:给每个连接的ESS使用随机的MAC地址 2:类似于1,但是保持 OUI(本地管理位集)
默认情况下,使用永久的MAC地址,除非通过每一个网络mac_addr参数改变规则。
全局设置mac_addr=1 可以用于改变这个默认的配置行为。

26. rand_addr_lifetime=60

—随机MAC地址的存活时间(秒)(默认为60s)

27. preassoc_mac_addr=0

—每个关联操作的MAC地址规则(scanning(扫描)、ANQP(接入网络查询协议))
0=使用永久MAC地址
1=使用随机的MAC地址 2=类似于1,但是使用保持的MAC 地址(当地管理位集)

28. config_methods=label display push_button keypad

—配置方法 列表为所支持的配置方法
可行的方法:usba 以太网显示 ext_nfc_token int_nfc_token nfc_interface push_button keypad virtual_display physical_display virtual_push_button physical_push_button 标签
//对于 WSC 1.0
//配置方法=标签、显示、按钮、键盘

29. config_methods=label virtual_display virtual_push_button keypad

—对于 WSC 2.0 配置方法=标签、虚拟显示、虚拟按钮、键盘

30. wps_cred_processing=0

—认证进程 0=进程内部接受凭证(默认)
1=进程不接受凭证;只是通过在ctrl_iface上到外部程序
2=进程在内部接受凭证;只是通过在ctrl_iface上到外部程序

31. wps_vendor_ext_m1=000137100100020001

—WPS M1 的属性,比如window7垂直兼容 属性内容被添加到M1中(16位进制字符串)

32. wps_nfc_dev_pw_id: Device Password ID (16..65535)

wps_nfc_dh_pubkey: Hexdump of DH Public Key
wps_nfc_dh_privkey: Hexdump of DH Private Key
wps_nfc_dev_pw: Hexdump of Device Password
—WPS的令牌-NFC密码
这些参数可以被用于配置一个固定的站点NFC密码。这个可以通过某种方式产生,例如使用nfc_pw_token 。当这些参数被使用时,该站点假设已经包含匹配NFC密码部署。(例如:编写记录在nfc_pw_token中的NDEF)

33. wps_priority=0

—通过添加WPS优先使用网络 这个优先值将会将会被设置到每个网络配置文件(执行WPS 协议时添加的)

34. p2p_disabled=1

—取消P2P功能

35. p2p_go_max_inactivity=300

—移除不活动的STA的超时时间(默认为300S)
该超时时间值用于在P2P GO 模式下清除不活动的站点

36. p2p_passphrase_len=8

—P2P GO 密码长度(8-63)
这个参数控制在GO 生成的随机密码的长度。(默认为8)

37. p2p_search_delay=500

—并行进行P2P迭代搜索的额外延时时间 这个值增加额外的延时(ms)让p2p_find友好地并行操作,从而避免无线点占用100%的资源。该值默认为500ms

38. cert_in_cb=1

—cert_in_cb 是否在事件跳转过程中包含匹配证书。
这个选项控制是否在EAP匹配认证事件中包含服务器认证和认证链节的匹配认证。在默认情况下该选项是激活的。

39. fast_reauth=1

—EAP(extensible Authentication protocol)快速重认证
默认情况下,快速重认证对于支持所有EAP模式的情况下是激活的。

40. opensc_engine_path=/usr/lib/opensc/engine_opensc.so

—OpenSSL(安全套接字库)工具支持 这个选项可以被用于加载外部的OpenSSL工具,默认情况下没有工具被加载.
pkcs11_engine_path=/usr/lib/opensc/engine_pkcs11.so —激活pkcs11工具
pkcs11_module_path=/usr/lib/pkcs11/opensc-pkcs11.so —通过
pkcs11工具配置pkcs11模块请求路径
load_dynamic_eap=/usr/lib/wpa_supplicant/eap_tls.so
load_dynamic_eap=/usr/lib/wpa_supplicant/eap_md5.so —动态EAP方式
如果EAP建立动态共享对象文件,它们需要在使用网络语句块之前
在这里被加载。默认情况下,EAP方式在建立时是静态包含的,所以,这些选项是不必要的。

41. openssl_chipers=DEFAULT:!EXP:!LOW

—OpenSSL 密码字符串
这是配置OpenSSL默认密码的特定配置选项。如果没有设置,将会使用默认的“DEFAULT:!EXP:!LOW”。
OPenSSL关于密码配置套件的文档。只有在wpa_supplicant在建立时使用OpenSSL时才有效。

42. dot11RSNAConfigPMKLifetime=43200

—PMKSA最大的存活时间(秒);默认为43200

43. dot11RSNAConfigPMKReauthThreshold=70

—重认证的阈值(PMK存活时间的百分比);默认为70

44. dot11RSNAConfigSATimeout=60

—安全关联协议的超时时间(秒);默认为60

45. okc=0

—机会性密匙缓存(已称为主动型密匙缓存)(默认设置)
这个参数可以用于设置默认的proactive_key_caching参数行为。默认情况下,OKC是无效的除非使能全局变量okc=1或者每个网络中proactive_key_cachng=1。如若okc=1,OKC默认是有效的,不允许每个网络中的proactive_key_caching=0

46. pmf=0

—默认的保护管理架构 这个参数可以用于设置ieee80211w
参数的默认行为。默认情况下,PMF无效除非全局变量pmf=1/2,或者每个网络中都配置ieee80211w=1/2 这个参数。
当pmf=1/2 时PMF 默认是有效的和可被请求的。在每个网络中也可以使用ieee80211w 参数设置为失效。

47. sae_groups=21 20 19 26 25

—启用SAE有限循环群优先顺序 默认情况下(该参数没有设置)组19(组
ECC定义在超过256位的基本指令领域)是首选的选项,其他组也是激活的。如果该参数被设置,改组将会尝试控制命令。改组的值在IANA注册表中列出

48. interworking=1

Interworking (IEEE 802.11u) —激活Interworking

49. hessid=00:11:22:33:44:55

—纯质的ESS标志符 如果这个被设置,扫描将会用于回应只属于特定的Homogeneous
ESS的请求,这个只用于interworking激活的情形。

50. auto_interworking=0

—自动选择网络的行为 0=不自动通过互联网选择 1=执行互联网网络选择当一个或者多个认证已经配置和没有扫描到匹配的网络语句块

51.认证部分

—用于自动网络选择的每个认证将会构造为一组参数,当使用interworking_select and interworking_connect命令时,将会和APs发布的信息比较凭证字段:
–暂时的(temporary):认证是否是暂时的并且不被保存 --优先级(priority):优先级组
默认情况下,所有的网络和认证都将获取同等的优先级组(0)这个字段可以被用于认证的更高优先级(和网络语句块中的结构体wpa_ssid很类似),这样可以改变自动选择网络的行为。拥有更高优先级的匹配的网络(要么基于激活的网络语句块要么是认证凭证)将会被选择。
—pcsc:使用PC / SC和SIM/ USIM卡 —realm(领域):家庭领域的互联网
—username(用户名):互联网网络选择的用户名 —password(密码):互联网网络选择的密码
—ca_cert:互联网选择的CA认证 —client_cert:客户端认证文件的路径(PEM/DER)
以上字段适用于在客户端用认证/密匙来认证(EAP-TLS)的网络自动选择。文件的路径应该为绝对路径(wpa_supplicant运行于后台时可能会改变工作路径)。
另外一个blob的配置可以将此设置为blob://blob_name

53. 私人密匙:私人密匙(PEM/DER/PFX)的文件路径

cert://substring_to_match

hash://certificate_thumbprint_in_hex

—当使用PKCS#12/PFX文件时(.p12/.pfx),client_cert
应该被注释掉。这种情况下私人密匙和认证凭证将会从PKCS#12文件中读出。
完整的路径需要为绝对工作路径(wpa_supplicant运行于后台时可能会改变工作路径)通过从客户端认证中退出,windows下的认证储存可以被使用,并且私人密匙可以通过以下格式配置.

54. excluded_ssid: 过滤SSID

—这个选项字段可以用于从配置网络中过滤指定的SSID(S),多选项可以增加更多SSID

55. max_peer_link=99

—当前mesh网络维持的最大网络匹配数量(0-255;默认为99)

56. mesh_max_inactivity=300

—检测mesh网络中 不活动STA的超时时间(秒)(默认为300秒) 这个超时时间是用于STA网络清理不活动的站点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值