伝説のSpice特別企画 いまさらIOT

[前のページ] [TOPページ] [次のページ]

Raspberry pi Zero のWifiを設定する

youtubeWifiをアクセスポイントとして設定する

設定前状態のSDカードをPCにバックアップする

Wifiの設定は間違いますと、SSHアクセスが出来なくなることがあります。 そうなると何もアクセスできなくなります。 手足を隠した亀さんです。 本体にキーボード、マウスをつなげて復旧となりますが、バックアップしておくと設定前に戻ることが出来てやり直しが利きます。


まずシャットダウンする TeraTermからシャットダウンコマンド

sudo shutdown -h now

LEDが消灯したら、電源を切りSDカードを抜いてWin32 Disk ImagerでPCにバックアップをとる

イメージファイルのバックアップと復元

Wifiをアクセスポイントとして設定する。

アクセスポイントは操作する携帯からつなげるWifiポイントです。 Wifiルーターと同じような役目になりますが、今回は内部Webサーバ-以外にルーティングしませんので閉鎖された環境となります。 この部分は hostapd dnsmasq で構成されます。 Web情報が新旧たくさんあるの、このシステムとして最適なことをここで説明のしなおします。

関連するパッケージは
 hostapd
  関連ファイルは /etc/hostapd/hostapd.conf  , /etc/default/hostapd

dnsmasq
  関連ファイルは  /etc/dnsmasq.conf 

Wifi 設定ファイルとして
  関連ファイルは  /etc/wpa_supplicant/wpa_supplicant.conf

ネットデフォルト設定ファイル
 /etc/dhcpcd.conf , /etc/network/interfaces

6種類のファイルについて編集とタッチをします。

/etc/wpa_supplicant/wpa_supplicant.conf
/etc/dhcpcd.conf
/etc/network/interfaces
/etc/dnsmasq.conf
/etc/hostapd/hostapd.conf
/etc/default/hostapd

Wlan(Wifi)の入り口の定義ファイルを設定

まずファイル  /etc/wpa_supplicant/wpa_supplicant.conf を確認します。

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

テキストエディタnanoが起動します。 操作の方法は簡単です。 エディタの下にも書かれています。
 編集なしで終わるとき ctrl+x
 編集して保存して終わるときctrl+o その後改行キーで保存されるので ctrl+x
これだけ知っていれば編集はやってみるとわかります。 もちろんほかのエディタでも良いです。

ファイルの中身が下記3行であれば問題ありません。

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1 country=JP

このファイルにはraspberry-piからつなげる先へのアクセスポイント名称など設定します。 今回はraspberry-piは外に見に行かないので設定はこの3行しかありません。 それ以上の記述がある場合削除してください。 定義があると自分がアクセスポイントになりながら、さらに外にアクセスに行こうとします。 本来両方出来るようですが、うまく行きませんでした。

パッケージをインストールします。

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install dnsmasq hostapd

二つ同時にインストールしています。 途中でYes/Noを聞かれますがYesで進めてください。 
DHCP設定ファイルを編集します。

sudo nano /etc/dhcpcd.conf 

このファイルはほとんどがコメントですがたくさん書かれています。 ファイルの一番最後に下記を追加します。

# define static profile これはフォールバックのときの 192.168.1.40 で固定にする
profile static_eth0
static ip_address=192.168.1.40/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1

# fallback to static profile on eth0 ここでフォールバックのときどうするか選択している
interface eth0
fallback static_eth0

denyinterfaces wlan0

interface wlan0
static ip_address=192.168.2.1/24
static routers=192.168.2.1
static domain_name_servers=192.168.2.1
static broadcast 192.168.2.255

たくさんありますが、nano と TeraTetmならコピぺ出来ます。
設定内容の詳細は動画を見てください。

/etc/network/interfaces ファイルは変更しません。 色々調べると従来まではここに設定をしていたIPアドレスなどを管理位置を変えたということのようです。(旧互換性はあるようです)

/etc/dnsmasq.conf を編集します。 このファイルは大量のテキストが雛形コメントとして書かれています。 人によってはこれを別名保存して新しく作っているようですが、私は一番最後に追加します。
しかし、一番最後の2行は雛形でありながら有効行になるのでコメント化します。 nanoでページ単位で下に移動するにはctrl+vでいけます。

sudo nano /etc/dnsmasq.conf

行末のこの2行はコメントにします・

# Delays sending DHCPOFFER and proxydhcp replies for at least the specified number of seconds.
# dhcp-mac=set:client_is_a_pi,B8:27:EB:*:*:*
# dhcp-reply-delay=tag:client_is_a_pi,2

その下に追加します。

interface=wlan0
listen-address=192.168.2.1
bind-interfaces server=8.8.8.8
domain-needed
bogus-priv dhcp-range=192.168.2.2,192.168.2.5,255.255.255.0,12h

ホストサービスする設定ファイル hostapd.conf を作成します。 

sudo nano /etc/hostapd/hostapd.conf 

これは新規作成になります。

interface=wlan0
driver=nl80211
ssid=XXXXXXXXX
hw_mode=g
channel=6 ieee80211n=1
wmm_enabled=1
ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40] macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2 wpa_key_mgmt=WPA-PSK
wpa_passphrase=YYYYYYYY
rsn_pairwise=CCMP

上記の ssid=XXXXXXXXX は XXXXXのところに操作する携帯から探すWifiポイントの名称を入れます。
また wpa_passphrase=YYYYYYYY は YYYYYYのところに接続パスワードを入れます。 パスワード8文字以上に注意してください。

作成したファイル hostapd.conf を /etc/default/hostapd に登録が必要です。

sudo nano /etc/default/hostapd

ファイルの最後に下記を追加します。

DAEMON_CONF="/etc/hostapd/hostapd.conf"

6種類のファイルについて編集とタッチをしてきました。

/etc/wpa_supplicant/wpa_supplicant.conf
/etc/dhcpcd.conf
/etc/network/interfaces
/etc/dnsmasq.conf
/etc/hostapd/hostapd.conf
/etc/default/hostapd

サービスプログラムを起動設定をします。

Web情報によるとDHCPの起動タイミングに工夫が必要で、パワーオン起動後、起動順番時間を保障するために一旦DHCPをとめて再起動する必要があるようです。 確かに起動画面を見ているとdnsmasq が{FAILE}表示しています。 /etc/rc.localが起動したときに実行されますのでそこを編集します。 

sudo nano /etc/rc.local

下位の内容を すでにある行末の  exit 0  の前に挿入します。

service dnsmasq stop
sleep 8 # RasPi起動時にホスト機能 8秒のタイミングで再起動 service dnsmasq start 

hostapd を許可します。 本当は enable だけかと思いましたが、それだけですとスタートしません。 調べますと mask という考え方があって unmask が必要なようです。  

sudo systemctl unmask hostapd
sudo systemctl enable hostapd

dnsmasq はインストール時にすでに許可状態で動作していますので、こもまま再起動します。

sudo reboot

再起動後にTeraTermで接続して、起動状態を確認して、携帯からアクセスしてみる

systemctl status dnsmasq 
systemctl status hostapd

正しく起動していると携帯とかPCのWifiから 192.168.2.1 でアクセスポイントとして入ることが出来ます。 すでに前ページのサーバー設定でポート80hのページが動いていますので、接続しましたら
http://192.168.2.1 のアドレスでアクセスするとデフォルトページが表示されます。

[前のページ] [TOPページ] [次のページ]