您的位置:首页 > 运维架构 > Linux

Linux下移植和配置wpa_supplicant

2016-06-14 11:19 295 查看
宿主机:Ubuntu 12.04 LTS

开发板:NUC970 (kernel version 3.10.x)

交叉编译器:arm-linux-4.3

无线网卡类型:RTL8188ETV

需要文件:wpa_supplicant-0.7.3 , openssl-0.9.8e

wpa_supplicant源码包,下载网站:
http://w1.fi/wpa_supplicant/
openssl库,下载网站:

www.openssl.org/source/openssl-0.9.8e.tar.gz

源码包放在 /wpa_tools 目录

1.编译 openssl 库

执行以下指令:

cd /wpa_tools

解压openssl-0.9.8e tar xvfz openssl-0.9.8e.tar.gz -C ./

解压wpa_supplicant-0.7.3 tar xvfz wpa_supplicant-0.7.3.tar.gz -C ./

将 wpa_supplicant-0.7.3/patches 中的补丁复制到 openssl-0.9.8e 目录

cp -a wpa_supplicant-0.7.3/patches/openssl-0.9.8e-tls-extensions.patch ../../openssl-0.9.8e

给 openssl-0.9.8e 打补丁

cd ../../openssl-0.9.8e

patch -p1 < ./openssl-0.9.8e-tls-extensions.patch

在当前目录建立一个 tmp 目录,用来安装openssl

mkdir tmp

修改 Makefile

CC= arm-linux-gcc

AR= arm-linux-ar $(ARFLAGS) r

RANLIB= arm-linux-ranlib

INSTALLTOP=/wpa_tools/openssl-0.9.8e/tmp

OPENSSLDIR=/wpa_tools/openssl-0.9.8e/tmp

执行 make && make install 安装

安装完成后,在 /wpa_tools/openssl-0.9.8e/tmp 会生成 openssl 库

后面编译 wpa_supplicant 会依赖 openssl 库,重点关注 lib 和 include 文件夹

2.编译 wpa_supplicant

cd /wpa_tools/wpa_supplicant-0.7.3/wpa_supplicant

复制配置文件:cp defconfig .config

修改配置文件 .config

在文件里添加以下内容

CC= arm-linux-gcc -L/wpa_tools/openssl-0.9.8e/tmp/lib

CFLAGS += -I/wpa_tools/openssl-0.9.8e/tmp/include/

LIBS += -L/wpa_tools/openssl-0.9.8e/tmp/lib/

执行 make

编译完成后,在 wpa_supplicant 目录下,会生成 wpa_supplicant ,wpa_cli ,wpa_passphrase 三个应用程序

3. 配置 wpa_supplicant

复制这三个应用程序 和 wpa_supplicant.conf 到 开发板的根文件系统

wpa_supplicant.conf 存放到 /etc 目录

三个应用程序存放在 /bin 目录

无线网卡参数

ssid:test

密码:12345678

安全类型:WPA2-PSK

使用 wpa_passphrase 来生成无线接入点配置文件,

在开发板的终端执行:

wpa_passphrase test 12345678 >> /etc/wpa_supplicant.conf

其中,test 为ssid ,12345678 为链接密码,生成的配置信息保存在 /etc/wpa_supplicant.conf

这时 /etc/wpa_supplicant.conf 文件的内容为 :

network={

ssid="test"

#psk="12345678"

psk=992194d7a6158009bfa25773108291642f28a0c32a31ab2556a15dee97ef0dbb

}

创建文件夹 mkdir -p /var/run/wpa_supplicant

继续在 /etc/wpa_supplicant.conf 文件中添加内容,完成后如下所示:

ctrl_interface=/var/run/wpa_supplicant

ap_scan=1

network={

ssid="test"

key_mgmt=WPA-PSK

scan_ssid=1

proto=RSN

psk=992194d7a6158009bfa25773108291642f28a0c32a31ab2556a15dee97ef0dbb

}

以下是对配置文件的解释:可参考:http://blog.csdn.net/ziyouwa/article/details/12081009

ctrl_interface=/var/run/wpa_supplicant 尽量不要修改此内容,否则无线网卡可能不工作

ap_scan=1 使用wpa_supplicant来扫描和选择AP

network里面的内容:

ssid:无线接入点名称

psk:加密后的连接密码

key_mgmt:认证密钥管理协议,有以下解释(出自 wpa_supplicant 的官方配置文档)

# key_mgmt: list of accepted authenticated key management protocols ---支持的协议列表

# WPA-PSK = WPA pre-shared key (this requires 'psk' field) ---一般都是这个,这就包括了WPA、WPA2开始的那些方式

# WPA-EAP = WPA using EAP authentication ---这个就是WEP开头的,猜的,求验证

# IEEE8021X = IEEE 802.1X using EAP authentication and (optionally) dynamically

# generated WEP keys

# NONE = WPA is not used; plaintext or static WEP could be used ---这个是开放的,没密码,联通、电信之类的就这个

# WPA-PSK-SHA256 = Like WPA-PSK but using stronger SHA256-based algorithms

# WPA-EAP-SHA256 = Like WPA-EAP but using stronger SHA256-based algorithms

# If not set, this defaults to: WPA-PSK WPA-EAP ---如果未设置,默认支持WAP、WEP开头那些

scan_ssid:如果无线接入点是隐藏的,这个配置项是必须的,否则无法找到接入点

proto:无线接入协议,有以下解释(出自 wpa_supplicant 的官方配置文档)

# proto: list of accepted protocols ---支持的协议列表

# WPA = WPA/IEEE 802.11i/D3.0

# RSN = WPA2/IEEE 802.11i (also WPA2 can be used as an alias for RSN) ---也能使用WPA2,它只是RSN的一个别名而已

# If not set, this defaults to: WPA RSN ---如果不设置,默认就是WPA RSN,即全部支持

pairwise:加密方式,这个选项没有写进network,采用默认配置,有以下解释(出自 wpa_supplicant 的官方配置文档)

# pairwise: list of accepted pairwise (unicast) ciphers for WPA ---WPA可用的加密方式列表

# CCMP = AES in Counter mode with CBC-MAC [RFC 3610, IEEE 802.11i/D7.0] ---看到没,这个就是AES,换了马甲而已

# TKIP = Temporal Key Integrity Protocol [IEEE 802.11i/D7.0] ---TKIP 这个倒是没变

# NONE = Use only Group Keys (deprecated, should not be included if APs support

# pairwise keys) ---这个估计很少用

# If not set, this defaults to: CCMP TKIP ---不设置的话是CCMP TKIP,看似正确,其实有些路由器无法自动识别,只能二选一,很坑爹。

添加完内容后,执行以下指令,测试无线网卡:

加载无线网卡驱动 insmod 8188eu.ko

关闭有线网卡:ifconfig eth0 down

打开无线网卡:ifconfig wlan0 up

设置无线网卡静态ip:ifconfig wlan0 192.168.1.123

执行以下指令,使 wpa_supplicant 后台运行

wpa_supplicant -Dwext -iwlan0 -c/etc/wpa_supplicant.conf &

参数说明:

-Dwext 驱动协议名称

-iwlan0 使用的无线网卡

-c/etc/wpa_supplicant.conf 无线接入点配置文件路径

& 后台运行

测试是否连接成功:

wpa_cli -iwlan0 status

ping 192.168.1.48

ping www.baidu.com
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: