wpa_supplicant

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Wpa supplicant and the translation is 100% complete.

wpa_supplicantネットワーク管理のうち認証の部分を処理する WiFi サプリカントであり、追加でインターフェースの起動も行うことができます。

インストール

前提条件として、Wifi/IEEE_802.11 で説明されているようにカーネルの無線サポートが有効になっていることと、無線デバイスドライバが必要な場合があります。[1]

USE フラグ

USE flags for net-wireless/wpa_supplicant IEEE 802.1X/WPA supplicant for secure wireless transfers

ap Add support for access point mode
broadcom-sta Flag to help users disable features not supported by broadcom-sta driver
crda Use net-wireless/crda for regulatory domain loading instead of in-kernel (4.15+) support
dbus Enable dbus support for anything that needs it (gpsd, gnomemeeting, etc)
eap-sim Add support for EAP-SIM authentication algorithm
eapol-test Build and install eapol_test binary
fasteap Add support for FAST-EAP authentication algorithm
fils Add support for Fast Initial Link Setup (802.11ai)
hs2-0 Add support for 802.11u and Passpoint for HotSpot 2.0
macsec Add support for wired macsec
mbo Add support Multiband Operation
mesh Add support for mesh mode
p2p Add support for Wi-Fi Direct mode
privsep Enable wpa_priv privledge separation binary
ps3 Add support for ps3 hypervisor driven gelic wifi
qt5 Add support for the Qt 5 application and UI framework
readline Enable support for libreadline, a GNU line-editing library that almost everyone wants
selinux !!internal use only!! Security Enhanced Linux support, this must be set by the selinux profile or breakage will occur
smartcard Add support for smartcards
tdls Add support for Tunneled Direct Link Setup (802.11z)
tkip Add support for WPA TKIP (deprecated due to security flaws in 2009)
uncommon-eap-types Add support for GPSK, SAKE, GPSK_SHA256, IKEV2 and EKE
wep Add support for Wired Equivalent Privacy (deprecated due to security flaws in 2004)
wimax Add support for Wimax EAP-PEER authentication algorithm
wps Add support for Wi-Fi Protected Setup

Emerge

USE フラグを確認して、Portage の emerge コマンドを使用して net-wireless/wpa_supplicant をインストールしてください:

root #emerge --ask net-wireless/wpa_supplicant

構成設定

ファイル

無線インターフェースのセットアップ

単一の無線インターフェースでの使用には、構成ファイルは 1 ファイルだけ必要になるでしょう。

ファイル /etc/wpa_supplicant/wpa_supplicant.conf
# 'wheel' グループに属するユーザに対して wpa_supplicant の制御を許可する
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel
 
# このファイルを wpa_gui / wpa_cli が書き込みできるようにする
update_config=1

wpa_gui / wpa_cli を使用した接続の制御を非特権ユーザに対して許可するには、ユーザを wheel グループに所属させてください。

このファイルはデフォルトでは存在していません。詳しく文書化されたテンプレート構成ファイルを /usr/share/doc/${P}/wpa_supplicant.conf.bz2 からコピーすることができます。ここで P 変数の値は現在 emerge されている wpa_supplicant の名前とバージョンです:

root #bzless /usr/share/doc/${P}/wpa_supplicant.conf.bz2 > /etc/wpa_supplicant/wpa_supplicant.conf

有線 802.1X セットアップ

wpa_supplicant を介して有線接続を扱うようにすることもできます。これは802.1X を使用するネットワークで便利です。有線の構成を保持する別の構成ファイルを作成してください。下の例では認証のために証明書を使用しています。他の方法の例については、wpa_supplicant.conf の man ページを確認してください。

ファイル /etc/wpa_supplicant/wpa_supplicant_wired.conf
ctrl_interface=/var/run/wpa_supplicant
eapol_version=1
ap_scan=0
fast_reauth=1
 
network={
	key_mgmt=IEEE8021X
	eap=TLS
	identity="COMPUTERAACT$@DOMAIN"
	ca_cert="/etc/wpa_supplicant/ca.pem"
	client_cert="/etc/wpa_supplicant/COMPUTERACCT.pem"
	private_key="/etc/wpa_supplicant/COMPUTERAACT.key"
	private_key_passwd="secret_password"
	eapol_flags=0
}

構成ファイルが機密情報を含んでいるので、chmod してください。

root #chmod 600 /etc/wpa_supplicant/wpa_supplicant_wired.conf

有線インターフェース (eth0) に対して上の構成設定を適用するために、wpa_supplicant に追加のパラメータを渡す必要があります 下の wpa_supplicant 引数 (-M, CONFIG_MATCH_IFACE=y) は wpa_supplicant がバージョン 2.6-r2 以降であることを前提としています

ファイル /etc/conf.d/wpa_supplicant
wpa_supplicant_args="-ieth0 -Dwired -c/etc/wpa_supplicant/wpa_supplicant_wired.conf -M -c/etc/wpa_supplicant/wpa_supplicant.conf"

ネットワークインターフェースを /etc/init.d から削除して、wpa_supplicant デーモンを有効化することで、wpa_supplicant にインターフェースの開始・停止を管理させます

