はじめに

Raspberry Piを外部からコードレスで制御する場合無線LANを使いますが,IPアドレスをDHCPサーバから取得している場合,いちいちRaspberry PiのIPアドレスやPC等のIPアドレスを調べるのが面倒な場合があります。また,PC等のIPアドレスをRaspberry Piに登録して使う場合も設定の書き換えが面倒になります。 そこでRaspberry PiをWi-Fiアクセスポイントにして,PC等のIPアドレスはRaspberry Piから固定IPアドレスでもらうようにできれば何かと便利です。

このページはRaspberry PiをWi-Fiアクセスポイントにして,PC等のMACアドレスをRaspberry Piに登録して固定IPアドレスで運用するための方法を記載します。なお,Raspberry Pi経由でインターネット接続するためには,Raspberry Piをルータにしないといけませんがそれについては記載しません。参考文献に記載されているのでそちらを参照して下さい。

なお,確認したUSB Wi-Fi アダプタはBuffalo WLI-UC-GNM, WLI-UC-GとLogitec LAN-W150N/U2です。

準備

  1. アダプタを接続してRaspberry Piを起動して,ifconfigでwlan0があることを確認する。
  2. wlan0に固定IPアドレスを割り振る。/etc/network/interfacesを編集するので,バックアップをとっておく。
    sudo cp /etc/network/interfaces /etc/network/interfaces_orig
    
  3. nano(あるいはvi等)で/etc/network/interfacesを開く。
    sudo nano /etc/network/interfaces
    
  4. 以下にある例のようにallow hotplug wlan0以降のより下の行をコメントアウト(行の先頭に#を入れる)して,次の行を入れる。(allow hotplug wlan0は残します。192.168.11.1は例です。適当なIPアドレスを使用して下さい。)
      	iface wlan0 inet static
      	address 192.168.11.1
      	netmask 255.255.255.0
    
  5. 一時的に192.168.11.1をwlan0に与えて作業を続けるために
    sudo ifconfig wlan0 192.168.11.1
    
    とする。(これが必要な箇所はありません。)

アクセスポイントとDHCPサーバにするための作業

hostapdとisc-dhcp-serveのインストール

sudo apt-get install hostapd isc-dhcp-server
でhostapdとisc-dhcp-serverをインストールします。(参考文献[2]ではapt-getでインストールされるhostapdがドライバに未対応とありますが,現在は対応しているようです。また,ここではドライバはmac80211しか扱いません。)

/etc/default/ifplugd の編集

isc-dhcp-serverのインストール中あるいは運用中に以下のようなエラーがでることがあり,そのままではうまくいかないようです。
[FAIL] Starting ISC DHCP server: dhcpd[....] check syslog for diagnostics. ... failed!

/etc/default/ifplugd を編集します。(参考文献[3])

INTERFACES="auto"
HOTPLUG_INTERFACES="all"
ARGS="-q -f -u0 -d10 -w -I"
SUSPEND_ACTION="stop"
を以下のように書き換えます。
INTERFACES="eth0"
HOTPLUG_INTERFACES="eth0"
ARGS="-q -f -u0 -d10 -w -I"
SUSPEND_ACTION="stop"
 

/etc/hostapd/hostapd.confの編集

/etc/hostapd/hostapd.conf を以下のようにする。ssidはアクスポイントの名前がわかりやすいもの,channelは使用環境の無線LANのチャネルの使用状況をみて決めます。
interface=wlan0
driver=nl80211
ssid=<適当なもの>
hw_mode=g
channel=<競合しない適当な数(1--12)>
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=<パスフレーズ>
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

/etc/default/hostapdの編集

/etc/default/hostapd 内のDAEMON_CONFのコメントアウトをとり
DAEMON_CONF="/etc/hostapd/hostapd.conf"
にする。

WPASupplicantの無効化

「また、WPASupplicantを無効にしておきます。 /usr/share/dbus-1/system-services/fi.epitest.hostap.WPASupplicant.service を削除するのですが、一応適当なところ(ここではホームディレクトリ)に取っておきます。」(参考文献[2])

sudo mv /usr/share/dbus-1/system-services/fi.epitest.hostap.WPASupplicant.service ~/

/etc/dhcp/dhcpd.confの編集

wlan0に与えたIPアドレスにあわせて設定します。固定IPアドレスを与える機器ごとにhostブロックにMACアドレスと与えるIPアドレスを記述します。host-nameは適当に決めて下さい。
  subnet 192.168.11.0 netmask 255.255.255.0 {
  range 192.168.11.16 192.168.11.128;
  option broadcast-address 192.168.11.255;
  default-lease-time 600;
  max-lease-time 7200;
 }
  host mypc  {
                hardware ethernet <MACアドレス>
                 fixed-address 192.168.11.2;
                option host-name "mypc";
                }

ルータとしての設定は参考文献を参照してください。

DHCPサーバの起動設定

DHCPサーバの起動設定をします。wlan0側にのみDHCPサービスを提供します。/etc/default/isc-dhcp-serverを編集して
INTERFACES="wlan0"
とします。

サービスの起動

最後に起動時にサービスとして立ち上げるために以下を実行します。
sudo update-rc.d hostapd enable 
sudo update-rc.d isc-dhcp-server enable 

参考文献

  1. DHCPサーバーの構築(isc-dhcp)
  2. Raspberry Pi をWi-Fiアクセスポイント&ルーター化する - 猫ぱーんち!
  3. How To : Use The Raspberry Pi As A Wireless Access Point/Router Part 3…B! » The Rantings and Ravings of a Madman
  4. networking - isc-dhcp-server install and run problem - Raspberry Pi Stack Exchange
  5. Install software | Setting up a Raspberry Pi as a WiFi access point | Adafruit Learning System

2014.12.28 作成
2015.1.21 /etc/network/interfaces の編集で表現があいまいであった部分を修正
2016.10.5 不要な作業の削除