今日の一言
2009/09/23(Wed) 以外と面倒だった・・・ [長年日記] 19:00現在弱いにわか雨 23℃
_ [FC][Linux][プロジェクト実習][研究関係]T43に入れたFC6で無線LANを動かす。
下準備
まず、ノート PC に搭載されている無線 LAN チップを lspciコマンドで確認する。
# /sbin/lspci | grep Wireless
すると、こんな感じのが出てくる。
04:02.0 Network controller: Intel Corporation PRO/Wireless 2915ABG Network Connection (rev 05)
実は、FC6にはこれ用のドライバ(ipw2200)が既に入っている。
が、ライセンスの問題でファームウェアは自分で入れなければならない。
HPはここ。
Intel PRO/Wireless 2200BG Driver Firmware
(http://ipw2200.sourceforge.net/firmware.php)
インストールされているドライバのバージョンはmodinfoコマンドで確認できるので、それにあったファームウェアのバージョンを選んでDL。(以下はipw2200の場合の確認方法)。
# /sbin/modinfo /lib/modules/2.6.18-1.2798.fc6/kernel/drivers/net/wireless/ipw2200.ko
ファームウェアの導入
DLしたファームウェアを適当な場所に解凍し、出てきた.fwファイルを全て/lib/firmware/にコピーする。
# tar xvzf /tmp/ipw2200-fw-3.0.tgz
# cp ipw2200-fw-3.0/* /lib/firmware/
ドライバの読み込み&動作確認
modprobeコマンドでドライバを読み込む。
# /sbin/modprobe ipw2200
ドライバが読み込まれると新たなEthernetインタフェースが認識されるので、iwconfigコマンドで確認する。
# /sbin/iwconfig
ついでに確認。
# /sbin/lsmod | grep ipw2200
ドライバの自動ロード設定
システムの起動時にドライバがロードされるように/etc/modprobe.confに以下の1行を追記する。(eth1として認識させる場合)
alias eth1 ipw2200
追記後、depmodコマンドを実行。(不要かも)
# /sbin/depmod
これにより、システムの再起動後も自動的にドライバがロードされるようになる。
あとは自分の無線LANの環境に合わせてネットワークの設定をしていく。
無線LAN用の設定ファイルの作成(CUI)
まず、/etc/sysconfig/network-scripts/ifcfg-eth1に以下の記述を行う。
TYPE=Wireless DEVICE=eth1 BOOTPROTO=dhcp (dhcpを使わない場合はnoneと書き、IPADDR、NETMASK、GATEWAYに値を書き込む) IPADDR= NETMASK= DOMAIN= USERCTL=yes IPV6INIT=no PEERDNS=no ESSID={接続先のESS-IDを書く} CHANNEL={チャンネル数(わからなければ1を書いておく)} MODE=Managed RATE=Auto HWADDR={接続先のハードウェアアドレスを書く。# ifconfig eth1で表示されるヤツ} ONBOOT=yes GATEWAY=
ESSIDがわからない場合、次のコマンドで無線LANで接続できる基地局を表示できる。
# /sbin/iwlist eth1 scan
続いて。/etc/sysconfig/network-scripts/keys-eth1を開いて、キーの設定を行う。
キーの設定を文字列で行う場合は、「s:」という指定が必要になることに注意すること。
KEY=s:WEPキー(文字列)
/etc/sysconfig/network-scripts/keys-eth1を作成したら、このファイルにroot以外のユーザーがアクセスできないように、ファイルの属性を変更しておく。
# chmod 600 /etc/sysconfig/network-scripts/keys-eth1
なお、Fedora Coreの場合は、GUI(GNOMEのsystem-config-network)でも上記の設定を行える。
その場合は、[デスクトップ]メニューの[システム設定]−[ネットワーク]を使う。
新規に登録する場合は、[ネットワーク設定]画面で[新規]ボタンをクリックし、設定していく。
また、登録済みの設定を変更する際は、[ネットワーク設定]画面で変更するデバイスを選択して、[編集]ボタンをクリックする。
ネットワークインタフェースの起動・停止は上記のGUIか、もしくは
# /sbin/ifdown eth1 (停止)
# /sbin/ifup eth1 (起動)
で可能。
_ WPA-AES設定されたアクセスポイントへ接続する
@ITの記事から抜粋。
内容重複するので、上までの作業が全て終わっているという仮定で説明する。
前準備
wpa_supplicant(http://hostap.epitest.fi/wpa_supplicant/)を使ってWPAによる暗号化を行う。
なお、FC6)の場合、システムインストール時にデフォルトのインストールオプションを選択していれば自動的に導入されている。
入っていない場合は、yumでインストールする。
# yum install wpa_supplicant*
で、念のため、無線LAN無線LANが使用できる状態かどうかを確認する。 [システム]-[管理]-[ネットワーク]-[ネットワーク設定]-[ハードウェア]と開き、無線LANのデバイスが認識されていることを確認する。
wpa_supplicantの設定
/etc/sysconfig/wpa_supplicantを以下のように書き換える。
# INTERFACES="-iwlan0" # DRIVERS="-Dndiswrapper" DRIVERS="-Dwext" INTERFACES="-ieth1" #← -i の後に[ネットワーク設定]ウィンドウで確認したデバイス名
修正が完了したら、/etc/wpa_supplicant/wpa_supplicant.confの作成を行う。
まず、前段階として、 wpa_passphraseコマンドでパスフレーズの暗号化を行う。
# /usr/sbin/wpa_passphrase {SSID} {パスフレーズ}
結果は標準出力に出力されるので、それをコピーするか、リダイレクトで任意のファイルに保存しておく。
<tmp.confにリダイレクトする場合>
# /usr/sbin/wpa_passphrase myssid mypassphrase0123456789" > tmp.conf
# cat tmp.conf network={ ssid="myssid" #psk="mypassphrase0123456789" psk=df8c40a0c8c2baa2e2e500ea2512d8143c6f26f655eef6820461e273795aff3e }
で、暗号化した結果を使って、/etc/wpa_supplicant/wpa_supplicant.confを次のように書き換える。
ctrl_interface=/var/run/wpa_supplicant ctrl_interface_group=0 ap_scan=1 network={ ssid="myssid" key_mgmt=WPA-PSK proto=WPA pairwise=CCMP group=CCMP #psk="mypassphrase0123456789" psk=df8c40a0c8c2baa2e2e500ea2512d8143c6f26f655eef6820461e273795aff3e }
で、起動させてみる。
# /etc/init.d/wpa_supplicant restart
ここまでの作業が完了したら、wpa_supplicantのサービスを起動する。
# /sbin/service wpa_supplicant restart
さらに、wpa_supplicantのサービスが自動的に起動するように設定する
# /sbin/chkconfig wpa_supplicant on
これで、システムを再起動後はWPA-AES設定されたアクセスポイントへ接続できる。
この場合も、ネットワークインタフェースの起動・停止は上記のGUIか、もしくは
# /sbin/ifdown eth1 (停止)
# /sbin/ifup eth1 (起動)
で行う。
なお、複数のESSIDに対して設定したい場合には、
network={
}
の部分だけを複数書けばいい。
注)オリジナルの@ITの記事では、この後、無線LAN・有線LANの切り替えに「NetworkManager」を使うところまで書いていたが、FC6に付属のヤツはどうもWPAに対応していないっぽいのでやめた。
(http://www.atmarkit.co.jp/flinux/rensai/linuxtips/982wpasupplicant.html)
注2)接続時になぜかDHCPでIPが取れなかった・・・。どうやらWPAだとDHCPが取れないことがあるらしい。(未確認)
結局、DHCPを使わずシステムネットワーク設定でIPアドレス固定にしたら動くようになった。・・・まあ、動くならいいか。(3日ほど原因を探ってみたがわからなかった)
<おまけメモ>
「Determining IP information for eth0... failed; no link present. Check cable?」
とかいうエラーが出るが、手動でdhclientするとIPがもらえる、というような状態なら、次のようにすれば動くかも。
ifcfg-eth0にcheck_link_downに関する指定を入れ、DHCPでIPをもらうときに、常にリンクしていることにしてしまう。
DEVICE=eth0 BOOTPROTO=dhcp ONBOOT=yes check_link_down () { return 1; }
<意味不明>
無線LANが起動中にもかかわらずネットワークにつながらない(pingが通らない)場合、
GUI(GNOMEのsystem-config-network)上で、
同じネットワークデバイス(eth1)を使う、
新たな無線LANネットワークをでっち上げる(パスワードとかも適当)と何故か繋がるようになる。
繋がった後は、でっち上げた方の設定は削除しても大丈夫。
追記:
これやったらDHCPからIPも取れるようになった。マジで意味不明。
*あまり見ていないが、ココ(http://cms.db.tokushima-u.ac.jp/DAV/organization/175608/linux.html)も参考になるかも?