web-dev-qa-db-ja.com

`.local`名の解決(mDNSのみ)

さまざまなシステム(常時オンのRaspberry Piを含む)を含むmDNSを使用してセットアップされたホームネットワークがあります。私のマシンはavahiデーモンを実行しているので、現在の状況は次のとおりです。

  • ネットワーク上の誰もがHost.local名を解決できます。

さらに欲しいもの:

  • 私が管理しているマシンは、HostHost.localと同じアドレスに解決することもできます。

私はそれを行うための3つの方法を考えることができます:

  1. search local/etc/resolv.confに入れます: これはmDNSでは尊重されません おそらく「問題を引き起こしている」ためです。すべてのマシンで--enable-search-domainsオプションを使用して再コンパイルできました。

  2. すべてのネットワークマシンに静的な/etc/hostsファイルを書き込みます。これは私が現在していることです。ただし、構成が分散されるため、避けたいと思います(これらのファイルdoは最終的に同期しなくなります)。

  3. ネットワーク上にDNSサーバーをセットアップします。ただし、インターネットアクセスが提供されているルーターはDNSを実行しないため(これは他の会社に変更するのにほぼ適切な理由です)、Raspberryに設定する必要があります。これは分散構成の問題も引き起こします。ラズベリーの静的DNS情報は最終的にmDNS情報と同期しなくなるため、HostHost.localは2つの異なるIPアドレスを混乱させる可能性があります。 .。。

だから、私の質問は:

  • --enable-search-domainsオプションによって引き起こされる「問題」は何ですか? (私が見ている唯一のことは、LAN上の誰もが非修飾ホスト名を設定できることですが、1。すでに制御しているもの以外は非修飾ホスト名を使用していません。2。LANアクセスはすでに信頼できるものに制限されています。とにかくピア)。

  • 他の4番目のオプションを逃しましたか? (たとえば、DNSサーバーとcrontabをセットアップして、avahi-browseコマンドの出力を定期的に提供しますか?)

4
Circonflexe

Mdnsが.localまたは検索ドメインを追加しない理由は、mdnsにNXDOMAINまたは同様の概念がないためです。

したがって、mdnsがキャッシュで解決策を見つけられなかった場合は、マルチキャストクエリを送信し、何かが応答するかどうかを確認する必要があります。このタイムアウトは、「問題を引き起こす」のに十分な長さです。

以下は質問に答えませんが、いくつかの問題を解決するための可能な実装の推測です。

私が望むのは、nssチェーンの最後にドットを付けずにホスト名に.localを明示的に追加することです。例えば。

ホスト:ファイルmdns4_minimal [NOTFOUND = return] dns mdns_append

おそらく、「キャッシュのみ」のmdns解像度を指定することも可能です。おそらくこのようなnsswitchで

ホスト:ファイルmdns4_minimal [NOTFOUND = return] mdns_append_cacheonly dns mdns_append

Mdns_appendが.localを追加した場合と追加しない場合の両方を試すことを想定しています。

2
vontrapp

このオプションは実際にはほとんど役に立たないため、「推奨されません」と思われます。他のほとんどすべてのmDNS実装は.localドメインのみを使用するため、 DHCPから取得したドメインを検索しようとすると、ほとんどの場合、追加の遅延が発生するだけです。 セキュリティの問題 実際のmDNS仕様にも記載されています。

代わりに、nss-mdnsにパッチを適用して具体的に、resolvを使用する代わりに、ドットのない名前を検索する前に.localを追加することができます。 confドメイン。

2
user1686