wpa_supplicantとはWPA(AES、TKIP など)を無線LANクライアントに提供するツールで、LinuxでWPA-PSKを設定したい場合はこのツールを使用します
設定項目としてAPのESSIDとkeyが必要となります
Linux無線LAN関連の記事はこちらになります
ちなみにタイトルが(作成中)となっていますが、多分永遠に未完(笑)です
無線LAN設定手順
この記事はLinuxの無線LAN設定の手順となります
ひととおり、検証も含め実際に設定しましたが
部分的にあいまいだったり、再度検証しなければいけない部分は★要確認としています
参考程度にしていただければと思います
設定ファイル
/etc/wpa_supplicant/wpa_supplicant.conf | 使用するインターフェース、ドライバの指定 |
/etc/sysconfig/wpa_supplicant | 認証方法の指定など |
1.WPAで接続する場合、keyを暗号化して送信することができるので、”wpa_passphrase”コマンドにて暗号化させる(ESSID、key は AP で確認できる)
(例)以下の場合
ESSID ・・・ aaaaaaaaaa
key ・・・bbbbbbbbbb
暗号化された key ・・・ccccccccc
↓
> wpa_passphrase aaaaaaaaaa bbbbbbbbbb
“/etc/wpa_supplicant/wpa_supplicant.conf”の中身はこうなる
network={
ssid=”aaaaaaaaaa”
#psk=”bbbbbbbbbb”
psk=cccccccccc
}
2.”/etc/wpa_supplicant/wpa_supplicant.conf”を編集するctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
ap_scan=1 ←?
network={
ssid=”aaaaaaaaaa” ①
#psk=”bbbbbbbbbb” ②
psk=cccccccccc ③
proto=WPA ④
key_mgmt=WPA-PSK ⑤
pairwise=CCMP ⑥
group=CCMP ⑦
その他のパラメータ
scan_ssid=
priority=
eap=
identity=
password=
ca_cert=
client_cert=
private_key=
private_key
phase=
設定手順
①使用するAPの「ESSID」を指定
②暗号化させる前の元の key(必須項目ではない)
③暗号化させたkeyを指定
①~③を”1”で出力したものに差し替える(デフォルトの状態で差し替える時はssidのみ、他は追記する)
④使用するプロトコルを指定
(”WPA”、”WPA2″、”RSN”)を指定(項目の記述が無い場合は “WPA” となる) ←★要確認
⑤鍵の管理方式を指定
NONE,WPA-PSK,WPA-EAPなど(項目の記述が無い場合は “NONE”となる)
⑥AES使用時は “CCMP”、TKIP使用時は “TKIP” と記述、また、”CCMP TKIP” のように両方記述すること
3.”/etc/sysconfig/wpa_supplicant”を編集する
以下の項目を掲載する
INTERFACES=”-iethX” 対象の wirelessインターフェースを指定する
DRIVERS=”-Dwext” 対象ドライバを指定する(zd1211rw の場合)
DRIVERS=”-Dndiswrapper” 対象ドライバを指定する(ndiswrapperの場合)
他はすべてコメントアウト(行頭に”#”をつける)すること
4.インターフェースを設定する
最低限必要な項目
DEVICE=eth1
ONBOOT=yes
BOOTPROTO=dhcp
HWADDR=00:1d:73:38:88:6f
TYPE=Wireless
>>WEP64、WEP128の場合(上記の項目に追加)
ESSID=aaa
KEY=bbb
※wpa_supplicantを使用しない時の設定
>>AES、TKIP の場合(上記の項目に追加)
SSID=aaa
■その他のパラメータ
MODE=Managed ←設定なしは”Managed”になる
ちなみにwpa_supplicantは必要ない ←★要確認
wpa_supplicantを必要とするのはAES,TKIP、尚、この場合だとifcfg-ethxの設定にESSID(SSIDでもどっちでもいいみたい)のみを記入しとけばいい
また、AES,TKIPの場合はkeyまで残すと有効時”Error for wireless request “Set Encode” (8B2A) :”のようなエラーがでる ←これは暗号化してないから?wpa_passphreseで暗号化したならいけるとか? ←★要確認
まぁ、エラーがでてもwpa_supplicant.confの設定にwpa_passphraseで暗号化したESSIDとPKIが記入してあればOK ←パスフレーズ暗号化は必須なのか?
ifcfg-ethXの設定よりwpa_supplicant.confを優先するっぽい
また、iwconfigでも設定できる
iwconfig [インターフェース] essid [SSID]
iwconfig [インターフェース] key [key]
16進数で指定する場合は4けたづつハイフンで区切る。また,文字列で指定する場合は先頭に「s:」を付ける。
応用:無線LANの転送レートを設定する
iwconfig [インターフェース] rate auto
無線LANの転送レートは,iwconfigコマンドの「rate」オプションの後に指定する。11M,5.5Mなど周波数を指定するが,自動設定にしたい場合は「auto」を設定する
※iwconfigにて無線LAN設定を行うと設定が保存されないらしく、リブート後に設定が消えてしまうので、ifcfg-ethX、wpa_supplicant.confなどに記述する方法を推奨する
・CCMP、TKIP
SSID記述、wpa_supplicant起動
・WEP64、WEP128
SSID、key記述
SSID記述、wpa_supplicant起動
ctrl_interface=/var/run/wpa_supplicant
network={
ssid=”your_ap”
scan_ssid=1
key_mgmt=NONE
wep_key0=0123456789
}
5.OS起動時にサービスが起動するようにする
# chkconfig wpa_supplicant on
6.サービスを起動させる
service wpa_supplicant start
→ これにより、wpa_supplicantがバックグラウンドで稼働することになる(プロセス名:wpa_supplicant -B -Dmadwifi -iath0 -c/etc/wpa_supplicant/wpa_supplicant.conf)
ログを確認するためにフォアグラウンドで起動させたい場合は -Bオプションを指定しない
-Dでドライバ名、-iでインタフェース、-cで設定ファイルを絶対パスで指定する。
7.プロセスが実行できている確認するにて確認する
# ps -ef | grep wpa_supplicant
■接続状態の確認
APがdhcpサーバ も兼ねている時、APとのが認証を成功させてから 無線LANクライアントはアドレスを自動取得している(dhcp)よう
これはインターフェースさえ起動していれば、アドレス取得の有無に関係なく “iwlist [インターフェース] scan” で確認すると、周りの AP の情報を取得できていることからわかる
つまり、アドレスが 無線LANクライアントに振られていなくても、APと通信ができるということ
これはwpa_supplicantが作動しているからできることである
つまり、障害対応として “iwlist [インターフェース] scan” にて認証が成功しているか確認する
さらに”iwconfig”にてAccess Point: Associatedになっていることを確認する
そうすることにより、無線LANの設定自体は間違っていないことになる
TCP/IPの問題かインターフェースの設定ミスの可能性が濃厚となる
接続した後、iwlistで確認する
# iwlist [インターフェース] scan
Cell 01 – Address: XX:XX:XX:XX:XX:XX
ESSID:”59421AFE3E31A1DC26AB56E12BEFB4E7″ ← AP で現在使用している ESSID を確認できる
Protocol:IEEE 802.11g
Mode:Managed
Frequency:2.462 GHz (Channel 11)
Quality:6/100 Signal level:-92 dBm Noise level:-96 dBm
Encryption key:on
Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
48 Mb/s; 54 Mb/s
Extra:bcn_int=100
Extra:atim=0
IE: WPA Version 1
Group Cipher : CCMP
Pairwise Ciphers (1) : CCMP
Authentication Suites (1) : PSK
eth1 IEEE 802.11b/g ESSID:”0E864B39661ECF5516F5F16D1C746863″ Nickname:”zd1211″
Mode:Managed Frequency:2.412 GHz Access Point: 00:16:01:90:E7:AB
Bit Rate=24 Mb/s
Encryption key:3836-4232-3136-3836-3737-3845-46 Security mode:restricted
Link Quality=62/100 Signal level=36/100
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
Managed:アクセスポイントを介して通信する
Master:アクセスポイントになることができる
Ad-Hoc:アクセスポイントを介さずに通信することができる
key のオプション指定
(openはオープンセキュリティを指定する(最も安全)
restrictedは制限セキュリティを指定する(最小限の安全))
■仕組み
ifcfg書式
■その他
・GUIで認証パスワードを設定すると”/etc/sysconfig/network-scripts”にkey-ethxというファイルが生成される
作成された場合は文字列じゃなくても “s:” が付いてしまう
KEY=s:xxxxxxxxx
こんな回りくどいやり方をしなくてもifcfg-ethxに直接 key を書き込むほうがよい
・Ad-Hocにするとつながらない。繋ぐとすればManagedモードにする
wap_supplicant.conf、ifcfg-ethXにmode=xxxxの指定が無ければデフォルトはmanagedモード
そのあとモードを変更して、ブランクにしてもその設定が残るので明示的に指定する方が安全
(おそらく AP側 に残った設定を継続するため)
例:
mode=Ad-Hoc
↓
#mode=Ad-hoc or ブランク
この場合だとAd-Hocを維持してしまう
・ifcfg-ethxの設定値でWEP128,WEP64の”SSID”でも”ESSID”どちらでもよい
・以下の設定は有効だが、インターフェース等サービスのリブートをすると消えてしまう ←★要確認
iwconfig eth1 essid 0E864B39661ECF5516F5F16D1C746863
iwconfig eth1 key restricted 86B21686778EF007D4F1FC26D1
dhclient eth1 or ifup eth1
因みに設定が反映されたかどうかはiwconfigのessidの欄をみればわかる
[root@hogehoge ~]# iwconfig eth1
eth1 IEEE 802.11g ESSID:”20451EB71EB14D7D116A0DDF4FF5E493″ Nickname:”hogehoge”
Mode:Managed Frequency:2.412 GHz Access Point: 00:16:01:90:E7:AB
Bit Rate=54 Mb/s Tx-Power:-2147483648 dBm Sensitivity=0/3
RTS thr=2347 B Fragment thr=2346 B
Encryption key:C8CD-045F-938E-A434-5EE2-9BBC-6FBE-A81F Security mode:restricted
Power Management:off
Link Quality:65/100 Signal level:-54 dBm Noise level:-96 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
□コマンド結果の見方
IEEE:xxxなど無線LAN規格が表示される
ESSID:ESSID
Nickname:無線LANインタフェースのニックネーム
Mode:接続モード「Ad-Hoc」はアド・ホック接続,「Mamaged」はインフラストラクチャ接続を表す
Frequency:接続周波数
Access Point:アクセス・ポイントのMACアドレス
Bit Rate:ビット・レート
Tx-Power:出力パワー
Sensitivity:感度
Retry min limit:リトライする最小値
RTS thr RTS/CTS:(Request To Send/Clear To Send)のしきい値
Fragment thr:フラグメンテーションのしきい値
Encryption key:暗号化したキーフレーズ
Security mode:restrictedは制限付きモード
Power Management:パワー・マネージメントを有効・無効を表示する
Link Quality:接続品質
Signal level:信号レベル
Noise level:ノイス・レベル
Rx invalid nwid:ESSIDやネットワークIDが異なるパケットを受信したパケット数
invalid crypt:復号に失敗したパケット数
Rx invalid frag:フラグメンテーションの再構築に失敗したパケット数
Tx excessive:retries 送信に失敗したパケット数
Invalid misc:なんらかの原因でロスしたパケット数
Missed beacon:受信に失敗したビーコン数
IEEE xxx:無線LAN規格が表示される
ESSID:ESSIDを指定する。anyと指定すると特定のESSID
Nickname:ニックネーム:ニックネームを指定する(大抵、無線LANドライバ名が入る)
Mode:接続モード。「Ad-Hoc」はアド・ホック接続,「Mamaged」はインフラストラクチャ接続を表す
Access Point:アクセスポイントのMACアドレス
freq:接続周波数
channel:チャンネル 利用チャンネルを指定する
sens:感度 感度しきい値を指定する
ap アクセスポイント:接続するアクセス・ポイントのMACアドレスを指定する
nickname ニックネーム:ニックネームを指定する
rate ビット・レート:ビット・レートを指定する
key WEP鍵:WEP鍵を指定する
RX:受信パケット
-nwid ネットワークIDを指定する
-crypt
-frag 最大フラグメンテーションのパケット・サイズ
TX:送信パケット
-excessive retries
-misc
-Missed beacon ビーコンの失敗回数
ビーコンとは
ESS-IDステルス機能のこと
IEEE802.11無線LANには「ビーコン」と呼ばれる機能があり、アクセス・ポイントに設定したESS-IDの情報を告知(周囲に送信して知らせること)している
クライアントPCは、このビーコンを受信することで無線LANの存在を知り、その中からESS-IDを手がかりにして自分が利用したい無線LANを選択・接続することになる