Webサーバーを搭載したLinuxを実行する小さなデバイスを作成しています。プラグアンドプレイで、ネットワークに接続し、抽象的な名前を使用してアクセスしたいと思います。
ホスト名のみを使用してデバイスにアクセスすることは可能ですか?
一部のネットワークでは–はい。しかし、日常のTCP/IPネットワークでは、ホスト名はIPアドレスに変換可能である必要があります。そうでない場合、クライアントは何に接続するかわかりません。
ただし、ローカル名検索にはいくつかの既存のプロトコルがあります。
Windowsは、UDPブロードキャストを使用して、同じLAN内の他のコンピューターのホスト名を解決するためにNetBIOSネームサービスを使用するために伝統的に使用されていました。サーバーは、NetBIOSを使用して検出できるように、Sambaのnmbd
コンポーネントを実行する必要があります。
最近のWindowsバージョンも[〜#〜] llmnr [〜#〜]をサポートしています。これはmDNSに似ていますが、機能が少なく、IPv6が必要です。 Linuxでは、_systemd-resolved
_にLLMNRクライアントがあります。他のオペレーティングシステムについてはわかりません。おそらく検討する価値はありません。
Windows 10の最新リリースは、mDNSもサポートしています。
OS Xは、同じ目的でmDNS( "マルチキャストDNS")(Bonjourとも呼ばれます)を使用します。 (mDNSは通常、NetBIOSのように裸のホスト名を解決しないことに注意してください。代わりに、_.local
_ドメインに制限されます。)mDNSの場合、サーバーには_avahi-daemon
_が必要です。
新しいWindows10.19xxには、mDNSサポートが組み込まれています(ただし無効になっています)。 Bonjourがインストールされている場合(通常はiTunesの一部として)、古いWindowsはmDNS名を解決できます。また、「Windowsファイル共有」または同様のサービスが有効になっている場合、OSXはNetBIOSをサポートする必要があります。
デスクトップ指向のLinuxシステムには、多くの場合、NetBIOSとmDNSリゾルバーの両方が事前構成されています。 (つまり、nmbd
と_avahi-daemon
_の両方に加えて、_/etc/nsswitch.conf
_の関連するglibc NSSモジュールを実行します。)
最後に、ほとんどの「ホームルーター」は、受信したホスト名に応じてローカルDNSドメイン(_.lan
_、_.home
_、&c。)を維持しますDHCP要求から LAN内のコンピューターによって送信されます。サーバーが使用するものに応じて、dhcpcd
は「hostname
」オプションを必要とし、dhclient
は「send Host-name = gethostname()
」を使用します。