「Wpa supplicant」の版間の差分
(108.162.226.85 (トーク) による版 3008 を取り消し) |
|||
3行目: | 3行目: | ||
[[es:WPA supplicant]] |
[[es:WPA supplicant]] |
||
[[it:WPA supplicant]] |
[[it:WPA supplicant]] |
||
− | [[ru:WPA |
+ | [[ru:WPA supplicant]] |
− | [[zh- |
+ | [[zh-cn:WPA supplicant]] |
{{Related articles start}} |
{{Related articles start}} |
||
{{Related|ネットワーク設定}} |
{{Related|ネットワーク設定}} |
||
22行目: | 22行目: | ||
== 概要 == |
== 概要 == |
||
− | 暗号化された無線ネットワークに接続するためにまず ''wpa_supplicant'' が WPA アクセスポイントから認証を取得します。このために、''wpa_supplicant'' を設定して適切な証明書をアクセスポイントに送信できるようにしておく必要があります。認証が成功したら、通常通り [[ |
+ | 暗号化された無線ネットワークに接続するためにまず ''wpa_supplicant'' が WPA アクセスポイントから認証を取得します。このために、''wpa_supplicant'' を設定して適切な証明書をアクセスポイントに送信できるようにしておく必要があります。認証が成功したら、通常通り [[ネットワーク設定#IP アドレスの設定|IP アドレスを取得]]してネットワークに接続することが可能になります。 |
== wpa_cli で接続する == |
== wpa_cli で接続する == |
||
47行目: | 47行目: | ||
インタラクティブプロンプト ({{ic|>}}) が現れます。タブ補完機能と完全なコマンドの説明があります。 |
インタラクティブプロンプト ({{ic|>}}) が現れます。タブ補完機能と完全なコマンドの説明があります。 |
||
− | {{Tip|ソケットの場所は {{ic|-p}} オプションを使って手動で設定することができます。また、{{ic|-i}} オプションを使って設定するインターフェイスを指定することも可能です。指定しなかった場合は ''wpa_supplicant'' によって管理されている無線インターフェイスで一番初めに見つかったインターフェイスが使われます。}} |
+ | {{Tip|コントロールソケットのデフォルトの場所は {{ic|/var/run/wpa_supplicant/}} ですが {{ic|-p}} オプションを使って手動で設定することができます。また、{{ic|-i}} オプションを使って設定するインターフェイスを指定することも可能です。指定しなかった場合は ''wpa_supplicant'' によって管理されている無線インターフェイスで一番初めに見つかったインターフェイスが使われます。}} |
{{ic|scan}} と {{ic|scan_results}} コマンドを使って利用可能なネットワークを表示してください: |
{{ic|scan}} と {{ic|scan_results}} コマンドを使って利用可能なネットワークを表示してください: |
||
67行目: | 67行目: | ||
> enable_network 0 |
> enable_network 0 |
||
<2>CTRL-EVENT-CONNECTED - Connection to 00:00:00:00:00:00 completed (reauth) [id=0 id_str=] |
<2>CTRL-EVENT-CONNECTED - Connection to 00:00:00:00:00:00 completed (reauth) [id=0 id_str=] |
||
+ | |||
+ | SSID にパスワード認証が設定されていない場合、{{ic|set_network 0 psk "passphrase"}} コマンドを {{ic|set_network 0 key_mgmt NONE}} に置き換えて明示的にパスワードを使わないとネットワークを設定してください。 |
||
{{Note| |
{{Note| |
||
77行目: | 79行目: | ||
OK |
OK |
||
− | これで WAP の設定は完了です。[[Core Utilities#ip|iproute2]] スイートを使用するか [[ |
+ | これで WAP の設定は完了です。[[Core Utilities#ip|iproute2]] スイートを使用するか [[systemd-networkd]] や [[dhcpcd]] などのネットワークプログラムを使って手動で設定して IP アドレスを取得してください。[[ネットワーク#IP アドレスの設定]]も参照してください。例えば: |
# dhcpcd ''interface'' |
# dhcpcd ''interface'' |
||
102行目: | 104行目: | ||
}} |
}} |
||
− | WAP との関連付けが完了したら、[[Core Utilities#ip|iproute2]] スイートを使用するか [[ |
+ | WAP との関連付けが完了したら、[[Core Utilities#ip|iproute2]] スイートを使用するか [[systemd-networkd]] や [[dhcpcd]] などのネットワークプログラムを使って手動で設定して IP アドレスを取得してください。[[ネットワーク#IP アドレスの設定]]も参照してください。例えば: |
# dhcpcd ''interface'' |
# dhcpcd ''interface'' |
||
138行目: | 140行目: | ||
また、{{ic|wpa_cli set}} を使うことでオプションの状態を見たり新しいオプションを設定することができます。この設定には複数の network ブロックを追記できます: サプリカントは関連付けを管理しそれら全てのローミングを行います。通常は network ブロックで定義された一番強いシグナルがデフォルトで接続されます、{{ic|priority<nowiki>=</nowiki>}} で挙動を変えることができます。 |
また、{{ic|wpa_cli set}} を使うことでオプションの状態を見たり新しいオプションを設定することができます。この設定には複数の network ブロックを追記できます: サプリカントは関連付けを管理しそれら全てのローミングを行います。通常は network ブロックで定義された一番強いシグナルがデフォルトで接続されます、{{ic|priority<nowiki>=</nowiki>}} で挙動を変えることができます。 |
||
− | {{ic|/etc/wpa_supplicant/wpa_supplicant.conf}} のカスタマイズした設定ファイルを使用する利点はデフォルトで [[ |
+ | {{ic|/etc/wpa_supplicant/wpa_supplicant.conf}} のカスタマイズした設定ファイルを使用する利点はデフォルトで [[dhcpcd]] によって使用されることです。その場合、オリジナルのバックアップを作成してその中の拡張 network ブロックの例を削除することができます。さもなければ、突然定義されたネットワークにデバイスが接続されても驚かないで下さい。どんな場合でも、設定ファイルの新しいバージョンへの変更は[[Pacnew と Pacsave ファイル|マージ]]するべきです。 |
{{Tip|通常スキャンでは表示されないように定義された、隠れたワイヤレス ''SSID'' の network ブロックを設定するには、network ブロックに {{ic|scan_ssid<nowiki>=</nowiki>1}} オプションを定義する必要があります。}} |
{{Tip|通常スキャンでは表示されないように定義された、隠れたワイヤレス ''SSID'' の network ブロックを設定するには、network ブロックに {{ic|scan_ssid<nowiki>=</nowiki>1}} オプションを定義する必要があります。}} |
||
159行目: | 161行目: | ||
# wpa_supplicant -B -i ''interface'' -c /etc/wpa_supplicant/example.conf |
# wpa_supplicant -B -i ''interface'' -c /etc/wpa_supplicant/example.conf |
||
− | [[Core Utilities#ip|iproute2]] スイートを使用するか [[ |
+ | [[Core Utilities#ip|iproute2]] スイートを使用するか [[systemd-networkd]] や [[dhcpcd]] などのネットワークプログラムを使って手動で設定して IP アドレスを取得してください。[[ネットワーク#IP アドレスの設定]]も参照してください。例えば: |
# dhcpcd ''interface'' |
# dhcpcd ''interface'' |
||
167行目: | 169行目: | ||
==== 起動時 (systemd) ==== |
==== 起動時 (systemd) ==== |
||
− | ''wpa_supplicant'' パッケージには複数の [[ |
+ | ''wpa_supplicant'' パッケージには複数の [[systemd]] サービスファイルが入っています: |
− | * {{ic|wpa_supplicant.service}} - [[ |
+ | * {{ic|wpa_supplicant.service}} - [[D-Bus]] を使用します、[[NetworkManager]] に推奨。 |
* {{ic|wpa_supplicant@.service}} - 引数としてインターフェイスの名前を指定することができ、そのインターフェイスで ''wpa_supplicant'' デーモンを起動します。{{ic|/etc/wpa_supplicant/wpa_supplicant-''interface''.conf}} の設定ファイルを読み込みます。 |
* {{ic|wpa_supplicant@.service}} - 引数としてインターフェイスの名前を指定することができ、そのインターフェイスで ''wpa_supplicant'' デーモンを起動します。{{ic|/etc/wpa_supplicant/wpa_supplicant-''interface''.conf}} の設定ファイルを読み込みます。 |
||
* {{ic|wpa_supplicant-nl80211@.service}} - 同じくインターフェイスを指定しますが、{{ic|nl80211}} ドライバーの使用を明示的に強制します (下記参照)。設定ファイルのパスは {{ic|/etc/wpa_supplicant/wpa_supplicant-nl80211-''interface''.conf}}。 |
* {{ic|wpa_supplicant-nl80211@.service}} - 同じくインターフェイスを指定しますが、{{ic|nl80211}} ドライバーの使用を明示的に強制します (下記参照)。設定ファイルのパスは {{ic|/etc/wpa_supplicant/wpa_supplicant-nl80211-''interface''.conf}}。 |
||
178行目: | 180行目: | ||
# systemctl enable wpa_supplicant@''interface'' |
# systemctl enable wpa_supplicant@''interface'' |
||
− | そのインターフェイスで [[ |
+ | そのインターフェイスで [[dhcpcd]] も有効にします: |
# systemctl enable dhcpcd@''interface'' |
# systemctl enable dhcpcd@''interface'' |
||
185行目: | 187行目: | ||
=== wpa_cli アクションスクリプト === |
=== wpa_cli アクションスクリプト === |
||
− | ''wpa_cli'' はデーモンモードで起動することができ ''wpa_supplicant'' からのイベントによって指定のスクリプトを実行することができます。2つのイベントがサポートされています: {{ic|CONNECTED}} と {{ic|DISCONNECTED}}。スクリプトにはいくつかの[[ |
+ | ''wpa_cli'' はデーモンモードで起動することができ ''wpa_supplicant'' からのイベントによって指定のスクリプトを実行することができます。2つのイベントがサポートされています: {{ic|CONNECTED}} と {{ic|DISCONNECTED}}。スクリプトにはいくつかの[[環境変数]]を使うことができます、詳しくは [http://linux.die.net/man/8/wpa_cli wpa_cli(8)] を見て下さい。 |
− | 以下の例では[[ |
+ | 以下の例では[[デスクトップ通知]]を使ってイベントをユーザーに通知します: |
{{bc| |
{{bc| |
||
205行目: | 207行目: | ||
$ wpa_cli -a ''/path/to/script'' |
$ wpa_cli -a ''/path/to/script'' |
||
+ | |||
+ | == トラブルシューティング == |
||
+ | === nl80211 ドライバーがサポートされていない === |
||
+ | |||
+ | ハードウェアによっては (特に古いハードウェアの場合)、以下のエラーで ''wpa_supplicant'' が失敗することがあります: |
||
+ | |||
+ | Successfully initialized wpa_supplicant |
||
+ | nl80211: Driver does not support authentication/association or connect commands |
||
+ | wlan0: Failed to initialize driver interface |
||
+ | |||
+ | 上記のエラーは標準の {{ic|nl80211}} ドライバーが指定のハードウェアをサポートしていないことを示しています。非推奨となっている {{ic|wext}} ドライバーならまだデバイスがサポートされている可能性があります: |
||
+ | |||
+ | # wpa_supplicant -B -i wlan0 '''-D wext''' -c /etc/wpa_supplicant/example.conf |
||
+ | |||
+ | 上記のコマンドで接続できた場合、[[systemd]] を使って無線接続を管理したいときは、パッケージに含まれている {{ic|wpa_supplicant@.service}} ユニットを[[systemd#ユニットファイルの編集|編集]]して {{ic|ExecStart}} 行を修正してください: |
||
+ | |||
+ | {{hc|/etc/systemd/system/wpa_supplicant@.service.d/wext.conf|2= |
||
+ | [Service] |
||
+ | ExecStart= |
||
+ | ExecStart=/usr/bin/wpa_supplicant -c/etc/wpa_supplicant/wpa_supplicant-%I.conf -i%I '''-Dwext''' |
||
+ | }} |
||
== 参照 == |
== 参照 == |
2015年10月31日 (土) 19:47時点における版
wpa_supplicant はクロスプラットフォームのサプリカントで WEP, WPA, WPA2 (IEEE 802.11i / RSN (Robust Secure Network)) をサポートしています。デスクトップやノートパソコン、組込みシステムを対象としています。
wpa_supplicant はクライアントステーションで使われている IEEE 802.1X/WPA コンポーネントです。WPA アクセスポイントとのキーネゴシエーションを実装しており、無線ドライバーのローミングと IEEE 802.11 認証/アソシエーションを制御します。
目次
インストール
公式リポジトリから wpa_supplicant をインストールしてください。
任意で、wpa_supplicant のグラフィカルフロントエンドである wpa_gui が入っている wpa_supplicant_gui もインストールしてください。
概要
暗号化された無線ネットワークに接続するためにまず wpa_supplicant が WPA アクセスポイントから認証を取得します。このために、wpa_supplicant を設定して適切な証明書をアクセスポイントに送信できるようにしておく必要があります。認証が成功したら、通常通り IP アドレスを取得してネットワークに接続することが可能になります。
wpa_cli で接続する
実行中に wpa_supplicant をインタラクティブに設定するのに使われるコマンドラインツール wpa_cli を利用します。この接続方法では利用可能なネットワークをスキャンすることができます。詳しくは wpa_cli(8) を見て下さい。
wpa_cli を使用するには、wpa_supplicant のコントロールインターフェイスを指定して設定を更新する権限を与える必要があります。最小限の設定ファイルを作成してください:
/etc/wpa_supplicant/example.conf
ctrl_interface=/run/wpa_supplicant update_config=1
そして次のコマンドで wpa_supplicant を起動します:
# wpa_supplicant -B -i interface -c /etc/wpa_supplicant/example.conf
ここで次を実行すると:
# wpa_cli
インタラクティブプロンプト (>
) が現れます。タブ補完機能と完全なコマンドの説明があります。
scan
と scan_results
コマンドを使って利用可能なネットワークを表示してください:
> scan OK <3>CTRL-EVENT-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
と接続するには、ネットワークを追加して証明書を設定し、有効にします:
> add_network 0 > set_network 0 ssid "MYSSID" > set_network 0 psk "passphrase" > enable_network 0 <2>CTRL-EVENT-CONNECTED - Connection to 00:00:00:00:00:00 completed (reauth) [id=0 id_str=]
SSID にパスワード認証が設定されていない場合、set_network 0 psk "passphrase"
コマンドを set_network 0 key_mgmt NONE
に置き換えて明示的にパスワードを使わないとネットワークを設定してください。
最後にこのネットワークを設定ファイルに保存してください:
> save_config OK
これで WAP の設定は完了です。iproute2 スイートを使用するか systemd-networkd や dhcpcd などのネットワークプログラムを使って手動で設定して IP アドレスを取得してください。ネットワーク#IP アドレスの設定も参照してください。例えば:
# dhcpcd interface
wpa_passphrase で接続する
この接続方法では SSID が既知のネットワークに素早く接続することができます。wpa_supplicant が使用する最小限の設定を作成するコマンドラインツール wpa_passphrase を使います。例:
$ wpa_passphrase MYSSID passphrase
network={ ssid="MYSSID" #psk="passphrase" psk=59e0d07fa4c7741797a4e394f38a5c321e3bed51d54ad5fcbd3f84bc7415d73d }
これは wpa_passphrase で wpa_supplicant が関連付けられることを意味し次のコマンドで簡単に起動できます:
# wpa_supplicant -B -i interface -c <(wpa_passphrase MYSSID passphrase)
WAP との関連付けが完了したら、iproute2 スイートを使用するか systemd-networkd や dhcpcd などのネットワークプログラムを使って手動で設定して IP アドレスを取得してください。ネットワーク#IP アドレスの設定も参照してください。例えば:
# dhcpcd interface
高度な使用方法
EAP を後で利用するなど、複雑性が変化するネットワークでは、カスタマイズした設定ファイルを作るのが有用かもしれません。設定の例と大要については、wpa_supplicant.conf(5) を参照してください。サポートされている設定パラメータの詳細についてはサンプルファイルの /etc/wpa_supplicant/wpa_supplicant.conf
を参照してください。
設定
wpa_passphrase で接続するを読めば明らかなように、基本の設定ファイルは次のコマンドで生成できます:
# wpa_passphrase MYSSID passphrase > /etc/wpa_supplicant/example.conf
これによって network
セクションだけが作成されます。よく使われるオプションを記述した設定ファイルは以下のようになります:
/etc/wpa_supplicant/example.conf
ctrl_interface=DIR=/run/wpa_supplicant GROUP=wheel update_config=1 fast_reauth=1 ap_scan=1 network={ ssid="MYSSID" #psk="passphrase" psk=59e0d07fa4c7741797a4e394f38a5c321e3bed51d54ad5fcbd3f84bc7415d73d }
network
ブロック以下は手動で追加するか、wpa_cli で接続するで説明されているように wpa_cli を使います。wpa_cli を使用するには、コントロールインターフェイスを ctrl_interface
オプションで設定する必要があります。GROUP=wheel
を設定することでユーザーが wpa_cli を実行するグループに属させることができます。また、update_config=1
を追加すると wpa_cli による example.conf
への変更が保存されるようになります。
fast_reauth=1
と ap_scan=1
は書き込み時にグローバルで有効になる wpa_supplicant オプションです。この2つのオプションや、その他のグローバルオプションが必要かどうかは、接続するネットワークのタイプによります。他のグローバルオプションが必要な場合、/etc/wpa_supplicant/wpa_supplicant.conf
からファイルにオプションをコピーしてください。
また、wpa_cli set
を使うことでオプションの状態を見たり新しいオプションを設定することができます。この設定には複数の network ブロックを追記できます: サプリカントは関連付けを管理しそれら全てのローミングを行います。通常は network ブロックで定義された一番強いシグナルがデフォルトで接続されます、priority=
で挙動を変えることができます。
/etc/wpa_supplicant/wpa_supplicant.conf
のカスタマイズした設定ファイルを使用する利点はデフォルトで dhcpcd によって使用されることです。その場合、オリジナルのバックアップを作成してその中の拡張 network ブロックの例を削除することができます。さもなければ、突然定義されたネットワークにデバイスが接続されても驚かないで下さい。どんな場合でも、設定ファイルの新しいバージョンへの変更はマージするべきです。
接続
手動
まず wpa_supplicant コマンドを起動します、よく使われる引数は:
-B
- バックグラウンドにフォーク。-c filename
- 設定ファイルのパス。-i interface
- listen するインターフェイス。-D driver
- 使用するドライバーを任意で指定。サポートされているドライバーのリストはwpa_supplicant -h
の出力を見て下さい。nl80211
が現在の標準ですが、全ての無線チップモジュールがこれをサポートしているわけではありません。wext
は現在推奨されていませんが、いまだに幅広くサポートされています。
引数の完全なリストは wpa_supplicant(8) を見て下さい。例:
# wpa_supplicant -B -i interface -c /etc/wpa_supplicant/example.conf
iproute2 スイートを使用するか systemd-networkd や dhcpcd などのネットワークプログラムを使って手動で設定して IP アドレスを取得してください。ネットワーク#IP アドレスの設定も参照してください。例えば:
# dhcpcd interface
起動時 (systemd)
wpa_supplicant パッケージには複数の systemd サービスファイルが入っています:
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
。
起動時にワイヤレスを有効にするには、上記のサービスのどれかを特定の無線インターフェイスで有効にしてください、例えば:
# systemctl enable wpa_supplicant@interface
そのインターフェイスで dhcpcd も有効にします:
# systemctl enable dhcpcd@interface
wpa_cli アクションスクリプト
wpa_cli はデーモンモードで起動することができ wpa_supplicant からのイベントによって指定のスクリプトを実行することができます。2つのイベントがサポートされています: CONNECTED
と DISCONNECTED
。スクリプトにはいくつかの環境変数を使うことができます、詳しくは wpa_cli(8) を見て下さい。
以下の例ではデスクトップ通知を使ってイベントをユーザーに通知します:
#!/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
トラブルシューティング
nl80211 ドライバーがサポートされていない
ハードウェアによっては (特に古いハードウェアの場合)、以下のエラーで wpa_supplicant が失敗することがあります:
Successfully initialized wpa_supplicant nl80211: Driver does not support authentication/association or connect commands wlan0: Failed to initialize driver interface
上記のエラーは標準の nl80211
ドライバーが指定のハードウェアをサポートしていないことを示しています。非推奨となっている wext
ドライバーならまだデバイスがサポートされている可能性があります:
# wpa_supplicant -B -i wlan0 -D wext -c /etc/wpa_supplicant/example.conf
上記のコマンドで接続できた場合、systemd を使って無線接続を管理したいときは、パッケージに含まれている wpa_supplicant@.service
ユニットを編集して ExecStart
行を修正してください:
/etc/systemd/system/wpa_supplicant@.service.d/wext.conf
[Service] ExecStart= ExecStart=/usr/bin/wpa_supplicant -c/etc/wpa_supplicant/wpa_supplicant-%I.conf -i%I -Dwext