伝説のSpice特別企画 いまさらIOT
Raspberry pi Zero のWifiを設定する
設定前状態の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 のアドレスでアクセスするとデフォルトページが表示されます。