NASがどんなIPアドレスを取得したのかは、液晶表示のついているものを買わない限りわからない。設定用のWebインターフェイスにアクセスするためには、IPアドレスを知る必要がある。
各社そのためのツールを用意していたりするのだけど、アプリのインストールを強要されたり、独自の専用プロトコルになっていたりでどうにもよろしくない。
たいていのNASは、macOSサポートとかのためにmDNSをサポートしているので、mDNSを使ってサービスを探せばよい。macOSでは、dns-sdコマンドでサービス探索をすることができる。
mDNSは、IETFのZeroconfを起源として発展させたAppleのBonjour(リリース当初はRendezvousと言われた)で使われたローカルネット上のサービス発見プロトコル。詳細仕様が公開されたことから、IETFでZero Configuration Networkingの一部として標準化されている。
IPv4ネットワークで、マルチキャストで「おーい!」と叫ぶと「いるよ!」と返事が返ってくる感じのサービスだ。プロトコルやサービスごとにアナウンスしているので、「ピザはどこ?」というと「うちがピザ屋だ!」と返事が来る。このブロードキャストには、UDPで5353が使われる。マルチキャストで名前引きをするので、マルチキャストDNS(mDNS)と呼ばれる。
サービスのアナウンスとともに、ローカルでの名前解決も提供しているので、サービスから返事があると、そのIPアドレスとホスト名は端末内でキャッシュされて、DNSと同様の名前解決を提供する。ローカルでの名前解決は、通常のDNSでの名前解決と区別するために、".local"が使われる。.localは通常は省略することができる。
もちろん、サービスアナウンスする側でブロードキャストに応答する仕組みも必要になる。そこで登録されたサービスしかアナウンスされない。単独でSambaだけ動かしていてもアナウンスが出るわけではない。アナウンス自体は、サービス起動時に登録し、終了時にリストから削除するだけで、自動で行ってくれる。
LinuxでのmDNSは、Avahiでサポートしている。また、mDNSは、Win10でも標準でサポートされている。
コマンドでmDNS問い合わせを行うには、macOSでは、dns-sdコマンドを使う。Linuxでは、avahi-browseコマンドを使う。Win10ではコマンドで問い合わせるツールは標準で持っていないようだ。
NASはSMBをサービスしているので、smbでアナウンスしているデバイスを探す。
$ dns-sd -B _smb._tcp
Browsing for _smb._tcp
DATE: ---Tue 31 Mar 2020---
11:40:16.594 ...STARTING...
Timestamp A/R Flags if Domain Service Type Instance Name
11:40:16.595 Add 3 14 local. _smb._tcp. landisk-ff0a65(smb)
11:40:16.597 Add 2 8 local. _smb._tcp. landisk-ff0a65(smb)
AFPをサポートしているNASでは、AFPでアナウンスしているデバイスを探すこともできる。
$ dns-sd -B _afpovertcp._tcp
Browsing for _afpovertcp._tcp
DATE: ---Tue 31 Mar 2020---
11:49:19.393 ...STARTING...
Timestamp A/R Flags if Domain Service Type Instance Name
11:49:19.394 Add 3 14 local. _afpovertcp._tcp. landisk-ff0a65
11:49:19.394 Add 2 8 local. _afpovertcp._tcp. landisk-ff0a65
あとは、mDNSでの名前引きに対応しているブラウザで"landisk-ff0a65.local"にアクセスしたら、設定画面が表示される。
サービスのアナウンスと探索には、公開されたプロトコルが存在するので、各メーカーにはオリジナルの妙なプロトコルで実装するのはやめて、基本機能はmDNSで実装してほしいものだ。
オリジナル投稿:
専用ツールに頼らずにNASを探す|kinneko|pixivFANBOX
https://kinneko.fanbox.cc/posts/929377



