VolumioのIPアドレスを調べて接続する

名前解決というとhostsファイルやDNSで行うのが一般的だけど、実は知らないうちに?でも意外と多く利用されている名前解決方法もある。今回は2つ挙げる。
  • mDNS (multicast Domain Name System)
  • LLMNR (Link-Local Multicast Name Resolution)

どちらも名前に「マルチキャスト」が含まれているが、要するにどちらもネットワークのセグメント内で自分の名前(ホスト名)を名乗り合うことでネームサーバ無しに名前解決するものだと思えば良い。
「やぁやぁ、セグメント内のやつは音にも聞け、我こそはローカル村のhoge(hoge.local)也・・・」「しかと憶えたぞ(キャッシュした)」そんな仕組み。ただし名乗る前に名前がコンフリクトしないように根回しする。「俺、ジーパン刑事デカって呼んで欲しいんだけどLAN内には他にジーパン刑事は居ないよね?」「えっ?2号までいるの・・じゃあ俺はジーパン刑事3号でいくか。」ってのをやってる。

mDNSはAppleのBonjourに含まれているのでApple製品では特に意識せずに使える。AvahiはそのBonjourのZeroconf仕様を実装したものでLinuxなどで使われるようになっている。ただし、Linuxなどでは必ず使えるようになっているとは限らない。avahiが入っていて/etc/nsswitch.confの設定がしてあれば使える筈。
LLMNRはWindowsで使われる名前解決。以前はNetBIOSとかLMHOSTSの名前解決方法もあった(今も無くなってはない)けど今後はLLMNRになるのかな。でも、Windows10ではmDNSも使えるからLLMNR普及するのかしら?
とにかく、根は似たようなものだけど例によってAppleとMicrosoftで実装が違うと思えば良さげ。

VolumioとmDNSとAndroid

Volumioではavahiデーモンが動いているのでLAN(同一セグメント)内でmDNSが使える環境からは volumio.local というホスト名を指定することで接続できる。だから、MacとかiPhone, Windows, Linux(の多く)では特に意識せず普通に接続できる。

しかし、対応していない端末というのも結構ある。利用者の多いOSではAndroidとか(これも一応Linuxだけど)。AndroidもmDNSに1㍉も対応していないということではないけどmDNS対応として作ったアプリでしか使えないという。それって結局は使えないってことだと思うけど。

つまり、AndroidではmDNS対応アプリ以外では volumio.local というホスト名では Volumioには接続できない。
ネットワークの知識があればVolumioに割り当てられたIPアドレスを調べることができるだろうけど、そうではない場合またはIPアドレスを調べられる環境ではないということもあるかも。
そこでAndroidでVolumioのIPアドレスを調べてブラウザで表示する方法。

Service Browser 1
Service Browser
をインストールする。

Service Browser 2
Service Browserアプリを開くとネットワークの同一セグメント内に居るmDNS対応のホストがリスト表示される。ただし、サービス(ポート)別に表示されるので同じホストが複数表示されていることもある筈。
Volumioを探すのであればズバリVolumioという文字列が含まれているのがそれだけど、本当にアクセスしたいのはそのHTTPポートなので本当は2番めの赤枠。ただし、この時点では2番めがVolumioの端末かどうかはわからない。(他のホストのHTTPサービスかもしれない)
とりあえず一番上の _Volumio._tcp をクリックしてみた。

Service Browser 3
volumio.localのIPアドレスが表示されるので憶える。

Service Browser 4
さらにそのvolumio とIPアドレスをクリックすると詳細が表示される。1つ前の画面でIPアドレスを知ることができたならこの画面を見る必要はない。

機能としては次のアプリも同じ。見た目が違うだけという感じ。

ZeroConf Browser 1
ZeroConf Browser
をインストールする。

ZeroConf Browser 2
ZeroConf Browserアプリを開くとネットワークの同一セグメント内に居るmDNS対応のホストがリスト表示される。ただし、サービス(ポート)別に表示されるので同じホストが複数表示されていることもある筈。
Volumioを探すのであればズバリVolumioという文字列が含まれているのがそれだけど、本当にアクセスしたいのはそのHTTPポートなので本当は2番めの赤枠。ただし、この時点では2番めがVolumioの端末かどうかはわからない。(他のホストのHTTPサービスかもしれない)
とりあえず一番上の _VOLUMIO をクリックしてみた。

ZeroConf Browser 3
volumio.localのIPアドレスが表示されるので憶える。

VolumioのIPアドレスがわかったのでブラウザにそれを入力してVolumioを表示する。

ZeroConf Browser 1
ブラウザがChromeのGoogleの画面だと一番上にURLの入力欄が無いので検索窓に入力することになる。Googleの画面以外では上部に表示されるURL入力欄に入力する。

ZeroConf Browser 2
IPアドレスを入力する。

ZeroConf Browser 3
Volumioが表示される。

こんだけのことなのでわからないということはないと思う。

おまけ

気をつけたいのはmDNSを使おうとする環境では他の名前解決方法で ホスト名.local のような名前が引けないようにしなければならないこと。つまりmDNSを使おうとしているのに例えばローカル用のDNSサーバとかActiveDirectoryで hoge.local のようなレコードが登録されていていてそれが使えるとダメ。まぁ、そんな環境であれば、もう名前が引けてる筈だから更にmDNSを使おうという話にならないと思うけど。

LinuxからVolumioのIPアドレスを調べる場合。

$ ping -c 1 volumio.local
PING volumio.local (192.168.2.220) 56(84) bytes of data.
64 bytes from 192.168.2.220: icmp_seq=1 ttl=64 time=2.80 ms
非常に簡単。
関連記事: