WiFi wpa_supplicant-hostpad接口详细说明

wpa_supplicant/hostapd是Linux下用做sta/ap网卡操作的接口,项目基本做完,整理在此。

一、wpa_supplicant部分

wpa_supplicant是一个连接、配置WIFI的工具。它主要包含两个程序:wpa_supplicant与wpa_cli。二者的关系就是server与client的关系。通常情况下,我们可以通过wpa_cli来进行WIFI的配置与连接,如果有特殊的需要,可以编写应用程序直接调用wpa_supplicant的接口直接开发。
本文主要讲述如何通过wpa_cli进行WIFI的配置与连接。

2. 使用方法
2.1 启动wpa_supplicant应用
wpa_supplicant -D nl80211 -i wlan0 -c /etc/wpa_supplicant.conf -B
注意:/etc/wpa_supplicant.conf文件里,添加下面代码。

ctrl_interface=/var/run/wpa_supplicant
update_config=1

2.2 启动wpa_cli应用

 wpa_cli -i wlan0 scan             搜索附近wifi网络
 wpa_cli -i wlan0 scan_result      打印搜索wifi网络结果
 wpa_cli -i wlan0 add_network      添加一个网络连接

2.21 如果要连接加密方式是:[WPA-PSK-CCMP+TKIP][WPA2-PSK-CCMP+TKIP][ESS] (wpa加密) wifi名称是:wifi_name wifi密码是:wifi_psk

 wpa_cli -i wlan0 set_network 0 ssid '"wifi_name"'
 wpa_cli -i wlan0 set_network 0 psk '"wifi_psk"'
 wpa_cli -i wlan0 enable_network 0

2.22 如果要连接加密方式是:[WEP][ESS] (wep加密)
wifi名称是:wifi_name
wifi密码是:wifi_psk

 wpa_cli -i wlan0 set_network 0 ssid '"wpa_name"'
 wpa_cli -i wlan0 set_network 0 key_mgmt NONE
 wpa_cli -i wlan0 set_network 0 wep_key0 '"wap_psk"'
 wpa_cli -i wlan0 enable_network 0

2.23 如果要连接加密方式是:[ESS] (无加密)
wifi名称是:wifi_name

 wpa_cli -i wlan0 set_network 0 ssid '"wifi_name"'
 wpa_cli -i wlan0 set_network 0 key_mgmt NONE
 wpa_cli -i wlan0 enable_network 0

2.3 分配ip,netmask,gateway,dns
udhcpc -i wlan0 -s /etc/udhcpc.script -q

执行完毕,就可以连接网络了。

2.4 保存连接
wpa_cli -i wlan0 save_config
2.5 断开连接
wpa_cli -i wlan0 disable_network 0
2.6 连接已有的连接

$ wpa_cli -i wlan0 list_network             列举所有保存的连接
$ wpa_cli -i wlan0 select_network 0         连接第1个保存的连接
$ wpa_cli -i wlan0 enable_network 0         使能第1个保存的连接

2.7 断开wifi

$ ifconfig wlan0 down
$ killall udhcpc
$ killall wpa_supplicant

二 、 hostapd 部分
hostapd 是 Host Access Point 守护进程,提供对基于 Linux 的无线接入点的强 WPA2 加密和身份验证。
配置 hostapd 非常简单,它支持 WPA2-Personal 和 Enterprise,提供了对 WPA2-Personal 的独特修改,可让管理它变得更复杂或更简单。

udhcpd -f /etc/wificfg/udhcpd.conf &
hostapd -t /etc/wificfg/hostapd.conf	&

/*************************************************************************************************************************/

三、实际操作脚本:
上面是根据平时的工作写的备忘,查询使用;下面记着使用的 sta/ap的操作,以及在嵌入式下面的几个配置文件:
1. wpa-supplicant常用手顺:

wpa_supplicant -D nl80211 -i wlan0 -c/home/ky/wpa_supplicant.conf -B
wpa_cli -i wlan0 scan
wpa_cli -i wlan0 scan_result 
wpa_cli -i wlan0 add_network
wpa_cli -i wlan0 set_network 0 ssid '"ky"'
wpa_cli -i wlan0 set_network 0 psk '"12345678"'
wpa_cli -i wlan0 enable_network 0
udhcpc -i wlan0

wpa_cli -i wlan0 disable_network 0
wpa_cli -i wlan0 disable_network 1
wpa_cli -i wlan3 remove_network 0

wpa_cli -i wlan0 save_config
wpa_cli -i wlan0 list_network             
wpa_cli -i wlan0 select_network 2
wpa_cli -i wlan0 enable_network 2
udhcpc -i wlan0

wpa_supplicant.conf 配置文件内容:

ctrl_interface=/var/run/wpa_supplicant
update_config=1

network={
        ssid="hky"
        psk="12345678"
}

2.hostapd手顺:
ap模式比较简单

udhcpd -f /etc/wificfg/udhcpd.conf &
hostapd -t /etc/wificfg/hostapd.conf	&

udhcpd.conf 配置文件内容:和路由器配置界面的内容差不多
值得注意的是 租约文件(lease_file ) 这个配置文件,通常都建立在/var/tmp/目录下的,WiFi AP模式分配不了IP可能是没有建立这个文件,用touch建立一个就可

start           192.168.219.2
end             192.168.219.254
interface		wlan1
lease_file      /etc/wificfg/udhcpd.lease
opt     dns     168.95.1.1 192.168.10.2 192.168.10.10
option  subnet  192.168.0.0	netmask 255.255.255.0
opt     router  192.168.10.2
opt     wins    192.168.10.10
option  dns     129.219.13.81
option  domain  local
option  lease   864000

hostapd.conf配置文件内容:制定了AP的ssid 密码 加密方式 a/b/g/n等工作模式,当然工作模式也可以由WiFi模组的命令来改动

#
# This will give you a minimal, insecure wireless network.
# 
# DO NOT BE SATISFIED WITH THAT!!!
#
# A complete, well commented example configuration file is
# available here:
#
#	/usr/share/doc/hostapd/hostapd.conf
#
# For more information, look here:
#
#	http://wireless.kernel.org/en/users/Documentation/hostapd
#

ctrl_interface=/var/run/hostapd
ctrl_interface_group=root

# Some usable default settings...
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0

# Uncomment these for base WPA & WPA2 support with a pre-shared key
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

# DO NOT FORGET TO SET A WPA PASSPHRASE!!
wpa_passphrase=12345678

# Most modern wireless drivers in the kernel need driver=nl80211
driver=nl80211

# Customize these for your local configuration...
interface=wlan1
hw_mode=g
channel=11
ssid=ssidtest

over 了

你可能感兴趣的:(WiFi,-802.11,知识)