WPA Supplicant 用法


本文譯至:https://wiki.archlinux.org/index.php/WPA_Supplicant_%28%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87%29

 

wpa_supplicant 是跨平台的 WPAsupplicant,支持 WEP, WPA 和 WPA2 (IEEE 802.11i / RSN (Robust Secure Network)). 可以在桌面、筆記本甚至嵌入式系統中使用。

wpa_supplicant 是在客戶端使用的 IEEE 802.1X/WPA 組件, 支持與 WPA Authenticator 的交互,控制漫游和無線驅動的 IEEE 802.11 驗證和關聯。 

安裝

從 官方軟件倉庫 中安裝軟件包 wpa_supplicant

此外軟件包 wpa_supplicant_gui 提供了圖形界面wpa_gui。 

啟動

本節介紹啟動wpa_supplicant的常用方法,選擇一個最適合你的。

systemd

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

dhcpcd包含了一個鈎子(默認為啟用)來自動啟動對應無線接口的wpa_supplicant。它只在如下情況下啟動:

  • 沒有wpa_supplicant進程在該接口在監聽。
  • 存在一個wpa_supplicant的配置文件。dhcpcd 默認檢查 /etc/wpa_supplicant.conf 和 /etc/wpa_supplicant/wpa_supplicant.conf,但可以通過在/etc/dhcpcd.conf設置env wpa_supplicant_conf=configuration_file_path來添加自定義路徑。

手動

wpa_supplicant接受多個命令行參數,特別是:

  • -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工具自動生成並添加到配置文件中。這在連接到需要密碼的安全網絡時是有用的。例如:

$ wpa_passphrase essid passphrase
network={
    ssid="essid"
    #psk="passphrase"
    psk=f5d1c49e15e679bebe385c37648d4141bc5c9297796a8a185d7bc5ac62f954e3
}

一些異常復雜的口令可能需要從文件輸入:

$ wpa_passphrase essid < passphrase.txt
提示:wpa_supplicant和wpa_passphrase可以結合起來關聯到幾乎所有的WPA2(個人)網絡:
# 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_cli

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 補全和已完成命令的說明。

 

使用wpa_cli添加一個新的網絡

掃描可用網絡,在>提示符之后輸入“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

另請參閱


免責聲明!

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



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