ubuntu下使用hostapd建立wifi熱點


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

安裝環境:ubuntu 16.04 LTS

 

第一部分 安裝和配置hostapd

下載hostapd源碼

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

 再安裝

sudo make install

 

在編譯過程中,可能會遇到幾個問題

問題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目錄中有默認的配置文件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地址

 

第二部分 安裝isc-dhcp-server

首先使用命令安裝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共享

對於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

 

                                   

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM