私のmDNSリクエストをブロックする要素が何であるかをどうやって確認できますか?

私のmDNSリクエストをブロックする要素が何であるかをどうやって確認できますか?

これがその場合です。 avahi経由で複数のドメインを公開するホームサーバーがあります。

Avahiとresolvctlはクライアント(ubuntu 22)にインストールされます。

ファイルから/etc/nsswitch.conf- hosts: files mdns4_minimal [NOTFOUND=return] dns.これは正常に見えます。

しかし、

$ avahi-resolve -n whoami.homeserver.local
whoami.homeserver.local 192.168.0.4

しかし、PingやCurlでアドレスを解決しようとすると

$ curl whoami.homeserver.local
curl: (6) Could not resolve host: whoami.homeserver.local

UPD:面白いです。homeserver.localデフォルト名はpingによって正しく解決されました。

ベストアンサー1

mDNSを介して3つのタグ名を解決しようとしています。

通常、mdns4_minimal2つのタグ名のみが解析されます。

バラよりlibnss-mdnsパーサーライブラリのソースコード:

// If mdns_allow_file is NULL, then this implements the "local" SOA
// check and two-label name checks similarly to the algorithm
// described at https://support.apple.com/en-us/HT201275. This means
// that if a unicast DNS server claims authority on "local", or if the
// user tries to resolve a >2-label name, we will not do mDNS resolution.

言及されたAppleサポート文書はもう存在しませんが、archive.orgで見ることができます。

ここで言及されているのは、mdns_allow_fileビルド時間設定可能${sysconfdir}/mdns.allow(通常/etc/mdns.allow)を表します。このファイルが存在するかどうかをテストしますmdns4_minimal。存在する場合、より広いmDNSルックアップが許可されます。これがない場合、デフォルトでは<single_label>.localフォームの2つのラベル名のみがmDNSを介して照会されます。local.一般的なDNS SOAレコードが見つかると、検索もスキップされます。

mDNSが導入されたとき、多くの組織はすでに内部DNS階層を.localまたは.organization.local

mDNS 使用の割り当てに関する問題を最小限に抑えるために、妥協点に達しました。デフォルトでは、mDNSは、より広い使用のために特に有効にしない限り、終わる二重.localラベル名でのみ機能します。.localこれにより、3つ以上のタグで終わる名前を以前のように解決できますが、.localmDNS / Zeroconf / BonjourのためにmDNS / Zeroconf / Bonjourで終わる2つのタグ名が保持されます。.local

文書が整理されていないようですが、有益なコミットメッセージのサポートを追加:

バージョン0.5以降で利用可能なnss-mdns単純な設定ファイルがあります。このファイルには、改行で区切られた有効なドメインサフィックスが含まれています。 # で始まるコメントと同様に、空行は無視されます。ドメインサフィックスに関係なく、すべての名前に対してmDNSルックアップを有効にするには、次の行のみを追加します(バージョン<= 0.4の動作モードに似ています)。/etc/mdns.allow.local*nss-mdns

# /etc/mdns.allow
*

構成ファイルが存在しない、または読み取れない場合の動作は、次のnss-mdns内容を含む構成ファイルを読み取るのと同じです。

# /etc/mdns.allow
.local.
.local

つまり、で終わるホスト名だけが.localmDNSを介して解決されます。

構成ファイルが存在するが空の場合、mDNS 名検索は完全に無効になります。

読書名前がmDNSルックアップを許可するかどうかを決定する関数のソースコード/etc/mdns.allowelseファイルが存在しない場合(最も外側の if...then...elseセクションの分岐)にのみ、二重ラベル制限が適用されることを示します。明らかに、2ラベルヒューリスティックはmdns.allow論文が実装されてから10年後に追加されました。

したがって、3 つのラベルで構成される mDNS 名が機能し、他のすべての名前がそのまま機能するようにするには、次のコンテンツを含む/etc/mdns.allowファイルを生成する必要があります。

.local.
.local

おすすめ記事