1. 下载hostapd
首先到官网上下载,我编译时是hostapd-2.6
解压并进入源码目录:1
2tar -xzvf hostapd-2.6.tar.gz
cd hostapd-2.6/hostapd
2. 复制源码目录下的defconfig到.config并编辑,如下操作:
1 | cp defconfig .config |
3. 编译hostapd
1 | make |
4. 错误处理
- ../src/drivers/driver_nl80211.c:22:31: fatal error:netlink/genl/genl.h: No such file or directory
原因:缺少libnl
解决方法1,从源安装:1
sudo apt-get install libnl-genl-3-200 libnl-genl-3-dev libnl-idiag-3-dev
解决方法2,编译安装:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20# 下载源码
wget http://www.infradead.org/~tgr/libnl/files/libnl-3.2.25.tar.gz
tar -xzvf libnl-3.2.25.tar.gz
# 编译安装
cd libnl-3.2.25/
./configure --prefix=/home/leux/develop/temp
make
sudo make install
# 修改hostapd 中 .config 指定的ssl和libnl头文件的路径为 /home/leux/develop/temp
CFLAGS += -I/home/leux/develop/temp/include
LIBS += -L/home/leux/develop/temp/lib
LIBS_p += -L/home/leux/develop/temp/lib
LIBS_c += -L/home/leux/develop/temp/lib
# 注意,这里的路径一定是要你移植的ssl库和libnl库对应的路径 /home/leux/develop/temp/include/libnl3/netlink/genl/
# 注意:将netlink/genl/ 移至 include/ 目录下,否则还是会找不到的,会报同样的错误的。
- ../src/crypto/tls_openssl.c:23:25:fatal error: openssl/ssl.h: No such file or directory
原因:缺少openssl库
解决方法1,从源安装:1
sudo apt-get install libssl-dev
解决方法2,编译安装:1
2
3
4
5
6wget https://www.openssl.org/source/openssl-1.1.0c.tar.gz
tar -xzvf openssl-1.1.0c.tar.gz
cd openssl-1.1.0c
./config --prefix=/home/leux/develop/temp
make
make install
5. 其他
hostapd使用十分简单,直接运行命令:
1
hostapd -B hostapd.conf
使用
iw dev
查看当前使用的频宽及信道强制使用40MHz频宽
hostapd开始是按设置使用40MHz的,只是当其检测到周边SSID使用40MHz时,就自动降为20MHz。可以修改代码,禁用检测判断。
仅限于hostapd-2.6,其他版本的更改请看这里
需要更改的文件:hostapd-2.6/src/ap/hw_features.c和ieee802_11_ht.c
- hostapd-2.6/src/ap/hw_features.c 文件修改。(注释掉319行的内容)
1 | iface->conf->channel, |
- hostapd-2.6/src/ap/ieee802_11_ht.c 文件修改。(注释掉大概从308行到331行的内容)
1 |
|
至此,已经强制使用40MHz频宽,速率也提升了。
END