トップ «前の日記(2009/09/22(Tue)) 最新 次の日記(2009/09/24(Thu))»
【ソース+水=麦茶色の何か】

半期 四半期 全カテゴリ

今日の一言


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)も参考になるかも?