マツド・サイエンス研究所

Raspberry Pi Zero W ミニサーバー と DNS

前回の記事

に書いた RTC とシャットダウン・ボタンを写真のようなケースに入れてミニサーバーにした

本当は、FRISKのケースに入れたかったのだが、RTCを入れると、どうしても大きくなってしまう。

そこで、千石電商で買った 80 x 40 x 20 mm のケースに入れることにした

中は、次の写真のように、2枚の基板をロープロファイルのヘッダーで結合する形式にしている(回路は前回示した通り)

これなら、必要な時に分解して、カメラを接続するなり、ブレッドボードで実験するなり、自由にできる

実は、失敗したなあと思うところが一つある

RTCを左側に、押しボタンスイッチと LED を右側に半2階に飛び出した配置にしているが、左右逆にすれば良かった

千石電商で買ったケースは、対角に蓋を絞めるネジが付いているのだが、これと干渉するが、左右逆なら問題ない

ケースの表面には、アクセスしやすいように、SSIDやパスワード、最初にアクセスすべき URL を QR コードをシールで貼った

(写真は、凄く簡単な SSID と パスワードにしているが、実際に作る時は、難しいパスワードに変えるように)

カメラで、 UR コードが認識できるスマホなどからだと、簡単に Wifi に接続できる

なお、ホスト名は、「raspberrypi」から「piserver」に変更している

と、ここで問題が起こった

接続した Android スマホから「http://piserver.local」の URL が接続できないのだ

Ubuntu からなら、接続できるのに

DNSを立てる 調査の結果、Raspberry Pi Zero W が DHCP サーバーとしては働いているが、DNS サーバーになっていないことが判った

急遽、DNSサーバーをインストールしたが、普通 Linux で使われる bind9 は上手く行かなかった

代わりに、dnsmasq を使った

$ sudo apt-get install dnsmasq dnsutils
$ sudo vim.tiny /etc/hosts
<< 下記のようにした >> 127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
127.0.11.1 piserver
192.168.123.234 piserver.local

また、/etc/dhcp/dhcpd.conf のドメインネームサーバーのところに、192.168.123.234 を追加する。

option domain-name-servers 192.168.123.234, 192.168.137.1;

これで、再起動すると、スマホからでも、Ubuntuからでも「http://piserver.local」が接続できる

なお、DNSが正常じゃなかった時点で、なぜ、Ubuntuから「http://piserver.local」が接続できていたかは謎である

追記 『DNSが正常じゃなかった時点で、なぜ、Ubuntuから「http://piserver.local」が接続できていたかは謎である』の部分ですが、Twitterで、GNUE(鵺) @gnue さんが、教えてくれました

・ホスト名.local となってるものは mDNS と思っていいかと思います。ホスト名がぶつかった場合は ホスト名+数字.local みたいに自動的に名前解決が行われます。ちなみにその性質上 同一LAN上でのみ使えます

・Raspbianには最初からmDNSが入ってます

・Ubuntu が接続できたのは、Ubuntuにavahi (mDNSのソフト)が入ってたからでしょう。

・おそらく、Android が mDNS に対応してないために、接続できなかったと思われます

・なお、 Apple が macOS/iOS で使用している Bonjour と同じプロトコルですなので、iPhone なら接続できたかもしれません

どうも有難うございます

注意

ブログのコンテンツの内、「告知」など時期よって情報価値が無くなるのは除いてある。また、コンテンツに付いたコメントは書き込み者に著作権があるものと判断し、ここに持ってきていないので、コメントを見るときは、元々のブログコンテンツを参照してもらいたい。

その他、ブログ発表後、コメントなどの内容を反映するなど、内容を変更しているものもあるので、注意してほしい。