SuSE 10.1で無線Lan (WPA)
前回の続き、SC430にopenSuSEを入れたのだけど、無線Lanにしたかったので、BuffaloのUSBスティックの無線Lanアダプタを買った。
型番WLI-U2-KG54。
普通に挿しても自動認識しないから、ここらへんを(あとここも)参考にしながら、まずSuSEのCDを使って、YaSTからソフトウェアの追加でndiswrapperを入れる。でWLI-U2-KG54についてくる、ドライバーCDの中から対応するドライバーをコピーし、コマンドラインで、
#ndiswrapper -i netu2kg.inf
Installing netu2kg
#ndiswrapper -l
netu2kg driver installed, hardware present
#modprobe ndiswrapper
#iwconfig
wlan0 IEEE 802.11g......(省略)
とやったところで、気がついたら、右下のステータスバーに無線Lanのアプレットが表示されていた。成功です。
あとはアプレットをクリックして、無線Lanの暗号方法やらパスワード指定しておしまい。無事動いてます。もっと大変だと思ったのに...。素晴らしい。
追記:
上記手順のあと、
ndiswrapper -m
したりとか、YaSTのネットワークデバイスの設定してやらないと、多分再起動すると無線Lanが有効になりません。
YaSTでは、Network DevicesのNetwork Cardを開き、新たに追加。Device TypeはWirelessで、Configuration Nameは0のまま(でinterface名はwlan0になるはず)。これは色々調べてとりあえず上手くいったけれど、再起動ごとにKeyringとかいうのが毎回パスワード聞いてくるのがうざい。なんとかならないものか。。。
ログインする度に毎回、keyringがロックされているからパスワードを入れろ、というダイアログが出てくる。nm-applet(Network Manager)が使ってるからだけど、「常に許可」のボタンを何度も押しているのに、動作していないっぽい。かなりうざい。
色々調べたら、gnome-keyringの不具合というか、制限っぽい。pam_keyringというのを使えば、ログインパスワードを利用してロック解除するようにしてくれるらしいけれど...。ってかそもそも、「常に許可」ぐらい動くようにして欲しい...。
追記(数日後):
うーん、再起動すると、wlan0 interfaceがないとかなんとかで、無線Lanが有効にならない。なるときもあるんだけど...。
色々やって、コマンドラインから手動で、
modprobe ndiswrapper
さえやれば、NetworkManagerが無線Lanを認識してくれる。
おかしい。
ndiswrapper -m
もやったし、/etc/modprobe.confに、
alias wlan0 ndiswrapper
も追加してみたけど効果なし...。再起動するとダメ。
/etc/sysconfig/hardware/config
DRIVER=ndswrapper
もやった。少し効果があった気がする...。
動くときと動かないときが半々。分からん...。
けれど分かったのは、一生懸命YaSTのNetwork Deviceとか、直接ifcfg-wlan0ファイルとか編集してたのは意味がなくて、NetworkManagerがすべてを握っていた、という事。巷にあふれている情報は、ほぼNetworkManagerを使わない方法だった。NetworkManagerはSuSE10から導入されたんだっけ?
なので、YaSTのsysconfig editorで、NetworkManagerをいったん無効にしてみた。ついでに、使っているのはWEPでないからWPAの設定もした。
SuSEのCDから、wpa_supplicantというのを入れる。設定方法は、ndiswrapperとwpa_supplicantでWPAを使う方法まんまで。
無くなりそうだから、ちょっとここに引用させていただく。
http://ndiswrapper.sourceforge.net/mediawiki/index.php/WPA
WPA with ndiswrapper
Create wpa_supplicant configuration somewhere, say, /etc/wpa_supplicant.conf. A simple configuration such as ctrl_interface=/var/run/wpa_supplicant for wpa_cli support
network={
ssid="myssid"
psk="mysecret"
key_mgmt=WPA-PSK
proto=WPA
}should suffice. Note that psk given above can be plain text ASCII pass phrase that is used on the AP or 64 hex digits that can be generated with wpa_passphrase from the same ASCII pass phrase. For simplicity, go with ASCII pass phrase.
Above configuration causes wpa_supplicant to negotiate which encryption scheme to use. Certain AP's might not work with this negotiation procedure. So it can help to limit the scheme to the most basic WPA one: TKIP. Add this line to your config to do so: pairwise=TKIP
Now start the interface and then wpa_supplicant. For example, as
ifconfig wlan0 up
wpa_supplicant -Dndiswrapper -iwlan0 -c/etc/wpa_supplicant.conf -ddNote: With ndiswrapper version 1.12 and later, use '-Dwext' instead of '-Dndiswrapper'.
The option -dd to wpa_supplicant gives lot of output so you can see if there is a problem. If everything works, you can drop -dd option. You may also want to leave wpa_supplicant running in the background with the option "-Bw" so you don't need to start it everytime. Once wpa_supplicant authenticates, you can use DHCP to configure the network interface.
というわけで、やった事:
1)YaSTでとりあえずNetwork Devices->Network Cardの設定で、設定方法をifupで実行を選んで、新規追加。Device TypeはWireless、Configuration Nameは、0。で次押して、完了。
2)wpa_supplicantを入れて、/etc/wpa_supplicant.confを上記の手順どおり作成して、設定。
3)/etc/sysconfig/network/configファイルを編集して、NETWORKMANAGER="no"を確認。
4)/etc/sysconfig/network/ifcfg-wlan0というファイルが1)の手順を行うと出来ていると思う(たしか...)ので、これを編集する。中身はこのページ最後に一応。最後の行のオプションでSSIDを指定している所が肝だったような気がする。
以上で今のところ何度再起動しても毎回インターネットに接続している。
#/etc/wpa_supplicant.conf の中身
ctrl_interface=/var/run/wpa_supplicant
ap_scan=2
network={
ssid="SSID"
psk="パスフレーズ"
key_mgmt=WPA-PSK
proto=WPA
pairwise=TKIP
# scan_ssid=1
group=CCMP TKIP
}
#/etc/sysconfig/network/ifcfg-wlan0 の中身
DEVICE='wlan0'
BOOTPROTO='dhcp'
BROADCAST=''
ETHTOOL_OPTIONS=''
IPADDR=''
MTU=''
NAME='適当な名前'
NETMASK=''
NETWORK=''
REMOTE_IPADDR=''
STARTMODE='onboot'
USERCONTROL='yes'
INTERFACETYPE='wireless'
WIRELESS='yes'
WIRELESS_HIDDEN_SSID='yes'
WIRELESS_AP=''
WIRELESS_AP_SCANMODE='2'
WIRELESS_AUTH_MODE='psk'
WIRELESS_BITRATE='auto'
WIRELESS_CA_CERT=''
WIRELESS_CHANNEL=''
WIRELESS_CLIENT_CERT=''
WIRELESS_CLIENT_KEY=''
WIRELESS_CLIENT_KEY_PASSWORD=''
WIRELESS_DEFAULT_KEY='0'
WIRELESS_EAP_AUTH=''
WIRELESS_EAP_MODE=''
WIRELESS_ESSID='自分のSSID'
WIRELESS_FREQUENCY=''
WIRELESS_KEY=''
WIRELESS_KEY_0=''
WIRELESS_KEY_1=''
WIRELESS_KEY_2=''
WIRELESS_KEY_3=''
WIRELESS_KEY_LENGTH='128'
WIRELESS_MODE='managed'
WIRELESS_CONF='/etc/wpa_supplicant.conf'
WIRELESS_NICK=''
WIRELESS_NWID=''
WIRELESS_PEAP_VERSION=''
WIRELESS_POWER='yes'
WIRELESS_WPA_ANONID=''
WIRELESS_WPA_IDENTITY=''
WIRELESS_WPA_PASSWORD=''
WIRELESS_WPA_PSK='自分のパスフレーズ'
WIRELESS_IWCONFIG_OPTIONS='essid 自分のSSID'