首页 > 代码库 > hostapd源码编译与配置

hostapd源码编译与配置

 

hostapd是一个linux下的wifi管理程序

 

下载hostapd源码

首先需要从官网下载hostapd的源码,这里有两种方式

 一是从官方的git仓库里获取hostapd最新的开发版

git clone git://w1.fi/srv/git/hostap.git
cd hostap/hostapd

 二是从官网下载一个稳定版本,http://w1.fi/hostapd/

wget http://w1.fi/releases/hostapd-2.6.tar.gz
tar xzvf hostapd-2.6.tar.gz
cd hostapd-2.6/hostapd

 然后,我们需要配置hostapd使得其能够获得nl80211驱动的支持。复制hostapd目录下的deconfig文件为.config,并进行编辑。

cp defconfig .config
vi .config

找到下面这行,去掉#注释

#CONFIG_DRIVER_NL80211=y

然后就可以对hostapd进行编译了。

make

 

在编译过程中,我们可能遇到几个问题

问题1:

driver_nl80211.c:21:31: warning: netlink/genl/genl.h: No such file or directory
driver_nl80211.c:22:33: warning: netlink/genl/family.h: No such file or directory
driver_nl80211.c:23:31: warning: netlink/genl/ctrl.h: No such file or directory
driver_nl80211.c:24:25: warning: netlink/msg.h: No such file or directory
driver_nl80211.c:25:26: warning: netlink/attr.h: No such file or directory

解决办法:

安装libnl和libssl库

sudo apt-get install linssl-dev libnl-3-dev

如果还是有问题,编辑.config文件,去掉以下语句的注释,然后再次make。

#CONFIG_LIBNL32=y

 

配置hostapd

在下载的hostapd目录中有默认的配置文件hostapd.conf,但配置太多,对于初学者来说不是太好理解,我们先自己创建一个简单的配置文件hostapd-minimal.conf,对hostapd的功能进行验证。

编辑hostapd-minimal.conf文件

#wlan0为你的无线网卡名称
interface=wlan0
driver=nl80211
ssid=test
hw_mode=g
channel=1

完成配置后,可以使用命令尝试开启hostapd

./hostapd ./hostapd-minimal.conf

可能会遇到如下错误

Configuration file: hostapd-minimal.conf
nl80211: Could not configure driver mode
nl80211: deinit ifname=wlp9s0b1 disabled_11b_rates=0
nl80211 driver initialization failed.
wlp9s0b1: interface state UNINITIALIZED->DISABLED
wlp9s0b1: AP-DISABLED 
hostapd_free_hapd_data: Interface wlp9s0b1 wasnt started

这是因为有其他的网络程序在占用了无线网卡接口,你必须先关闭系统本身的无线网络管理程序

sudo nmcli radio wifi off
sudo rfkill unblock wlan
sudo ifconfig wlan0 192.168.1.1/24 up

然后再打开hostapd。如下所示,表示你已经成功启动了hostapd

Configuration file: hostapd-minimal.conf
Using interface wlp9s0b1 with hwaddr 68:94:23:8b:88:a3 and ssid "test"
wlan0: interface state UNINITIALIZED->ENABLED
wlan0: AP-ENABLED 

接下来用手机连接wifi,发现可以搜到wifi信号,但是手机连不上。这是因为电脑没有dhcp和路由功能。接下来,我将安装dhcp相关程序,配置软件路由。

 

hostapd源码编译与配置