以前、librettoU100とVineLinux3.2で無線LANを使うという記事で、めちゃめちゃ苦労しながらWEPでの無線LAN使用に成功し、VineLinux4.0からは簡単に無線LANが設定できるようになったため、librettoU100&VineLinuxで無線LANを満喫しております。
が、以前から頭にひっかかることがあったのでした。
今時、WEP でいいのか!? という点です。
Linuxで無線LANを使いたいがために、家中の無線LANの設定がWEPになっているのです。
そんな折、@ITで無線LANをWPAで暗号化して使用するにはという記事が出ていました。
なに!?LinuxでもWPA-PSKで無線LANできるのか!?これはやってみなくては!
ただし記事とは違って、嫁のWindowsノートがWPA-AESに対応していないので、WPA-TKIPでの設定です。
今回の環境
機種
libretto U100/190DSB
OS
Vine Linux4.1
ルータ
BUFFALO の AirStation WHR-HP-G54
まず前提としてルータの設定です。
ルータをWPA-PSKのTKIPに設定するのですが、
注意点としてESSIDをブロードキャストしないステルスモードでは
接続できないようです。ESSIDをサーチしに行った時に空白のIDが
返って来てしまいました。
私のルータ(BUFFALO の AirStation WHR-HP-G54)では、
「Any接続を許可」する設定になります。
アプリケーション→システム・ツール→Synapticパッケージマネージャ
でSynapticを起動
Synaptic のリポジトリに extras を追加していない場合は、
追加する必要があります。
Synapticの 設定→リポジトリ の各セクションに、extras を追加します。
セクションは、全体で
main plus updates nonfree extras
になります。
Synapticの再読み込みを行うと wpa_supplicant が追加されるので、
Synapticから wpa_supplicant をインストールします。
wpa_supplicant-gui ってのもあるので、一緒にインストールしておきました。
これはGUIでwpa_supplicantの状態をチェックできるので、
入れておくと確認が楽です。これのインストール時に、
一緒に qt もインストールされます。
/etc/sysconfig/wpa_supplicant を編集します。
# wlan0 and wifi0
# INTERFACES="-iwlan0 -iwifi0"
INTERFACES="-iath0"
# ndiswrapper and prism
# DRIVERS="-Dndiswrapper -Dprism"
#DRIVERS="-Dmadwifi"
DRIVERS="-D wext"
コメント(#)の無い所のみ必要です。あとはいりません。
INTERFACES="-iath0"
の部分ですが、libretto U100/190DSB は無線LANのチップに
Atheros製のチップ(Atheros AR5005GS)を使用しているので
ath0 になります。
#DRIVERS="-Dmadwifi" をコメントしていますが、ここはハマリどころでした。
WEPではmadwifiで無線LANの接続ができていたので、
ここでももちろんmadwifiを使用するものだと思ってました。
madwifiを使用すると途中までうまく行くのですが
途中で
Association request to the driver failed
と出て接続に失敗します。
デバッグモードで詳細を見ると、
ioctl[IEEE80211_IOCTL_SETMLME]: Invalid argument
ってなっていました。
今回は
DRIVERS="-D wext"
が正解でした。
ただ、ネットで調べるとmadwifiでうまくいっている人もいるので、
バージョンなどでまた変わってくるかもしれません。
# wpa_passphrase 無線LANのSSID
とコマンドすると、パスフレーズを聞かれますので、
WPAに接続するパスフレーズを設定します。
(ルータに設定したものと同じ物です。)
すると、入力したパスフレーズが暗号化されて画面に表示されるので
これをコピーして
/etc/wpa_supplicant/wpa_supplicant.conf
に貼り付けます。
私の環境の /etc/wpa_supplicant/wpa_supplicant.conf は、
このようになっています。
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=wheel
network={
ssid="無線LANのSSID"
key_mgmt=WPA-PSK
proto=WPA
pairwise=TKIP
group=TKIP
#psk="入力したパスフレーズ"
psk=暗号化されたパスフレーズ
}
WPA-AESの場合は、TKIPの部分がCCMPになるそうです。
/etc/sysconfig/network-scripts/ifcfg-ath0
を修正します。
ここに余計なものがいろいろと書かれていると
接続に失敗しました。
ここで必要なのは、DHCPを使用できる設定にすることです。
でないとDHCPでIPをもらえません。
私の環境ではこうです。
BOOTPROTO=dhcp
ONBOOT=yes
DEVICE=ath0
HWADDR=00:00:00:00:00:00 ←ここはlibrettoのMACアドレス
TYPE=Wireless
ESSID=無線LANのESSID
設定はこれだけです。
接続のテストをするのですが、その前にやっておくことがあります。
アプリケーション→システムツール→ネットワークの設定
を起動して、ath0が動いていたら停止させます。
これをやっておかないと wpa_supplicant がタイムアウトしてしまいます。
ここでもハマりました・・・。
wpa_supplicant を起動させます。
# /etc/init.d/wpa_supplicant start
ちなみに止めるのは start が stop になります。
次に、wpa_supplicant-gui を起動させます。
# /usr/bin/wpa_gui
wpa_supplicant-gui でconecct とかすると、
接続が開始されます。
イベントに CTRL-EVENT-CONNECTED って出ていればOKです。
でも、このままではまだ繋げません。
DHCPからIPを取得できていないからです。
アプリケーション→システムツール→ネットワークの設定
を起動して、ath0が動いていたら停止させます。
再度 ath0を動かすと、IPを取得していると思います。
# ifconfig
で確認し、ath0 に正常なIPが割り振られていれば、
無線LANに接続できています。
次に、自動起動の設定です。
ath0が接続する前に wpa_supplicant を起動させる必要があります。
デフォルトだとここがうまく行かないので
/etc/init.d/wpa_supplicant の
chkconfig: 部分を - 12 88 から 2345 09 88 に 変更します。
ちなみに、2345はランレベル、09は開始順、88は終了順です。
最初の部分は、
#!/bin/bash
#
# wpa_supplicant
#
# chkconfig: 2345 09 88
# description: wpa_supplicant is a WPA Supplicant for Linux, BSD and \
# Windows with support for WPA and WPA2 (IEEE 802.11i / RSN). Supplicant \
# is the IEEE 802.1X/WPA component that is used in the client stations. \
# It implements key negotiation with a WPA Authenticator and it controls \
# the roaming and IEEE 802.11 authentication/association of the wlan driver.#
processname: wpa_supplicant
# config: /etc/wpa_supplicant/wpa_supplicant.conf
#
となります。
で、
# chkconfig wpa_supplicant on
とコマンドすれば、自動起動が有効になります。
再起動して確認すると、無線LANに接続できていると思います。
が、できていないこともあるんです。このへんは何故なのかまだよく解りません。
その時は、
アプリケーション→システムツール→ネットワークの設定
を起動して、ath0が動いていたら停止させます。
再度 ath0を動かします。
で、接続できます。
07/05/15 追記 上記起動時にうまく接続できない件ですが、
/etc/sysconfig/network-script/
に、ifcfg-wifi0 という全然使っていないファイルがあったのが原因みたいです。
(起動時に毎回接続しようとして落ちてました。(笑))
このファイルを他のディレクトリに移動させれば、うまくつながるようになりました。
おまけ
wpa_supplicant -h
でヘルプ。使用できるドライバも見れる。
wpa_supplicant -iath0 -c/etc/wpa_supplicant/wpa_supplicant.conf -Dwext -w
で、wpa_supplicant のログを見ながら起動できる。Ctrl+C で停止。
(wpa_supplicant-gui のイベントログと同じ)
wpa_supplicant -iath0 -c/etc/wpa_supplicant/wpa_supplicant.conf -Dwext -dd
で、wpa_supplicant のデバッグログを見ながら起動できる。Ctrl+C で停止。
参考にしたページ
YANO's digital garage
madwifiでもwextを使うところ、起動スクリプトの書き換え、など参考にさせていただきました。
Linux上でのWPA/PEAP-TKIP設定
Vine Linux 3.2、madwifi、wpa_supplicant-0.3.9、WPA-EAP での接続実績です。
[Fedora 2708] madwifi WPA-PSK(TKIP) + wpa_supplicant動作報告
ryoblog Redhat9.0 + WLI-CB-G54 + WPA(AES)
shag の日記 2007-01-25 Ubuntu Edgy で無線LAN を WPA-PSK で使う
他いろいろ・・(忘れた・・・。)
上記の方々の情報のおかげです。本当にありがとうございます。
最近のコメント