Hostapd初始化失敗


Hostapd

hostapd 是一個用戶態用於AP和認證服務器的守護進程。它實現了IEEE 802.11相關的接入管理,IEEE 802.1X/WPA/WPA2/EAP 認證, RADIUS客戶端,EAP服務器和RADIUS 認證服務器。

  1. hostapd配置文件

interface=ath16

bridge=br0

logger_syslog=-1

logger_syslog_level=2

logger_stdout=-1

logger_stdout_level=2

ctrl_interface=/var/run/hostapd

ctrl_interface_group=0

ssid=dlink

dtim_period=2

max_num_sta=255

macaddr_acl=0

auth_algs=1

ignore_broadcast_ssid=0

wme_enabled=0

ieee8021x=0

eapol_version=2

eapol_key_index_workaround=0

wpa=3

wpa_group_rekey=3600

wpa_pairwise=TKIP CCMP

wpa_key_mgmt=WPA-PSK

wpa_passphrase=12345678//

wpa_strict_rekey=0

其中需要注意的配置選項:當密碼的長度小於64的時候,使用wpa_passphrase關鍵字,當密碼的長度為64的時候,使用wpa_psk關鍵字。

Wpa_supplicant的配置文件:

ap_scan=1

network={

ssid="dlink"

scan_ssid=1

key_mgmt=WPA-PSK

psk="12345678"

proto=WPA RSN

pairwise=CCMP TKIP

group=CCMP TKIP

}

其中需要注意的配置選項:當密碼的長度小於64的時候,使用psk=”123456”,當密碼長度為64的時候,使用psk=………………………….(64位);

  2.hostapd使用時出錯

在項目中出現過station連接AP連接不上,有時候稍微等久一點時間,station又能夠連接上去了,最后發現問題在hostapd初始化的時候,函數:

int random_pool_ready(void)初始化hostapd的熵,初始化熵的時候,這個熵值是從/dev/random文件中讀取出來的,從打印的信息中發現了錯誤:

"WPA: Not enough entropy in random pool "

"for secure operations - update keys later when "

           "the first station connects");

熵:其實就是一串隨機值。在hostapd中熵的值來源於/dev/random,系統打印出上面的錯誤,意思就是/dev/random里面讀取的隨機值不夠hostapd所需要的。Hostapd中只需要從/dev/random里面讀取20個字節就可以了,但是為什么會不夠呢?這里需要說說/dev/random與/dev/urandom的區別。

         random設備的random pool是從基於中斷的IRQS里面取值,IRQS跟一些特殊的硬件綁定,基於這些硬件的interrupts將會提供給random設備。

           /dev/urandom不受interrupts的限制,即使沒有足夠的interrupt它也能通過 random number generator產生足夠的輸出值。

           說了兩者的區別以后就會發現一個很明顯的問題,就是random里面的值產生速度很慢,在hostapd起來的時候沒有足夠的值來做為熵的來源,而urandom產生的隨機值就非常的快,沒有什么限制,唯一區別:urandom比random更快速生成隨機數,但是隨機數的隨機性稍微差一些,有些可能相同。

           最后通過補全的方式來解決這個問題,先從random里面讀取數據,如果發現不夠,再從urandom里面讀取。


免責聲明!

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



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