DNS:「短い」クエリ(UDP)はアドレスを返しませんが、「長い」(ANY、TCP)クエリはアドレスを返します。

DNS:「短い」クエリ(UDP)はアドレスを返しませんが、「長い」(ANY、TCP)クエリはアドレスを返します。

これは仲間ですAsk Ubuntuこの質問をするのに十分なことを知る前に、この質問を投稿しました。

(Ubuntu 18.04基準です。)

デバッグ出力を観察することで、systemd-resolved次のようなクエリを実行できます。

host foo.mycompany.com

そして何が起こっているのかを確認してください。systemd-resolvedUDPを介したクエリは、私のローカルDNSサーバー(私のルーターにある)に延期されるということです。返された応答は、キャッシュエントリが生成されるように誘導しsystemdますNODATA

しかし、私がこうすれば:

host -a foo.mycompany.com

問合せがANY要求されると、デバッグ出力にはUDP応答パケットが切り捨てられ、TCP問合せに置き換えられることが明確に示されます。返されると、systemd明らかに有効な住所が表示されます。ポジティブキャッシュエントリ。

host -aリンクされた問題を確認できますが、結論は、ドメイン名を検索すると、一部のドメイン名だけが(しばらくの間)機能することです。

この動作の原因が何であるかわかりません。私はそれがそれ自体とは何の関係もないと思いますsystemd-resolved。なぜなら、それをバイパスして自分のコンピュータからルータDNSに直接移動すると、結果は同じです(もちろんデバッグトレースを見ることはできませんが)。私はいません。考える私のルーターは問題の一部でした。同僚も同じ効果を見ることができたからです(彼は私の家にいませんでした)。

ベストアンサー1

私の考えでは、いくつかの中間キャッシュサーバー(たとえば、私のホームルーターにあるサーバー)がRFC1918(「プライベート」)アドレスを返そうとしないことが何であるかを判断したようです。したがって、ほとんどのソフトウェア(ブラウザなど)で実行される短いクエリはこれらのキャッシュを利用しますが、サーバーは「見つかりません」と同じ結果を返します。したがって、ローカルサーバーはそれが正しいことだと思うので、エントリをsystemdキャッシュします。NODATA

中間サーバーはクエリをキャッシュしないため、ANYローカルサーバーは特権サーバーから応答を受け取ります。

またはそのようなもの。実際、これらのことがどのように機能するかを知っている人がこれをよりよく説明できる場合に備えて、この質問に対する回答を保留しています。

おすすめ記事