印刷用表示へ切り替え 通常表示へ切り替え 更新履歴を表示 更新履歴を隠す
Linux Linux で無線 LAN の成功と挫折: WPA Supplicant の導入

無線 LAN の認証用に wpa_supplicant をインストールして設定する。WEA, WPA2, WEP などがサポートされている。実際に設定してみたところ,WEP での接続は高い確率で成功するが,WPA2 は微妙。上手くいったりいかなかったりする。

■ ■ ■

Linux で無線 LAN の続き。動作環境については前記事を参照 (nlog(n): Linux で無線 LAN の成功と挫折: デバイスドライバの導入)。WPA, WPA2, WEP などの認証には wpa_supplicant を使う (Linux WPA Supplicant (IEEE 802.1X, WPA, WPA2, RSN, IEEE 802.11i))。無線 LAN アクセスポイントは,WEP, WPA, WPA2 をサポートしているとする。

日本語マニュアルとしては,wpa_supplicant コマンド (On-line Manual of "wpa_supplicant"),wpa_supplicant.conf コンビグレーション (On-line Manual of "wpa_supplicant.conf") がある。

インストールと設定

パッケージをインストールする。

# apt-get install wpa_supplicant

コンフィグレーションは,次のファイルに格納される。

/etc/wpa_supplicant/wpa_supplicant.conf

WEP での接続

まず,WEP40 (40 ビットの鍵を使う 64 ビットの WEP) (Wired Equivalent Privacy - Wikipedia) での接続を試す。wpa_supplicant.conf の例は次の通り。概説としては Gentoo Linux ドキュメント -- 無線ネットワーク が分かりやすい。

ctrl_interface=/var/run/wpa_supplicant
ap_scan=1
network={
        scan_ssid=1
        key_mgmt=NONE
        ssid="Home-WEP-net"
        wep_key0="Abcde"
        wep_tx_keyidx=0
}

WPA2 での接続

WPA2 で接続する場合の wpa_supplicant.conf の例は次の通り。この設定では,WPA と WPA2 の有効な方を選択し,暗号化方式は AES, TKIP を試すようになっている。すべての組み合わせを試してくれる設定である。「CCMP」は「AES」を含んでいるので,コンフィグレーションの中には「AES」という文字列は出てこない。

ctrl_interface=/var/run/wpa_supplicant
ap_scan=1
network={
       ssid="01234567ABC_ngb"
       key_mgmt=WPA-PSK
       proto=WPA WPA2
       pairwise=CCMP TKIP
       group=CCMP TKIP WEP104 WEP40
       psk=86a867351a03f8421906dc1e99497b19342860a6d71ee5325ff3243be9a85399
}

鍵は「psk="01234567"」のように書いてもよい。設定ファイルが他人に読まれる可能性のある場合は,「psk=86a8673...」のように暗号化した鍵を書いてもよい (Quick HOWTO : Ch13 : Linux Wireless Networking - Linux Home Networking)。つまり,暗号化された鍵を書くなら,暗号化されてない鍵を残しておくのでは意味がないので,削除すること。暗号化された鍵を書く場合,ダブルクォートで囲んではいけない。

鍵を暗号化するには,wpa_passphrase コマンドを使う。

# wpa_passphrase 01234567ABC_ngb 01234567
network={
        ssid="01234567ABC_ngb"
        #psk="01234567"
        psk=86a867351a03f8421906dc1e99497b19342860a6d71ee5325ff3243be9a85399
}

これをコピーアンドペーストして設定ファイルを書くことになるのだが,ここに暗号化する前の鍵が残っているので,設定ファイルにも残ってしまいがちなのである。

WPA2 で接続する場合,ダミーの WEP キーを別ファイル /etc/sysconfig/network-scripts/keys-ra0 に書いておく必要があるそうだ (WPA−PSKを使用したリナックス(FC5)の無線LAN接続について)。

# echo 'KEY="s:dummyKey"' > /etc/sysconfig/network-scripts/keys-ra0

WEP キーは本当に「"s:dummyKey"」という文字列でいいようだ。

無線 LAN アダプタの設定

無線 LAN アダプタ Buffalo WLI-UC-GN のデバイスドライバの設定ファイル /etc/Wireless/RT2870STA/RT2870STA.dat をどうするかが問題。詳しくは,デバイスドライバのソースに同梱されている README_STA_usb に記述されている。

ぶっちゃけてしまえば,デフォルトでも動くことが多い。すまり,RT2870STA.dat の中身は Default だけでもよい。

#The word of "Default" must not be removed
Default

もう少しきちんと書くなら,

# CountryRegion は使用できるチャンネルの範囲。
# 日本国内なら 1 (1〜13 チャンネル) または 5 (1〜14 チャンネル) (無線LAN - チャネルとは)。
CountryRegion=1
# CountryRegionABand は IEEE802.11a のバンド。
# 日本では J52, W52, W53 が使えるので「2」となる (IEEE802.11a 無線LAN)。
# CountryRegionABand=2
# 日本は「JP」
CountryCode=JP
# NetworkType には,Infra または Adhoc を指定する。
NetworkType=Infra
# WirelessMode は,無線 LAN アダプタとアクセスポイントがサポートしていて,実際に使うものを指定する。「IEEE802.11 b/g/n 混合」の場合は「9」
WirelessMode=9
# Channel は,Infra モードの場合に,特に指定しない場合は 0 としておくと適当なチャンネルを自動で選んでくれる。
Channel=0
# 以下は wpa_supplicant が書き換えるので空欄でよい。
SSID=
AuthMode=
EncrypType=

起動スクリプト

