1.什麼是wpa_spplicant
wpa_supplicant本是開源項目源碼,被穀歌修改後加入android移動平臺,它主要是用來支持WEP,WPA/WPA2和WAPI無 線協議和加密認證的,而實際上的工作內容是通過socket(不管是wpa_supplicant與上層還是wpa_supplicant與驅動都採用 socket通訊)與驅動交互上報資料給使用者,而使用者可以通過socket發送命令給wpa_supplicant調動驅動來對WiFi晶片操作。 簡單的說,wpa_supplicant就是WiFi驅動和用戶的中轉站外加對協定和加密認證的支援。
2.wpa_supplicant無線網路配置
目前可以使用wireless-tools 或wpa_supplicant工具來配置無線網路。請記住重要的一點是,對無線網路的配置是全域性的,而非針對具體的介面。
wpa_supplicant是一個較好的選擇,但缺點是它不支援所有的驅動。請流覽wpa_supplicant網站獲得它所支持的驅動列表。另 外,wpa_supplicant目前只能連接到那些你已經配置好ESSID的無線網路。wireless-tools支援幾乎所有的無線網卡和驅動,但 它不能連接到那些只支持WPA的AP。
經過編譯後的wpa_supplicant來源程式可以看到兩個主要的可執行工具:wpa_supplicant和wpa_cli。 wpa_supplicant是核心程式,它和wpa_cli的關係就是服務和用戶端的關係:後臺運行wpa_supplicant,使用wpa_cli 來搜索、設置、和連接網路。
運行wpa_supplicant程式;
執行:/system/bin/wpa_supplicant -d -Dwext -iwlan0 -c/etc/wpa_supplicant.conf
其中:
-d :增加調試資訊
-Dwext :wext,驅動名稱
-iwlan0 :wlan0,網路介面名稱
/system/bin/wpa_supplicant :wpa_supplicant可執行程式path
/etc/wpa_supplicant.conf 主要設定檔
/usr/share/examples/etc/wpa_supplicant.conf 範例設定檔
wpa_supplicant.conf 必須加入以下兩行
ctrl_interface=/var/run/wpa_supplicant #讓supplicant可以建立行程pid
update_config=1 #讓wpa_cli程式可以更新控制wpa_supplicant
1. 先設定系統啟動時使用wpa_supplicant
# vim /etc/rc.conf 加入
wlans_ath0="wlan0" #建立網卡介面freebsd8.0定義的,產生wlan0網卡介面
ifconfig_wlan0="WPA DHCP" #設定wlan0網卡使用wpa_supplicant認證並DHCP取得IP
2. 建立wpa_supplicant.conf設定檔
把剛剛所建立的wpa_supplicant.conf複製到/etc目錄下
此時重開機系統就會自動啟動,然而也可手動啟動
3. 手動啟動/停止/重啟wpa_supplicant
# /etc/rc.d/wpa_supplicant start|stop|restart wlan0
然而空空的設定檔,對於任何的AP都沒有定義,所以等於是做白工,因為現在最重要的部份就是開始寫你的設定檔,那要寫什麼列?以下是一些範例
4. 設定wpa_supplicant中AP的資訊和密碼,其實系統提供的範例就足夠參考了
# Shared WEP key connection
network={
ssid="wlan0" #AP名稱
key_mgmt=NONE #和wpa的psk是互斥的,沒指定就要使用psk)
wep_key0="1234512345" #需要的密碼
}
# Shared WEP key connection using Shared Key
network={
ssid="ap1411a"
key_mgmt=NONE
wep_key0="1234567890"
auth_alg=SHARED
}
# Planintext connection沒有上鎖的AP
network={
ssid="YZUWLAN"
key_mgmt=NONE
}
# WPA-PSK connection
network={
ssid="AP1411A"
psk="iplababab1411" #wpa認證密碼
}
5. 啟動wpa_supplicant
到這裡有兩種重啟方式,第一種直接reboot機器,第二使用以下指令
# /etc/rc.d/wpa_supplicant restart wlan0
6. 使用wpa_cli控制和管理wpa_supplicant
# wpa_cli -i wlan0 status (看看目前的狀態)
# wpa_cli -i wlan0 help (查看參數與指令)
# wpa_cli -i wlan0 terminate (關閉wpa_supplicant)
# wpa_cli -i wlan0 interface (查看有那些無線網卡介面)
# wpa_cli -i wlan0 list_networks (查看wpa_supplicant.conf檔裡的設定)
# wpa_cli -i wlan0 select_network (選擇不同的AP,id為AP代號0,1,2,3...)
# wpa_cli -i wlan0 enable_network
# wpa_cli -i wlan0 disable_network
# wpa_cli -i wlan0 remove_network (刪除AP資訊)
# wpa_cli -i wlan0 reconfigure (重新讀取wpa_supplicant.conf設定內容)
# wpa_cli -i wlan0 save_config (儲存寫入到wpa_supplicant.conf中,否責變更無效)
# wpa_cli -i wlan0 disconnect (斷線)
# wpa_cli -i wlan0 reconnect (重新連線)
# wpa_cli -i wlan0 scan (掃描附近的AP)
# wpa_cli -i wlan0 scan_results (印出附近AP的相關資訊)
以上常常用到的差不多是disconnect, reconnect, scan, scan_results, select_network, list_networks, status, reconfigure
※ wpa_supplicat是個非常好用的工具,讓我們不必自己去一行一行用指令去設定要連結的AP相關資訊,而可以透過 wpa_supplicant.conf設定檔,讓系統開機之後自動搜尋附近AP如果已建立資訊的,就會自動連結好,而如果你換了一個地方,要更換無線網 路設定,也只需要用wpa_cli select_network 就可以把網路切換過去。
wiki
https://wiki.archlinux.org/index.php/WPA_Supplicant_%28%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87%29
man
http://linux.die.net/man/5/wpa_supplicant.conf
留言列表