web-dev-qa-db-ja.com

LLMNRとDNS-「。」を追加しない限り、「ping」がdnsではなくllmnrを使用するのはなぜですか。ホスト名に、そしてなぜllmnrが機能しないのですか?

私はインターネットから遮断されたLANで動作していますが、イーサネットケーブルを介して単一のルーターに接続されたいくつかのデバイス(A、B、C、...)があり、このLANを可能にしています。すべてのデバイスのオペレーティングシステム:Windows10。

質問:

  • DNSが失敗しないのに、なぜLLMNRが失敗するのですか?
  • 「pingA」がLLMNRを使用するのに、「pingA」が使用されるのはなぜですか。 DNSを使用していますか?
  • NslookupにDNSの代わりにLLMNRを使用させる方法はありますか?その理由は何ですか?
  • '。'を追加すると、正確に何が起こっているのでしょうか。 'ping'と 'nslookup'の両方のホスト名に?
  • これらの質問(仕事の分野と経験の種類)に対する答えをどのように知っていますか?

この質問の内容は以下で見つけることができます

nslookup A

そして

nslookup A.

どちらも次の満足のいく出力を生成します

Server:  localDnsServerName
Address: 192.168.1.1

Name:    A
Address: 192.168.1.X

でも

ping A.

満足のいく出力が得られます(クエリ対象のホスト名に「。」が追加されます)

Pinging A [192.168.1.x] with 32 bytes of data:
Reply from 192.168.1.X: byte=32 time<1ms TTL=128
Reply from 192.168.1.X: byte=32 time<1ms TTL=128
Reply from 192.168.1.X: byte=32 time<1ms TTL=128
Reply from 192.168.1.X: byte=32 time<1ms TTL=128

Ping statistics for 192.168.1.X:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms

ただし、次のコマンド

ping A

不十分な出力が生成されます

Ping request could not find Host A. Please check the name and try again.

さらに調査すると、Wiresharkを介して、nslookupコマンドと「pingA」が表示されます。コマンドを実行すると、DNSプロトコルを使用した標準クエリが成功します。

ただし、「ping A」は、LLMNRプロトコルを使用した標準クエリになり、失敗します。

RFC 4795 経由、LLMNRの要約:
"リンクローカルマルチキャスト名前解決(LLMNR)の目標は、従来のDNS名前解決が不可能なシナリオで名前解決を有効にすることです。LLMNRは現在および将来のすべてのDNS形式、タイプ、およびクラスをサポートしますが、 DNSとは別のポートで動作し、個別のリゾルバキャッシュを使用します。LLMNRはローカルリンクでのみ動作するため、DNSの代わりとは見なされません。」

追加のタグ: 'llmnr'
上記の追加タグを正式に追加したはずですが、新しいタグを作成するために少なくとも300の評判がありません。作成後に質問にタグを付けることができる場合は、この質問を編集して、このタグを追加してください。

1
Hybr13

LLMNRは、単一ラベル名(または、特別な場合として、解決する前にhostnameに変換されるhostname.local形式の名前)のローカルリンクでのみ使用することを目的としています。ホストは自分の名前で応答します。中央ネームサーバーはありません。

Why is LLMNR failing, when DNS doesn't?

おそらく、ホストAは他の名前で認識されています。つまり、名前AはDNSで認識されていますが、hostnameコマンドをA。または、ホストAがLLMNRレスポンダーとして機能していません。

Why does 'ping A' use LLMNR, while 'ping A.' uses DNS?

なぜなら、A.は単一ラベルの名前、つまりドットのない名前ではないからです。

Is there any way to force nslookup to use LLMNR, instead of DNS, and why?

nslookupは、DNSを照会するためのツールです。プログラムはLLMNRを認識していません。

DNSとLLMNRは、相互に補完するように設計されています。 LLMNRはLANで使用されるため、ローカル名を提供するローカルDNSサーバーを用意する必要はありません。 DNSは、インターネット上の名前を解決するために使用されます。

LLMNRのチュートリアルについては、 Link-Local Multicast Name Resolution を参照してください。

1
Johan Myréen