解決可能なローカル Web ホスト名を設定しますか?

解決可能なローカル Web ホスト名を設定しますか?

次のような状況があります:

raspi3-netw-02

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) では何も変更しません。

最初にこれを見つけました:

それで、私はそれに従いました。今、私は RPi に次のものを持っています:

  • /etc/hosts->127.0.1.1 myrpi
  • /etc/hostname->myrpi

その後、sudo apt-get install avahi-daemonRPi で実行して再起動しました。

次に、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 mD​​NS システムをインストールし、それを .local ドメインを「所有」するように構成し、ホスト名解決の順序で通常の DNS よりも優先させるためです。

そこで、ドメイン名に追加されることはそれほど気にしていない.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 ブラウザーも同様です)。理由は明らかですが、ここではmyrpi127.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.confRPi で変更してみました:

# 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 サーバーのコンテンツを取得できるようになります。

関連情報