root #/etc/init.d/net.eth0 stop
root #/etc/init.d/net.wlan0 stop
root #rm /etc/init.d/net.wlan0 /etc/init.d/net.eth0
root #rc-update add wpa_supplicant
root #/etc/init.d/wpa_supplicant start

wpa_cli を通じて有線インターフェースの状態を確認します

root #wpa_cli
wpa_cli v2.8
Copyright (c) 2004-2019, Jouni Malinen <j@w1.fi> and contributors
 
This software may be distributed under the terms of the BSD license.
See README for more details.
 
 
Selected interface 'p2p-dev-wlan0'
 
Interactive mode
 
> interface eth0
Connected to interface 'eth0.
> status
bssid=00:00:00:00:00:00
freq=0
ssid=
id=0
mode=station
pairwise_cipher=NONE
group_cipher=NONE
key_mgmt=IEEE 802.1X (no WPA)
wpa_state=COMPLETED
ip_address=10.10.10.100
p2p_device_address=bb:bb:bb:bb:bb:bb
address=aa:aa:aa:aa:aa:aa
Supplicant PAE state=AUTHENTICATED
suppPortStatus=Authorized
EAP state=SUCCESS
selectedMethod=13 (EAP-TLS)
eap_tls_version=TLSv1
EAP TLS cipher=ECDHE-RSA-AES256-SHA
...

ネットワークマネージャをセットアップする

重要
Network management の記事に列挙されているソリューションは通常、他のソリューションと同時に動作しません。これらサービスのうちひとつだけが同時に動作しているようにしてください。複数のネットワーク管理サービスを同時に起動すると予測できない結果をもたらすでしょう

利用したいサービスに対応するセットアップを選んでください。

ネットワークマネージャとして dhcpcd を使うようにセットアップする

wpa_supplicant を emerge してください(2017 年 4 月に追加されたCONFIG_MATCH_IFACE オプションを使用するためにはバージョン 2.6-r2 以上が必要です。)

root #emerge --ask net-wireless/wpa_supplicant

無線ネットワークインターフェースに -M オプションを指定して、 wpa_supplicant の conf.d ファイルを完成させてください:

ファイル /etc/conf.d/wpa_supplicant
wpa_supplicant_args="-B -M -c/etc/wpa_supplicant/wpa_supplicant.conf"

有線インターフェースのために認証が必要な場合は、設定ファイルは次のようになるでしょう

ファイル /etc/conf.d/wpa_supplicant
wpa_supplicant_args="-ieth0 -Dwired -c/etc/wpa_supplicant/wpa_supplicant_wired.conf -B -M -c/etc/wpa_supplicant/wpa_supplicant.conf"

構成が完了したら、サービスとして開始してください:

root #rc-update add wpa_supplicant default
root #rc-service wpa_supplicant start


非推奨の WEXT ドライバが必要な場合、無線ドライバを変えることで、接続直後に reason 3 で切断される問題が解決できることがあります。コンパイル時にビルドされた利用可能なドライバの一覧を確認するには、wpa_supplicant -h を実行してください。

ファイル /etc/conf.d/wpa_supplicantドライバを wext に設定する
wpa_supplicant_args="-D wext"

Gentoo net.* スクリプトを使うようにセットアップする

ネットワークスクリプトに wpa_supplicant を使うよう指示してください:

ファイル /etc/conf.d/net
modules_wlan0="wpa_supplicant"
config_wlan0="dhcp"

下の構成を実施後、WiFi パスワードがコンピュータを使用する全員に平文で見えることが無いように、パーミッションを変更するのは良い考えです: [2]

root #chmod 600 /etc/wpa_supplicant/wpa_supplicant.conf

NetworkManager を使うようにセットアップする

WiFi バックエンドとして wpa_supplicant を使うように NetworkManager を設定すると、必要なときに D-Bus を利用して wpa_supplicant を開始することができます。そのため、ブート時には wpa_supplicant サービス自体を止めたままにしておくのがおすすめです。

使い方

wpa_gui を使う

wpa_supplicant を使う最も単純な方法は wpa_gui というインターフェースを使用する方法です。これを有効化するには、qt5 USE フラグを有効にして wpa_supplicant をビルドしてください。

wpa_cli を使う

wpa_supplicant はコマンドラインのユーザーインターフェースも備えています。wpa_cli とタイプすると、タブ補完機能を持つインタラクティブモードで開始します。このプロンプト上で help とタイプすると、使えるコマンドを一覧表示するでしょう(下の wpa_cli コマンドの出力を見るには "展開する" をクリックしてください)。

