
次のような状況があります:
Raspberry Pi 3はWiFiアクセスポイントとしてセットアップされています(https://frillip.com/using-your-raspberry-pi-3-as-a-wifi-access-point-with-hostapd/) と Web サーバーを作成します。 にホスト名 (たとえば ) を付けます。このホスト名はmyrpi
、有線接続か無線接続かに関係なく、ローカル ネットワーク上のどのクライアントからも解決可能で、http://myrpi
任意のローカル PC (Windows、Ubuntu) 上の任意のブラウザー (Firefox、Chrome) に Web アドレスを入力すると、Raspberry Pi のポート 80 で Web ページが提供されます。Web クライアント コンピューター (RPi が Web サーバーである場合、画像上の Windows および Ubuntu PC) では何も変更しません。
最初にこれを見つけました:
- http://www.howtogeek.com/167190/how-and-why-to-assign-the-.local-domain-to-your-raspberry-pi/
- http://www.howtogeek.com/167195/raspberry-pi または他の Linux デバイスのホスト名を変更する方法/
それで、私はそれに従いました。今、私は RPi に次のものを持っています:
- 中
/etc/hosts
->127.0.1.1 myrpi
- 中
/etc/hostname
->myrpi
その後、sudo apt-get install avahi-daemon
RPi で実行して再起動しました。
次に、Ubuntu PC (WiFi クライアントとして RPi に接続) のコマンド ラインから試します。
$ ping myrpi.local
PING myrpi.local (172.24.1.1) 56(84) bytes of data.
64 bytes from 172.24.1.1: icmp_seq=1 ttl=64 time=1.54 ms
...
$ wget -O- myrpi.local
Resolving myrpi.local (myrpi.local)... 172.24.1.1
Connecting to myrpi.local (myrpi.local)|172.24.1.1|:80... connected.
HTTP request sent, awaiting response... 200 OK
...
<p>This is the default web page for this server.</p>
...
ここまでは良さそうですが、http://myrpi.local/
Ubuntu PC 上の Firefox または Chromium で Web アドレスを入力すると、「サーバーが見つかりません」というメッセージが表示されます。
これは、Ubuntu 上の Avahi の状態と関係がある可能性があります。
[解決済み] 企業 LAN 上の .local ドメインのサーバーにアクセスできない
これらは Ubuntu では動作しません。これは、Ubuntu がデフォルトで AVAHI Zeroconf mDNS システムをインストールし、それを .local ドメインを「所有」するように構成し、ホスト名解決の順序で通常の DNS よりも優先させるためです。
- 173804 – [rfe]ブラウザにBonjour (Rendezvous/zeroconfig)のサポートを追加
- https://stackoverflow.com/questions/29637622/resolve-mdns-local-url-in-browser-address-bar
- PC版Google Chromeは「.local」ドメイン名を認識しない
そこで、ドメイン名に追加されることはそれほど気にしていない.local
、ただそれが正しいやり方だと思っただけだ、と考えました。そこで、Ubuntu PC から直接ホスト名を呼び出してみました。
$ ping myrpi
PING myrpi (127.0.1.1) 56(84) bytes of data.
64 bytes from myUbuntuLaptop (127.0.1.1): icmp_seq=1 ttl=64 time=0.022 ms
...
$ wget -O- http://myrpi/
--2017-01-26 13:38:56-- http://myrpi/
Resolving myrpi (myrpi)... 127.0.1.1
Connecting to myrpi (myrpi)|127.0.1.1|:80... failed: Connection refused.
ここでは動作しませんwget
(明らかに、Firefox や Chromium ブラウザーも同様です)。理由は明らかですが、ここではmyrpi
127.0.1.1 に解決され、これは RPi にそのまま記述されているものです/etc/hosts
。しかし、Ubuntu ラップトップでは、同じアドレスはループバック アドレスであるため「このラップトップ」を意味し、Ubuntu ラップトップでは Web サーバーが実行されていないため、プロセス全体が失敗します。
さて、ここで面白いことがあります。このセットアップでは、Windows PC (Windows 7 だと思います)myrpi.local
が に解決され192.168.0.51
、 の Web ページがhttp://myrpi.local/
Windows 上の Firefox と Chrome の両方で正常に動作するのです。
最終手段として、/etc/nsswitch.conf
RPi で変更してみました:
# hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4 # original
hosts: files dns mdns4 mdns4_minimal
... 再起動しても、Ubuntu のブラウザは依然として または にアクセスできませhttp://myrpi/
んhttp://myrpi.local/
。RPi/etc/resolv.conf
のブラウザは依然として変更されていません。
では、ローカル ネットワーク上で解決可能な名前 (.local
または名前が付けられない名前) を Raspberry Pi に付けるにはどうすればよいでしょうか。そうすれば、その PC で実行されている OS やブラウザーに関係なく、同じローカル ネットワーク上の他の PC が Raspberry Pi から Web サーバーのコンテンツを取得できるようになります。