wpa_supplicant の起動スクリプトは /etc/init.d/wpa_supplicant である。OS 起動時に無線 LAN を自動起動させたい場合,このスクリプトを登録しておく必要がある。wpa_supplicant は,ifconfig ra0 up の前に起動しておいた方がよいので,起動の順番を調整してやる必要がある (WPA−PSKを使用したリナックス(FC5)の無線LAN接続について)。 wpa_supplicant の前に ifconfig ra0 up だという意見もあり (tohzo’s » やっと普通に無線LANが使える、か),微妙なところだが,ここでは wpa_supplicant を先に起動することにする。Vine Linux 4.2 では,ネットワークインターフェイスの活性化は /etc/init.d/network スクリプトで行われる。/etc/init.d/network の起動順は,スクリプトに書かれている通り

# grep chkconfig network
# chkconfig: 2345 10 90

「10」なので,wpa_supplicant はこれよりも前に起動する必要がある。また,後で終了するように調整する必要があるので,次のようになるように書き換えておく。

# grep chkconfig wpa_supplicant
# chkconfig: 2345 9 91

OS 起動時に有効にするには,chkconfig コマンドでもよいが,Vine Linux の場合はコンソールのテキスト画面で

# setup

としてやれば,対話的に設定ができる。RedHat 系なら「setup」の代わりに「ntsysv」が使える。

実際に試すとどうか

WEP

OS 起動時に ra0 を活性化した場合,

  • DHCP でのアドレス取得は失敗する
  • 静的にアドレスを書いてやれば接続は成功する

ということで,静的 IP アドレスでの運用は可能。

WPA2

OS 起動時に ra0 を活性化した場合,

  • DHCP でのアドレス取得は失敗する
  • 静的にアドレスを書いてやっても接続に失敗する

接続に失敗しているとき,wpa_supplicant が /var/log/messages に連続して残すログは次のようなものである。

kernel: ===>rt_ioctl_giwscan. 4(4) BSS returned, data->length = 657
kernel: ==>rt_ioctl_siwfreq::SIOCSIWFREQ(Channel=1)
kernel: ===>rt_ioctl_giwscan. 4(4) BSS returned, data->length = 657
kernel: ==>rt_ioctl_siwfreq::SIOCSIWFREQ(Channel=1)

これが18秒おきに延々と繰り返される。もうイヤ。

OS 起動後に,「dhclient -r ra0」「depmod -a」「/etc/init.d/wpa_supplicant restart」「ifconfig ra0 up」などを適当な順で入力していると,極まれに接続が成功することがある。成功と失敗は「iwconfig」コマンドの結果で判断できる。

失敗している場合は次のようになる。注目点は Bit Rate と Encryption key の2点。

# iwconfig ra0
ra0       Ralink STA  ESSID:"01234567ABC_ngb"  Nickname:"RT2870STA"
          Mode:Auto  Frequency=2.412 GHz  Access Point: XX:XX:XX:XX:XX:XX
          Bit Rate=1 Mb/s
          RTS thr:off   Fragment thr:off
          Encryption key:off
          Link Quality=100/100  Signal level:-51 dBm  Noise level:-51 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

成功している場合は,以下のようになる。

# iwconfig ra0
ra0       Ralink STA  ESSID:"01234567ABC_ngb"  Nickname:"RT2870STA"
          Mode:Managed  Frequency=2.437 GHz  Access Point: XX:XX:XX:XX:XX:XX
          Bit Rate=65 Mb/s
          RTS thr:off   Fragment thr:off
          Encryption key:C77A-0C99-C6C1-19D0-3F0C-870F-367E-7736   Security mode:restricted   Security mode:open
          Link Quality=100/100  Signal level:-50 dBm  Noise level:-73 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

成功していると,Bit Rate は 1 Mb/s 以外の値になり,Encryption key のところが「off」以外の長い文字列になる。

まとめ

WPA2 での接続ができたりできなかったりする理由が不明。使用している wpa_supplicant のバージョンが古いせいという可能性もある。使用しているのは wpa_supplicant 0.4.8 で,現在の最新版 0.7.3 よりもかなり古い。もちろん,ドライバの問題ということも大いに考えられる。高い確率で接続できるのは WEP だが,セキュリティ的に問題があるため,不安が残る。どうするか悩みどころである (まだ決めていない)。

追記: nlog(n): Linux で無線 LAN の成功と挫折: 困ったときの調べ方 に補足。

Posted by n at 2011-05-23 00:29 | Edit | Comments (1) | Trackback(0)
Trackbacks

  • 「手違いで複数トラックバックを送ってしまった!」という場合でも気にしないでください (重複分はこちらで勝手に削除させていただきます)
  • タイムアウトエラーは,こちらのサーバの処理能力不足が原因です (詳細は トラックバック送信時のエラー をご覧ください)
  • トラックバックする記事には,この記事へのリンクを含めてください(詳細は 迷惑トラックバック対策 をご覧ください)
Comments

UT-VPNでVPSに接続し、VPSをデフォルトGWとして
ルーティングしてインターネットに接続する。
UT-VPNの通信は、暗号化されているので
無線LANではOPENで接続する。
スパムの踏み台にしている迷惑なアクセスが
気になる場合には、ARPを使って端末を自動的に
検知して、パケットが飛ばないようにする。

Posted by: 必須 at October 02, 2015 11:55
Post a comment
  • 電子メールアドレスは必須ですが,表示されません (気になる場合は「メールアドレスのような」文字列でもOKです)
  • URL を入力した場合はリンクが張られます
  • コメント欄内ではタグは使えません
  • コメント欄内に URL を記入した場合は自動的にリンクに変換されます
  • コメント欄内の改行はそのまま改行となります
  • 「Confirmation Code」に表示されている数字を入力してください (迷惑コメント対策です)


(必須, 表示されます)


(必須, 表示されません)


(任意, リンクされます)


Confirmation Code (必須)


Remember info (R)?