最新のローカルエリアネットワークでは、デバイスはいくつかの異なる手法を使用して名前を解決します。具体的には、DNS、Avahi、zeroconf、mDNS、Bonjour、NetBIOS、WINS、さらには手動のhostsファイルなどをいくつか挙げます。これらのいくつかは、基本的に同じことを表す異なる用語だと私は信じています。分散型テクノロジーを使用するものもあれば、DHCPに依存して中央アドレスを配布するものもあります。
現在の一般的なオペレーティングシステムは、これらの異なる、おそらく競合する名前解決手法をどのように通過しますか?彼らはどのような順序を使用しますか? OSが異なれば動作も異なりますか?
foobar
のIPを要求するとき、ローカル検索ドメインが名前に追加されるのはいつですか。最初の名前解決が失敗した後、ネットワーク上で何かを要求する前、またはその他の時間ですか。 DNSリゾルバーは、テーブル内のエントリを検索しようとしたときに検索ドメインを追加できますか(および/または実行できますか)?
ルーターで(空白ではなく)ローカル検索ドメインを指定したときに、クライアントの動作が変更されたのはなぜですか?
これらのメソッドの一部は、.local
tld/searchドメインをサポートおよび/または使用します。これはAvahiだけのものですか?
ドメインの最後に.
を追加すると、どのように変化しますか?これは単に「ローカルドメイン」の検索を妨げるのでしょうか? google.com
を検索するときに、末尾の.
が必要ないのはなぜですか?
DNSリゾルバーがgoogle.com.local
またはgoogle.com.MyLocalSearchDomain
を検索しないのはなぜですか?
検索ドメインをネストできますか?
NetBIOSとWINSは同じものですか?avahi、bonjourなどはどうですか?
フォローアップの質問:これらの各サービスはどのように機能しますか? DNSは、各クライアントが使用するように構成されている(基本的に)1つの中央サーバーの従来のスタイルを使用していることを理解しています。ただし、分散型メソッドは、名前を自動検出するために他のいくつかの手法を使用する必要があります。それらはどのように機能しますか?
要するに、これは、さまざまなOS、製品、アプリ、サービス、およびAPIで使用される名前解決プロトコルのさまざまなセットの非常に厄介な組み合わせです。
IETF ZeroConfは、mDNS(マルチキャストDNS)プロトコルとDNS-SD(DNSサービス検出)プロトコルを定義します。 Bonjour(旧姓Rendezvous、別名mDNSResponder)とAvahiは、ZeroConfの2つの実装です。 OpenWrtコミュニティから、単に「mDNS」と呼ばれる実装もあると聞きました。 Appleがこれを作成したので、Apple製品はこれに焦点を合わせていますが、MacはNetBIOSネームサービスとWINS特にmacOSのSMBクライアントを使用してSMBファイルサーバー(Windowsサーバー、Linux SaMBaサーバー)に接続する場合。
Microsoft独自のネームサービスプロトコルは、LANローカル(ルーティング不可)ブロードキャストに基づいたNetBIOSネームサービスで始まります。私は「マイクロソフト独自の」と言いますが、技術的には、サーバーメッセージブロック(SMB)プロトコルの一部としてIBMから発信されました。 SMBファイルサービスが事実上の業界標準になったため、多くのOSは少なくともSMBクライアントとサーバーでNetBIOSネームサービスを採用する必要がありました。後で、 MicrosoftはWINSを作成して、これと同じ種類のMicrosoft独自の名前解決のためのサーバーベースのユニキャストソリューションを提供します。Appleが「Rendezvous」という名前でmDNSを作成したとき(後にBonjourに名前が変更されました)そしてそれをIETFに持ち込み、最終的にIETF ZeroConfになりました。マイクロソフトは、「リンクローカルマルチキャスト名解決」(LLMNR)と呼ばれる、わずかに異なる互換性のない独自のmDNSのような考え方を行うことに戸惑いました。世界では、「。local」ホストの要求は通常、ZeroConfによる「.local」の標準化された使用にかかわらず、LLMNRに送信されます。Microsoftは、ルーター(Wi-FiAPおよびNATゲートウェイ)。
Google Androidを含むLinuxは、現在LANベースのサーバーレス名前解決のためにZeroConfに引き寄せられているようです。 Googleは、Androidで使用するためにAppleのPOSIX準拠のオープンソース「mDNSResponder」デーモンをLinuxに移植しました。これは、Androidの「ネットワークサービスディスカバリ」(NSD)APIを実装するものです。
MacOSと同様に、LinuxはWINSサーバーに接続するために、NetBIOSネームサービスとSMBを使用します。
これは非常に混乱しており、特定のものにどのプロトコルが使用されるかは、使用しているOS、ソフトウェアが呼び出すAPI、およびその他の多くのものによって異なります。