本文譯至:https://wiki.archlinux.org/index.php/WPA_Supplicant_%28%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87%29php
wpa_supplicant 是跨平臺的 WPAsupplicant,支持 WEP, WPA 和 WPA2 (IEEE 802.11i / RSN (Robust Secure Network)). 能夠在桌面、筆記本甚至嵌入式系統中使用。linux
wpa_supplicant 是在客戶端使用的 IEEE 802.1X/WPA 組件, 支持與 WPA Authenticator 的交互,控制漫遊和無線驅動的 IEEE 802.11 驗證和關聯。 安全
從 官方軟件倉庫 中安裝軟件包 wpa_supplicant。bash
此外軟件包 wpa_supplicant_gui 提供了圖形界面wpa_gui。 網絡
本節介紹啓動wpa_supplicant的經常使用方法,選擇一個最適合你的。less
wpa_supplicant提供多種服務的文件:工具
wpa_supplicant.service
- 使用 D-Bus, 推薦 NetworkManager 的用戶.wpa_supplicant@.service
- 接受接口名做爲參數,併爲該接口啓動wpa_supplicant守護進程。它讀取/etc/wpa_supplicant/wpa_supplicant-interface.conf的配置文件wpa_supplicant-nl80211@.service
- 也是接口特定的,但明確強制nl80211驅動程序 (見下文). 配置文件路徑是/etc/wpa_supplicant/wpa_supplicant-nl80211-interface.conf
wpa_supplicant-wired@.service
- 也是接口特定的, 使用 wired
驅動. 配置文件路徑是/etc/wpa_supplicant/wpa_supplicant-wired-interface.conf
dhcpcd包含了一個鉤子(默認爲啓用)來自動啓動對應無線接口的wpa_supplicant。它只在以下狀況下啓動:ui
wpa_supplicant接受多個命令行參數,特別是:spa
-B
- 在後臺執行-c 文件名
-路徑配置文件-i 接口
- 監聽的接口關於完整的參數列表,參考 man 8 wpa_supplicant。例如,常見的用法是:命令行
# wpa_supplicant -B -i interface -c configuration_file
wpa_supplicant提供了一個參考配置文件/etc/wpa_supplicant/wpa_supplicant.conf,其中包含了全部可用的選項及其用法和例子的詳細文檔。考慮先把它備份起來,由於下面描述的自動添加網絡配置到wpa_supplicant.conf的方法下刪除了文件中的全部註釋。
在其最簡單的形式中,一個配置文件,只須要一個網絡配置塊。例如:
/etc/wpa_supplicant/foobar.conf
network={ ssid="..." }
一旦你有一個配置文件,如前節所述,就能夠啓動wpa_supplicant守護進程,並使用一個靜態IP或DHCP鏈接到無線網絡。
網絡配置可使用wpa_passphrase工具自動生成並添加到配置文件中。這在鏈接到須要密碼的安全網絡時是有用的。例如:
$ wpa_passphrase essid passphrase
network={ ssid="essid" #psk="passphrase" psk=f5d1c49e15e679bebe385c37648d4141bc5c9297796a8a185d7bc5ac62f954e3 }
一些異常複雜的口令可能須要從文件輸入:
$ wpa_passphrase essid < passphrase.txt
# wpa_supplicant -B -i interface -c <(wpa_passphrase essid passphrase)
您可能須要指定一個驅動來使用。關於支持的驅動程序的列表,請參考wpa_supplicant -h的輸出結果。
nl80211
是當前的標準,但不是全部的無線芯片的模塊支持。wext
目前已過期,但仍獲得普遍支持。使用 -D
開關來指定驅動:
# wpa_supplicant -B -i interface -c configuration_file -D driver
wpa_supplicant能夠經過使用wpa_cli命令,在運行時手動進行控制。要啓用wpa_cli,wpa_supplicant守護進程必須被配置爲經過在wpa_supplicant的配置文件(默認位置:/etc/wpa_supplicant/wpa_supplicant.conf)設置ctrl_interface變量來建立一個「控制接口」(套接字)。
用戶也將須要經過指定能夠訪問它的組來獲准訪問該套接字。一個新的組可能爲此被建立,而且用戶添加到它,或已存在的組可使用 - 一般是 wheel。
下面的設置將在/run/wpa_supplicant/中建立套接字並容許wheel組的成員進行訪問:
ctrl_interface=DIR=/run/wpa_supplicant GROUP=wheel
能夠經過wpa_cli修改的wpa_supplicant配置文件自身。這在手動添加新的網絡到配置文件,而無需從新啓動wpa_supplicant守護進程時是有用的。爲了實現這一目標,在配置文件中設置update_config變量設置爲1:
update_config=1
在wpa_cli開始以前,wpa_supplicant守護進程必須處於運行狀態。(見#Starting瞭解詳情)。而後啓動
$ wpa_cli
它會尋找配置文件中給定位置的控制套接字,位置也可使用p選項手動設置)。您可使用-i選項配置的接口,否則的話將使用wpa_supplicant所管理的第一個被找到的無線接口。
當wpa_cli被調用時,將出現交互式提示符(>)。提示包括tab 補全和已完成命令的說明。
掃描可用網絡,在>提示符以後輸入「scan」。在掃描完成後將顯示通知:
> scan OK <3>CTRL-EVENT-SCAN-RESULTS >
而後輸入 "scan_results" 來顯示結果:
> scan_results bssid / frequency / signal level / flags / ssid 00:00:00:00:00:00 2462 -49 [WPA2-PSK-CCMP][ESS] MYSSID 11:11:11:11:11:11 2437 -64 [WPA2-PSK-CCMP][ESS] ANOTHERSSID >
爲了與MYSSID相關聯,須要告知wpa_supplicant。在配置文件中的各個網絡是以零開始按數值進行索引。若是您添加了一個新的網絡,它會被相應地分配一個新數字。
> add_network 0 >
使用這個數字來指定你的設置應用到哪一個網絡。對於一個新的網絡,在引號裏設置其SSID:
> set_network 0 ssid "MYSSID" OK >
即便你的無線接入點沒有被保護,cli也顯式地須要一個PSK,一樣在引號內。密碼必須是8-63個字符:
> set_network 0 psk "passkey" OK >
使能:
> enable_network 0 OK >
將修改寫入配置文件:
> save_config OK >
wpa_cli能夠在後臺模式下運行,並執行基於wpa_supplicant事件的指定腳本。能夠支持兩類事件:鏈接和斷開。一些環境變量可用於腳本,細節請參考man 8wpa_cli。
下面的例子將使用桌面通知,通知有關事件的用戶:
#!/bin/bash case "$2" in CONNECTED) notify-send "WPA supplicant: connection established"; ;; DISCONNECTED) notify-send "WPA supplicant: connection lost"; ;; esac
記住修改腳本爲可執行,而後使用-a來傳遞腳本路徑給wpa_cli:
$ wpa_cli -a path_to_script