linux软AP--hostapd+dhcpd
linux軟AP--hostapd+dhcpd
2018年05月08日?? 綜合?? 共 4908字 ? 字號?小?中?大???評論關閉隨著手機、筆記本等無線設備的增多,公司里的家用三個無線路由器已經不堪重負,老是有人說連不上。誰讓咱是運維呢,在很多人眼里運維 =網管 (深表委屈),沒辦法就再兼一個企業網管的職務吧 。給BOSS提出的解決方案有二:一、購買企業無線路由
,價格從幾百到幾千不等,性能從支持30臺設備到100臺以也不等,最大速率從150M到1300M等也有很多檔次,還有一些其他參數和功能不再一一表述;二、購買無線網卡配合linux hostapd +dhcpd或dnsmasq ,功能方面可以根據需要自由擴展 ,成本一塊無線網卡100元以內,一臺退休的破臺機(而且可以兼做網關,ftp等用)。
?
一、網卡選擇
?
不同于windows上,大部分的網卡都支持軟AP ,linux下的網卡需要支持mode master的才可以做軟AP 。具體識別方法如下
1、iwconfig識別
[root@localhost ~]$ sudo iwconfig wlan0 mode master Password: Error for wireless request "Set Mode" (8B06) :SET failed on device wlan0 ; Invalid argument.?
2、iw識別
上面的操作失敗,證明不支持。再進行進一步的驗證,有些新的網卡用的是mac80211 framework,對于這些網卡的話,用iwconfig來測試它是否支持master模式是行不通的。
因為他們是使用新的 nl80211接口在用戶空間通信的。再使用iw命令進行測試:
?
如果「Supported interface modes」中有「AP」的話,那么恭喜你,你的無線網卡可以架設虛擬AP 。如果沒有則不支持。
3、驅動識別
[root@localhost ~]$ sudo ethtool -i wlan0 driver: iwlagn version: 3.0-ARCH firmware-version: 8.83.5.1 build 33692 bus-info: 0000:03:00.0 supports-statistics: no supports-test: no supports-eeprom-access: no supports-register-dump: no?
例如上面的示例中使用的驅動為iwlagn,通過http://wireless.kernel.org/en/users/Drivers?AP模式支持的驅動列表里的查找AP項為yes的未發現iwlagn
,證明其不支持。
即然如此,如何在未購買網卡前選擇一款一定支持的網卡呢?wireless.kernel.org也給我們提供了一個方法 ,通過http://wireless.kernel.org/en/users/Devices??硬件列表
(該頁按pci、usb、pcmcia接口類型做了區分,點開相應的類型即可查看具體的硬件)。當然,這個表里列出的并不完全,也并不能保證是最適合做軟AP的硬件?。是否識合請參查看上面的三個方法。
二、hostapd+dnsmasq配置
選擇好網卡,接下來就是linux下的軟件配置。以linux mint為例(基于ubuntu ,以下的示例同樣適用于ubuntu)
1、安裝軟件
[root@localhost ~]$ sudo apt-get install hostapd dnsmasq?
Dnsmasq是一個小巧且方便地用于配置DNS和DHCP的工具,適用于小型網絡 。如果網絡環境內的機器較多,建議換用dhcpd 。
2、hostapd配置
[root@localhost ~]$ sudo vim /etc/hostapd/hostapd.conf interface=wlan0 driver=nl80211 ssid=My_wifi channel=6 hw_mode=g ignore_broadcast_ssid=0 auth_algs=1 wpa=3 wpa_passphrase=11111111 wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP以上是一個示例配置,配置了一個AP名稱為My_wifi,密碼為8個1的wpa加密方式的軟AP 。配置完成后可以通過hostadp ?/etc/hostapd/hostapd.conf檢測文件配置?。配置文件正常的話可以通過/etc/init.d/hostapd
start啟動,啟動前,請確認以下行是否增加,如果該行值為空的話,請按下面修改
3、dnsmasq配置
?
#sudo vim /etc/dnsmasq.conf interface=wlan0 listen-address=192.168.100.1 #no-dhcp-interface= dhcp-range=192.168.100.50,192.168.100.150,12h server=/google/8.8.8.8?
上面配置了dnsmasq 監聽的接口,該接口的IP、dhcp地址的范圍、租期長短、dns等。如果想使用dhcpd也可以,這里省略dhcpd.conf的配置 。3、配置無線接入點IP
sudo ifconfig wlan0 192.168.100.1 netmask 255.255.255.0 up4、開啟主機的路由轉發
?
echo 1 >/proc/sys/net/ipv4/ip_forward以上配置為立即生效,但重啟系統后就會失效,可以使其重啟后有效的方法是修改/etc/sysct.conf文件,在其中增加如下一行:
?
#sudo vim /etc/sysctl.conf net.ipv4.ip_forward=1 #sysctl -p 生效?
5、共享上網
關于通過局域網eth0共享上網的方法有兩種:一種是橋接模式,一種是nat模式,這里以nat模式為例:
?
iptables -A FORWARD -i wlan0 -o eth0 -s 192.168.100.0/24 -m state --state NEW -j ACCEPT iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE?
?
通過以上步驟配置就可以完成無線AP上網了。
三、wifi-hostapd-ap工具
以上操作步驟也可以通過配置圖形化的工具去操作 ,該工具就是wifi-hostapd-ap?。該工具是由俄羅斯人開發,其圖形界面需要依賴qt 。該工具的安裝方式如下(還是以我筆記本的系統linux?mint為例):
# sudo apt-add-repository ppa:ekozincew/ppa # sudo apt-get update && sudo apt-get install wifi-hostapd-ap其他linux版本可以通過?https://code.google.com/p/wifi-hostapd-ap/downloads/list?頁面下載安裝。
?
不過該工具默認為俄語界面,內置的有英語,可通過以下方法修改。如下圖:
選擇好英語,點中間的鍵是保存,保存后退出wifi_hostapd_ap,然后再重新啟動。
如下圖所示已經變成英文,其中editor部分是關于模板的部分,有興趣的可以試試。
hostapd.conf配置相關部分
下面是dnsmasq.conf部分的配置
完成后點擊active激活所有的配置,客戶端連接上后,可以在list of clients上查看目前已連接的客戶端
該部分參考臺灣yahoo部落格格
四、其他
?
1、關于網卡不能使用軟AP模式
如常見的RTL8187卡王,在windows下可以很方便的做soft AP,換到?hostapd 下就不支持。個人感覺不是網卡硬件不支持,而是由于驅動不支持導致的。想要解決某些在windows下支持的在linux下也支持可以通過修改驅動解決 ,當然這需要想當高的水平 --- 個人觀點 ,不知道是否正確 。
2、freebsd下檢測網卡是否支持soft AP?
由于freebsd自身的移定性,很多像軟網關,軟AP都會選擇以freebsd為基礎進行更改,如大名鼎鼎的pfsense 。這里還是以卡王為例,因為手頭有這么一塊卡?。當時想在linux下不行,興許在freebsd下就會支持?。如何查看freebsd下無線網卡是否支持AP模式呢?
[root at thor ~]# ifconfig ndis0 ndis0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 2290ether 00:25:d3:93:50:c8media: IEEE 802.11 Wireless Ethernet autoselect (autoselect)status: no carrier [root at thor ~]# ifconfig ndis0 list caps ifconfig: unable to get device capabilities: Invalid argument [root at thor ~]# ifconfig wlan0 create wlandev ndis0 [root at thor ~]# ifconfig wlan0 wlan0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500ether 00:25:d3:93:50:c8media: IEEE 802.11 Wireless Ethernet autoselect (autoselect)status: no carrierssid "" channel 1 (2412 Mhz 11b)country US authmode OPEN privacy OFF txpower 0 bmiss 7 scanvalid 60bintval 0 [root at thor ~]# ifconfig wlan0 list caps drivercaps=1802303<STA,803ENCAP,IBSS,PMGT,TXPMGT,WPA1,WPA2> cryptocaps=b<WEP,TKIP,AES_CCM>?
如上面的操作所示,通過ifconfig wlan0 list caps命令查看輸出的結果里有沒有AP項,沒有表示也不支持。所以最終的結果是卡王在freebsd下也不支持。
freebsd soft AP相關的設置參看以下頁面
?
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/network-wireless.html
http://www.freebsdwiki.net/index.php/AccessPoint#Useful_Association_Commands
?
3、客戶端使用HOSTAPD無線AP時,網速不穩定
客戶端使用HOSTAPD無線AP時,網速不穩定,導致某些時刻無法打開網頁或者其它因為網絡超時導致的網絡不可訪問故障。?
該問題主要是因為無線數據傳輸校驗中隨機種子數較少導致的無線網絡數據傳輸時延過大導致的,用戶可以通過命令cat /proc/sys/kernel/random/entropy_avail來查看具體數值,該值一般小于1000,用戶需要通過在終端中執行sudo apt-get?install haveged命令安裝隨機數生成器(haveged),并使用/etc/init.d/haveged start命令來啟動隨機數生成器(haveged)提高entropy_avail數值。這樣無線網絡時延將恢復到正常狀態。網絡不在出現以上描述的問題。
轉載于:https://www.cnblogs.com/chenxi188/p/10786195.html
總結
以上是生活随笔為你收集整理的linux软AP--hostapd+dhcpd的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android中通过java的反射机制获
- 下一篇: [激光器原理与应用-3]:激光器的国外品