2012年12月3日月曜日

Raspberry PiでUSB-Wifiアダプタを使う

はじめに

この記事では、Raspberry PiにUSB-Wifiアダプタを接続して

  • 固定IPアドレスを持って、
  • DNS参照先やデフォルトゲートウェイをすべて自分で指定する
手順を扱っています。すでにDHCPサーバ(無線ブロードバンドルータに付属の機能など)がある場合、DHCPで割り当てを受ける方法もあります。そちらのほうが楽です。今回はサーバとして固定IPで動かすための設定です。

利用した製品

USB-Wifiアダプタを利用して、無線LANに接続します。手元で動作が確認できたのは以下の機種です。

  • PLANEX GW-USValue-EZ
  • PLANEX GW-USWExtreme
上記の製品は、USBポートに挿し込むだけで認識されました。使用モジュールはどちらも"8192cu"でした。ちなみに製品の外見はまったく同じで、いったん包装をはずしてしまうと見分けることができません。

準備:resolvconfをインストール

resolvconfは /etc/network/interfaces の記述をもとに、/etc/resolv.conf を自動的に生成してくれるそうです。

$ sudo apt-get install resolvconf
/etc/network/interfaces の設定を反映させるときは、resolvconfを再起動。
$ sudo service resolvconf restart

無線LAN接続設定

無線LAN接続のプロファイルを /etc/wpa_supplicant/wpa_supplicant.conf に作成します。初期状態では何も記入されていませんでした。

  1. /etc/wpa_supplicant/wpa_supplicant.conf の権限を変更。
    sudo chmod 666 /etc/wpa_supplicant/wpa_supplicant.conf
  2. SSID, パスワードからフォーマットを生成して、ファイルに書き込む。
    wpa_passphrase SSID PASS >> /etc/wpa_supplicant/wpa_supplicant.conf
  3. ファイルの権限を戻しておく。
    sudo chmod 600 /etc/wpa_supplicant/wpa_supplicant.conf
  4. wpa_roamを使うため、wpa_supplicant.confのネットワークセクションに次の行を追加。
    id_str="unique-id"
    このidを振ったネットワークを使うには、/etc/nerwork/interfacesに次の行を追加。
    # DHCPでの例
    iface unique-id inet dhcp
    # 固定IPアドレスでの例
    iface unique-id inet static
      address 192.168.0.5
      gateway 192.168.0.1
      netmask 255.255.255.0
      dns-nameservers 8.8.8.8 192.168.0.1
  5. SSIDをブロードキャストしていない場合(ステルスSSID)は、wpa_supplicant.confのネットワークセクションに次の行を追加。
    scan_ssid=1
  6. resolvconfを再起動して、設定を反映させる。
  7. ワイヤレス接続を起動して、ネットワークに接続できることを確認。
    sudo ifup wlan0
  8. iwconfigでワイヤレスアダプタの状態を調べることができます。
    iwconfig

無線(wlan0)と有線(eth0)を同時に使う

ここから先は必須ではありません。

有線インターフェース(eth0)と無線インターフェース(wlan0)が同時に接続されているとき、次のような使い方をしたいと思いました。

  • eth0とwlan0に同じIPアドレスを割り当てる。
  • eth0とwlan0を統合して、ひとつのネットワークインターフェースとして扱う。
このような要望をかなえてくれるモジュールは"bonding"だそうです。 Raspberry Pi でもteamingを試してみました。
  1. ifenslave をインストール。
    sudo apt-get install ifenslave
  2. 念のため起動時にbondingモジュールを読み込むように設定。/etc/modprob.d/bonding.conf を作成して、次のように記入します。
    alias bond0 bonding
    何もしなくても自動的に読み込まれてたので、心配な人以外は書かなくてもかまわないと思います。私はLinux様がよきに計らってくれると信じることにしたので、書いてません。
  3. /etc/interfaces を編集します。内容は以下のようにしてみました。
    auto lo
    iface lo inet loopback
    
    iface eth0 inet manual
      bond-master bond0
    
    allow-hotplug wlan0
    iface wlan0 inet manual
      wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
      bond-master bond0
      bond-give-a-chance 10
    
    auto bond0
    iface bond0 inet static
      address 192.168.0.5
      gateway 192.168.0.1
      netmask 255.255.255.0
      dns-nameservers 8.8.8.8 192.168.0.1
      bond-mode 0
      bond-miimon 100
  4. 再起動してifconfigで調べてみると、bond0がmasterで、eth0とwlan0がslaveでそれぞれ動作しているのが確認できます。
"bond-give-a-chance" というパラメータについては、こちらに少しだけ書きました。

0 件のコメント:

コメントを投稿