はじめに
このドキュメントでは、OpenDNS/Umbrellaリゾルバがリソースレコードをキャッシュする方法について説明します。
概要
OpenDNS/Umbrellaリゾルバは、OpenDNSCache (ODC)と呼ばれるプログラムを使用してDNSクエリを解決します。ODCは、より迅速かつ効率的に結果をクライアントに返すために、受信したデータをキャッシュします。この記事では、キャッシングの発生方法と使用時期に焦点を当てています。
この記事は、ODCキャッシングの詳細(通常はネームサーバとドメインの管理者)を知りたいユーザ、またはDNS解決が期待どおりに機能していない可能性がある場合を対象としています。
どのデータがキャッシュされますか。
RFC 2181(https://datatracker.ietf.org/doc/html/rfc2181)に従い、応答は応答として返されるか、データの信頼性に基づいてキャッシュに保存されます。RFCのセクション5.4.1では、次の7つの信頼レベルが定義されています。
- 接着データ以外のプライマリゾーンファイルのデータ。
- これは、権限のあるネームサーバにのみ適用され、OpenDNSリゾルバには適用されません
- 接着以外のゾーン転送からのデータ。
- これは、権限のあるネームサーバにのみ適用され、OpenDNSリゾルバには適用されません
- 正規の応答の応答セクションに含まれる正規のデータ。
- 権限のある回答の権限セクションからのデータ。
- プライマリゾーンからの接着、またはゾーン転送からの接着。
- これは、権限のあるネームサーバにのみ適用され、OpenDNSリゾルバには適用されません
- i)非正規の解答の解答セクションからのデータ、ii)正規の解答セクションからの非正規のデータ。
- i)は、リゾルバが返す値の例です。つまり、権限のないデータです。
- ii)については、通常、権威のある応答の応答セクションには権威のあるデータのみが含まれることに注意してください。 ただし、検索される名前がエイリアスの場合(10.1.1項を参照)、そのエイリアスを説明するレコードのみが必ず権限を持ちます。 クライアントは、他のレコードがサーバのキャッシュから来ていると想定できます。 正規の応答が必要な場合、クライアントはエイリアスに関連付けられた正規名を使用してクエリを再実行できます。
- i)権威のある回答からの追加情報、ii)権威のない回答の権威セクションからのデータ、iii)権威のない回答からの追加情報。
- これらはすべてOpenDNSCacheに適用されます
- これらのソースから受信したレコードは、クエリに結果を返すためにキャッシュに格納しないでください。
OpenDNSCacheは、信頼レベル3、4、および6の応答からのデータをキャッシュします。より良いまたは等しい信頼レベルを持つ新しいデータを受信した場合は、古いキャッシュエントリを置き換えます。
ただし、NSレコードの場合は例外です。NSレコードでは、より優れた信頼レベルを持つデータのみが置き換えられます。
データはどのようにキャッシュに追加または削除されますか。
期限切れのデータはキャッシュから削除されません。これがSmartCache機能の基礎であり、何らかの理由で機関に到達できない場合に、キャッシュから期限切れのリソースレコード(RR)を返します。
代わりに、各リゾルバのキャッシュは固定サイズであり、新しいRRがキャッシュに追加されると、最も古いRRが削除されます。これは、新しいエントリがキューに追加され、古いエントリをキューからバンピングするキューとして視覚化できます(コンピュータサイエンティストの場合、これは実際には循環の二重リンクリストとして実装されます)。
前述したように、DNS応答には、異なる信頼レベルを持つ複数のRRを含めることができ、それらのRRすべてが最初に要求されたデータとは限らないことに注意してください。したがって、応答を受信した後、キャッシュに追加するRRが複数ある場合があります。
前述したように、データの信頼レベルが既存のエントリよりも高い場合にのみ、キャッシュ内のNSレコードのエントリを置き換えるため、NSレコードはこの動作から除外されることに注意してください。これは、古い当局がまだ応答していて、自分自身を当局として返している場合に、親の接着剤の当局への変更を検出できることを確認するために行われます。