hostapd是一個linux下的wifi管理程序linux
安裝環境:ubuntu 16.04 LTSgit
hostapd能夠直接使用命令安裝,也能夠從源碼編譯安裝。這裏我使用從hostapd的源碼安裝配置,有兩種下載方式ubuntu
一是從官方的git倉庫裏獲取hostapd最新的開發版bash
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,並進行編輯。dom
cp defconfig .config vi .config
找到下面這行,去掉#註釋spa
#CONFIG_DRIVER_NL80211=y
而後就能夠對hostapd進行編譯了rest
make
再安裝code
sudo make install
在編譯過程當中,可能會遇到幾個問題router
問題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 libssl-dev libnl-3-dev libnl-genl-3-dev
若是仍是有問題,編輯.config文件,去掉如下語句的註釋,而後再次make。
#CONFIG_LIBNL32=y
在下載的hostapd目錄中有默認的配置文件hostapd.conf,但配置太多,對於初學者來講不是太好理解,先本身建立一個簡單的配置文件hostapd-minimal.conf,對hostapd的功能進行驗證。
編輯hostapd-minimal.conf文件
#wlan0爲你的無線網卡名稱 interface=wlan0 driver=nl80211 ssid=test hw_mode=g channel=1
完成配置後,可使用命令嘗試開啓hostapd
sudo 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 wasn't started
這是由於有其餘的網絡程序在佔用了無線網卡接口,你必須先關閉系統自己的無線網絡管理程序network manager.
sudo nmcli radio wifi off sudo rfkill unblock wlan sudo ifconfig wlan0 10.5.5.1/24 up
而後再打開hostapd。以下所示,表示你已經成功啓動了hostapd
Configuration file: hostapd-minimal.conf Using interface wlan0 with hwaddr 68:94:23:8b:88:a3 and ssid "test" wlan0: interface state UNINITIALIZED->ENABLED wlan0: AP-ENABLED
接下來用手機鏈接wifi,這時候就能夠搜到hostapd的wifi 「test」。可是手機連不上,這是由於電腦沒有安裝dhcp服務,不能給鏈接的終端分配ip地址
首先使用命令安裝dhcp server服務
sudo apt-get install isc-dhcp-server
而後編輯文件/etc/default/isc-dhcp-server,其中設置INTERFACES爲無線網卡名稱,以下所示:
INTERFACES="wlan0"
而後編輯文件/etc/dhcp/dhcpd.conf,在文本後面添加
subnet 10.5.5.0 netmask 255.255.255.0 { range 10.5.5.26 10.5.5.30; option domain-name-servers 8.8.8.8; option routers 10.5.5.1; option broadcast-address 10.5.5.255; default-lease-time 600; max-lease-time 7200; }
啓動dhcp server
sudo dhcpd
對於Internet鏈接共享,咱們須要IP轉發和IP轉換。啓用IP轉發,使用命令:
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
而後配置路由轉發表,命令以下,ppp0爲你的internet鏈接名稱
sudo iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
如今手機能夠鏈接wifi,可以上網,說明已經配置成功。可是重啓電腦後,不少步驟都須要從新來一遍,很麻煩。咱們能夠寫一個啓動腳本
#!/bin/bash
sudo nmcli radio wifi off
sudo rfkill unblock wlan
sudo ifconfig wlan0 10.5.5.1/24 up
sleep 4
sudo service isc-dhcp-server restart
echo 1| sudo tee /proc/sys/net/ipv4/ip_forward
sudo iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
sudo hostapd hostapd目錄/hostapd-minimal.conf