私はインターネットから遮断されたLANで動作していますが、イーサネットケーブルを介して単一のルーターに接続されたいくつかのデバイス(A、B、C、...)があり、このLANを可能にしています。すべてのデバイスのオペレーティングシステム:Windows10。
質問:
この質問の内容は以下で見つけることができます
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の評判がありません。作成後に質問にタグを付けることができる場合は、この質問を編集して、このタグを追加してください。
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 を参照してください。