WPA Supplicant 用法

本文譯至: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_supplicantbash

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

啓動

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

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。它只在以下狀況下啓動:ui

  • 沒有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接受多個命令行參數,特別是: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工具自動生成並添加到配置文件中。這在鏈接到須要密碼的安全網絡時是有用的。例如:

$ 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

另請參閱

相關文章
相關標籤/搜索