user $wpa_cli
wpa_cli v2.5
 Copyright (c) 2004-2015, Jouni Malinen <j@w1.fi> and contributors
 
 This software may be distributed under the terms of the BSD license.
 See README for more details.
 
 
 Selected interface 'wlan0'
 
 Interactive mode
 
 > scan
 OK
 > scan_results
 bssid / frequency / signal level / flags / ssid
 01:23:45:67:89:ab       2437    0       [WPA-PSK-CCMP+TKIP][WPA2-PSK-CCMP+TKIP][ESS]    hotel-free-wifi
 > add_network
 0
 > set_network 0 ssid "hotel-free-wifi"
 OK
 > set_network 0 psk "password"
 OK
 > enable_network 0
 OK
 <3>CTRL-EVENT-SCAN-RESULTS 
 <3>WPS-AP-AVAILABLE 
 <3>Trying to associate with 01:23:45:67:89:ab (SSID='hotel-free-wifi' freq=2437 MHz)
 <3>Associated with 01:23:45:67:89:ab
 <3>WPA: Key negotiation completed with 01:23:45:67:89:ab [PTK=CCMP GTK=TKIP]
 <3>CTRL-EVENT-CONNECTED - Connection to 01:23:45:67:89:ab completed [id=0 id_str=]
 > save_config 
 OK
 > quit

接続する方法についてのさらなる詳細を Arch Linux wiki で確認できます。[3]

wpa_passphrase を使う

wpa_supplicant には、事前共有鍵(WPA-PSK、またの名をパスワード)ネットワーク向けのネットワークブロックを、コマンドラインから簡単に書き出すことができるツール、wpa_passphrase を含んでいます。

root #wpa_passphrase '<ssid>' '[passphrase]'

SSID は必須です。パスフレーズを省略した場合は、プロンプトで入力することができます。

出力結果は /etc/wpa_supplicant/wpa_supplicant.conf にコピーしたり、パイプしたりして使うことができます。

手動で編集する

もちろん、構成ファイル /etc/wpa_supplicant/wpa_supplicant.conf は手動で編集することもできます。しかしながら、複数のアクセスポイントへ接続する必要がある場合は、この作業は大変な手間となるでしょう。

ファイル例が man 5 wpa_supplicant.conf/usr/share/doc/wpa_supplicant-2.4-r3/wpa_supplicant.conf.bz2 にあります。

wpa_supplicant で WPA2 接続する

YourSSID を提供する任意の無線アクセスポイントに接続する

ファイル /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel
#ap_scan=0
#update_config=1
 
network={
        ssid="YourSSID"
        psk="your-secret-key"
        scan_ssid=1
        proto=RSN
        key_mgmt=WPA-PSK
        group=CCMP TKIP
        pairwise=CCMP TKIP
        priority=5
}

リピータが存在する場合に備えて、MAC アドレスを使ってどのアクセスポイントに接続すべきか指定するためには、bssid を使用します。psk を生成するためには忘れずに wpa_passphrase <ssid> [passphrase] を使用してください

ファイル /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel
ap_scan=1
 
network={
        bssid=00:50:17:31:1a:11
        ssid="YourSSID"
        psk="your-secret-key"
        scan_ssid=1
        proto=RSN
        key_mgmt=WPA-PSK
        group=CCMP TKIP
        pairwise=CCMP TKIP
        priority=5
}

すべての安全でないネットワークに自動接続する

ファイル /etc/wpa_supplicant/wpa_supplicant.conf
network={
        key_mgmt=NONE
        priority=-999
}

トラブルシューティング

思った通りに動作しない場合は、次のことを試してみて、出力結果を分析してください。

既知のバグを確認する

wpa_supplicant をデバッグモードで実行する

起動中のサプリカントのインスタンスをすべて停止してください:

root #killall wpa_supplicant

下のようなオプションがデバッグに有用です(下の出力を見るには "展開する" をクリックしてください):

root #wpa_supplicant -Dnl80211 -iwlan0 -C/var/run/wpa_supplicant/ -c/etc/wpa_supplicant/wpa_supplicant.conf -dd
wpa_supplicant v2.2
random: Trying to read entropy from /dev/random
Successfully initialized wpa_supplicant
Initializing interface 'wlp8s0' conf '/etc/wpa_supplicant/wpa_supplicant.conf' driver 'nl80211' ctrl_interface '/var/run/wpa_supplicant' bridge 'N/A'
Configuration file '/etc/wpa_supplicant/wpa_supplicant.conf' -> '/etc/wpa_supplicant/wpa_supplicant.conf'
Reading configuration file '/etc/wpa_supplicant/wpa_supplicant.conf'
ctrl_interface='DIR=/var/run/wpa_supplicant GROUP=wheel'
update_config=1
Line: 6 - start of a new network block

ログ出力を有効化する

Gentoo net.* スクリプトのログ出力を有効化する

ファイル /etc/conf.d/netGentoo net.* スクリプトを使う構成で使うための設定
modules_wlan0="wpa_supplicant"
wpa_supplicant_wlan0="-Dnl80211 -d -f /var/log/wpa_supplicant.log"
config_wlan0="dhcp"

上の設定後、出力を監視するためにターミナル内で tail コマンドを実行し、別のターミナルで net.wlan0 デバイスを再起動してください:

root #tail -f /var/log/wpa_supplicant.log
root #/etc/init.d/net.wlan0 restart

参照

関連項目

  • Iwd — an up-and-coming wireless daemon for Linux.

外部の情報