hostapd是一個帶加密功能的無線接入點程序,是Linux操作系統上構件無線接入點的一個比較方便的工具,支持IEEE 802.11協議和IEEE 802.1X/WPA/WPA2/EAP/RADIUS加密。
對於 hostapd,最關鍵的一步就是配置hostapd的配置文件了。源程序裏面包含了一個hostapd.conf文件(選項解釋),這個文件很大,裏面的配置項相當的多,從簡單到高級。但一般地我們能夠使用到的功能只是其中很少的一部分,下面介紹一下我認爲最常用的一些配置選項。首先介紹一些基本的配置項:
-------------------------------------- 基本配置 如下: -----------------------------------------
ssid=mytest hw_mode=g channel=10 interface=wlan0 bridge=br0 driver=nl80211 ignore_broadcast_ssid=0 macaddr_acl=0 accept_mac_file=/etc/hostapd.accept deny_mac_file=/etc/hostapd.deny
-------------------------------------------------------------------------------
上面列出的配置基本上是必須的,其中:
- ssid:別人所看到的我們這個無線接入點的名稱;
- hw_mode:指定802.11協議,包括 a = IEEE 802.11a, b = IEEE 802.11b, g = IEEE 802.11g;
- channel:設定無線頻道;
- interface:接入點設備名稱,注意不要包含ap後綴,即如果該設備稱爲wlan0ap,填寫wlan0即可;
- bridge:指定所處網橋,對於一個同時接入公網、提供內部網和無線接入的路由器來說,設定網橋很有必要;
- driver:設定無線驅動,我這裏是nl80211;
- macaddr_acl:可選,指定MAC地址過濾規則,0表示除非在禁止列表否則允許,1表示除非在允許列表否則禁止,2表示使用外部RADIUS服務器;
- accept_mac_file:指定允許MAC列表文件所在;
- deny_mac_file:指定禁止MAC列表文件所在;
下面介紹關於認證方式的配置:
auth_algs=1
其中auth_algs指定採用哪種認證算法,採用位域(bit fields)方式來制定,其中bit 0表示開放系統認證(Open System Authentication, OSA),bit 1 表示共享密鑰認證(Shared Key Authentication, SKA)。我這裏設置alth_algs的值爲1,表示只採用OSA;如果爲3則兩種認證方式都支持。不過很奇怪的是,在我工作中如果配置了3,不管採用WEP/WPA/WP2加密的方式都從沒連接成功過,配置爲2也是如此。所以在我的配置當中,如果採用認證,則設置auth_algs爲1;否則把這行代碼註釋掉(在前面加#)。
由於RADIUS認證需要提供外部RADIUS服務器,我們沒有這個功能,因此我只研究了WEP、WPA和WPA2這三種加密方式。
#wep_default_key=0 #wep_key0=1234567890 #wep_key1="vwxyz" #wep_key2=0102030405060708090a0b0c0d #wep_key3=".2.4.6.8.0.23" #wep_key_len_broadcast=13 #wep_key_len_unicast=13 #wep_rekey_period=300
如果要啓用WEP加密,只需配置wep_default_key和其中一個wep_keyx,其中x的值只能在0~3之間,wep_default_key的值必須啓用了。注意wep_keyx的值不是任意的,只能是5、13或16個字符(用雙引號括住),或者是10、26或32個16進制數字。由於WEP加密算法已經被破解了,所以通常不啓用它,全部註釋掉。
wpa=2 wpa_passphrase=12345678 wpa_key_mgmt=WPA-PSK #wpa_pairwise=TKIP CCMP rsn_pairwise=CCMP
現在推薦的加密方式是WPA/WPA2,配置是很簡單的:
- wpa:指定WPA類型,這是一個位域值(bit fields),bit 0表示啓用WPA,bit 1表示啓用WPA2。在我的配置中,置成2 可以正常連接;
- wpa_passphrase:WPA/WPA2加密需要指定密鑰,這個選項就是配置WPA/WPA2的密鑰。注意wpa_passphrase要求8~63個字符。另外還可以通過配置wpa_psk來制定密鑰,不過要設置一個256位的16進制密鑰,不適合我們的需求;
- wpa_pairwise/rsn_pairwise:如果啓用了WPA,需要指定wpa_pairwise;如果啓用了WPA2,需要指定rsn_pairwise,或者採用wpa_pairwise的設定。都可以設定成TKIP、CCMP或者兩者都有,具體含義我也沒仔細弄清楚。
上述配置完成以後,在終端執行hostapd /etc/hostapd/hostapd.conf -B(-B是需要在後臺運行的時候添加),到這裏,怎表明了第一個過程結束了,
也就是,我們在手機終端上可以搜索到 mytest這個接入點,但是無法連接到這個接入,應該此時出現的情況是:正在獲取IP地址,接下來給終端分配IP;