JP6529139B2 - Dnsサーバ装置、方法、及びプログラム - Google Patents
Dnsサーバ装置、方法、及びプログラム Download PDFInfo
- Publication number
- JP6529139B2 JP6529139B2 JP2017190424A JP2017190424A JP6529139B2 JP 6529139 B2 JP6529139 B2 JP 6529139B2 JP 2017190424 A JP2017190424 A JP 2017190424A JP 2017190424 A JP2017190424 A JP 2017190424A JP 6529139 B2 JP6529139 B2 JP 6529139B2
- Authority
- JP
- Japan
- Prior art keywords
- dns server
- response
- resource
- server device
- unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Description
DNSサーバ装置は、クライアント装置が送信した名前解決の依頼(DNSクエリ要求)に応じて、権威DNSサーバ装置群に含まれる権威DNSサーバ装置に名前解決のための問い合わせ(再帰DNSクエリ要求)を行う。この問い合わせに応じて、権威DNSサーバ装置群に含まれる権威DNSサーバ装置は、回答データ(再帰DNSクエリ応答)を送信する。権威DNSサーバ装置が送信した再帰DNSクエリ応答を受信したDNSサーバ装置は、受信した再帰DNSクエリ応答を一次キャッシュに記憶する。
その後、クライアント装置が、そのドメイン名と同じドメイン名を解決するためのDNSクエリ要求を送信した場合について説明する。DNSサーバ装置は、そのDNSクエリ要求を受信し、受信したDNSクエリ要求に含まれるドメイン名が、一次キャッシュに記憶されているか否かを判定する。DNSサーバ装置は、DNSクエリ要求に含まれるドメイン名が、一次キャッシュに記憶されている場合、その一次キャッシュに、そのドメイン名と関連付けて記憶されているDNSクエリ応答を作成し、作成したDNSクエリ応答を、クライアント装置へ送信する。これによって、名前管理システムの処理負荷を低減することができる。
ここで、名前管理システムにおいて、ドメイン名の名前を解決できない場合には、そのドメイン名を、名前を解決できないドメイン名として、DNSサーバ装置の一次キャッシュに記憶する。そして、DNSサーバ装置は、他のDNSクエリ要求を受信した場合に、一次キャッシュを参照して、そのDNSクエリ要求に含まれるドメイン名が、名前を解決できないドメイン名と同一である場合には、名前を解決できないことを示す情報を返送する。このようにすることで、DNSサーバ装置が、権威DNSサーバ装置へ、名前を解決できないドメイン名の名前を解決するための問い合わせを行うことによる名前管理システムの負荷が生じないようにできる。
本発明は、上記問題を解決すべくなされたもので、クライアント装置からDNSサーバ装置への名前解決問い合わせに対して、名前解決ができないことを低減することを第1の目的とする。
また、DNSサーバ装置への過剰な負荷を下げ、多数のユーザのサービスに悪影響を与えないようにすることを第2の目的とする。
(2)本発明の一態様は、上記(1)に記載のDNSサーバ装置において、前記二次キャッシュは、前記一次キャッシュがキャッシュする時間よりも長い時間、前記ポジティブキャッシュを記憶する、DNSサーバ装置である。
(3)本発明の一態様は、上記(1)又は上記(2)に記載のDNSサーバ装置において、前記資源の有効生存期間として、前記権威DNSサーバ装置で設定された有効生存期間と、前記二次キャッシュで設定された有効生存期間とのうち、短い有効生存期間を、前記クライアント装置に応答する応答部をさらに備える、DNSサーバ装置である。
(4)本発明の一態様は、上記(1)から上記(3)のいずれか一項に記載のDNSサーバ装置において、前記要求部は、前記資源の前記問い合わせに対して、前記権威DNSサーバ装置からの応答がない場合に、前記二次キャッシュへ、前記資源を問い合わせる、DNSサーバ装置である。
(5)本発明の一態様は、上記(1)から上記(4)のいずれか一項に記載のDNSサーバ装置において、前記要求部は、前記資源の前記問い合わせを行っている間に、前記DNSクエリ要求に含まれる名前、タイプ、クラスと、複数の前記クライアント装置の各々が送信したDNSクエリ要求に含まれる名前、タイプ、クラスとが一致する場合に、前記資源を、前記二次キャッシュから取得する、DNSサーバ装置である。
(6)本発明の一態様は、上記(1)から上記(5)のいずれか一項に記載のDNSサーバ装置において、前記権威DNSサーバ装置が送信した応答又は無応答であることに基づいて、クライアント装置が新たに送信したDNSクエリ要求に対して、前記権威DNSサーバ装置へ、資源を問い合わせるか否かを判定する判定部を備える、DNSサーバ装置である。
(7)本発明の一態様は、クライアント装置と、権威DNSサーバ装置との間に設けられたDNSサーバ装置が実行する方法であって、前記DNSサーバ装置は、前記クライアント装置が送信したDNSクエリ要求に基づき、前記権威DNSサーバ装置へ名前を問い合わせた結果を記憶する一次キャッシュと、前記一次キャッシュに記憶された前記問い合わせた結果のうち、名前を解決できる情報であるポジティブキャッシュを記憶する二次キャッシュとを備え、前記DNSサーバ装置が実行する方法は、前記クライアント装置が送信したDNSクエリ要求に基づき、前記権威DNSサーバ装置へ、資源を問い合わせるステップと、前記資源の前記問い合わせに対して、前記権威DNSサーバ装置が送信した応答又は無応答であることに基づき名前を解決できないことを示す場合に、二次キャッシュへ、前記資源を問い合わせるステップとを有する、方法である。
(8)本発明の一態様は、クライアント装置と、権威DNSサーバ装置との間に設けられ、前記クライアント装置が送信したDNSクエリ要求に基づき、前記権威DNSサーバ装置へ名前を問い合わせた結果を記憶する一次キャッシュと、前記一次キャッシュに記憶された前記問い合わせた結果のうち、名前を解決できる情報であるポジティブキャッシュを記憶する二次キャッシュとを備えたDNSサーバ装置のコンピュータに、前記クライアント装置が送信したDNSクエリ要求に基づき、前記権威DNSサーバ装置へ、資源を問い合わせるステップと、前記資源の前記問い合わせに対して、前記権威DNSサーバ装置が送信した応答又は無応答であることに基づき名前を解決できないことを示す場合に、前記二次キャッシュへ、前記資源を問い合わせるステップとを実行させる、プログラムである。
また、DNSサーバ装置への過剰な負荷を下げ、多数のユーザのサービスに悪影響を与えないようにすることができる。
なお、実施形態を説明するための全図において、同一の機能を有するものは同一符号を用い、繰り返しの説明は省略する。
また、本願でいう「XXに基づく」とは、「少なくともXXに基づく」ことを意味し、XXに加えて別の要素に基づく場合も含む。また、「XXに基づく」とは、XXを直接に用いる場合に限定されず、XXに対して演算や加工が行われたものに基づく場合も含む。「XX」は、任意の要素(例えば、任意の情報)である。
(通信システム)
図1は、本実施形態に係る通信システムの一例を示す図である。通信システム1は、端末装置100−1、端末装置100−2、・・・、端末装置100−N(Nは、N>0の整数)と、名前管理システム(DNS:Domain Name System)サーバ装置200と、権威DNSサーバ装置300とを備える。端末装置100−1、端末装置100−2、・・・、端末装置100−Nと、DNSサーバ装置200と、権威DNSサーバ装置300とは、インターネットなどのネットワーク50を介して接続される。
以下、端末装置100−1、端末装置100−2、・・・、端末装置100−Nのうち、任意の端末装置を、端末装置100と記載する。
端末装置100は、ユーザが利用するクライアント装置である。例えば、端末装置100は、ユーザによってドメイン名を示す情報が入力された場合に、入力されたドメイン名を示す情報を含み、そのドメイン名に対応するIPアドレスなどの資源を問い合わせる情報であるDNSクエリ要求を作成し、作成したDNSクエリ要求を、DNSサーバ装置200へ送信する。
DNSサーバ装置200は、端末装置100が送信したDNSクエリ要求を受信し、受信したDNSクエリ要求に含まれるドメイン名、type、クラスなどを示す情報を取得する。DNSサーバ装置200は、ドメイン名、type、クラスなどを示す情報と資源を示す情報とを関連付けて、一次キャッシュメモリに記憶している。DNSサーバ装置200は、取得したドメイン名を示す情報に関連付けて資源を示す情報が一次キャッシュメモリに記憶されているか否かを判定する。一次キャッシュメモリに、取得したドメイン名を示す情報に関連付けて、資源を示す情報が記憶されていない場合、DNSサーバ装置200は、再帰DNSクエリ要求を作成する。DNSサーバ装置200は、作成した再帰DNSクエリ要求を、権威DNSサーバ装置300へ送信する。
権威DNSサーバ装置300は、例えば、ドメイン名を示す情報と資源を示す情報とを関連付けた変換表(リソースレコードファイル)を管理している。
権威DNSサーバ装置300は、DNSサーバ装置200が送信した再帰DNSクエリ要求を受信し、受信した再帰DNSクエリ要求に含まれるドメイン名を示す情報に関連付けて記憶されている資源を示す情報を、リソースレコードファイルを検索することによって取得する。権威DNSサーバ装置300は、検索結果を含む再帰DNSクエリ応答を、DNSサーバ装置200へ送信する。ここで、検索結果には、ドメイン名に関連付けて記憶されている資源を示す情報、又はドメイン名の名前を解決できないことを示す情報が含まれる。
具体的には、DNSサーバ装置200は、受信した再帰DNSクエリ応答に、ドメイン名に関連付けて記憶されている資源を示す情報が含まれる場合には、そのドメイン名を示す情報と、その資源を示す情報とを関連付けて、一次キャッシュメモリに記憶する。また、DNSサーバ装置200は、再帰DNSクエリ応答に、ドメイン名の名前を解決できないことを示す情報が含まれる場合には、ドメイン名を示す情報と、そのドメイン名の名前を解決できないことを示す情報とを関連付けて、一次キャッシュメモリに記憶する。
また、DNSサーバ装置200は、例えば、ドメイン名を示す情報と資源を示す情報とを対応付けた変換表(リソースレコード)がキャッシュされた二次キャッシュメモリを備える。
DNSサーバ装置200は、一次キャッシュメモリにキャッシュした情報に基づいて、二次キャッシュメモリに記憶される情報を更新する。具体的には、DNSサーバ装置200は、一次キャッシュメモリを更新する際にキャッシュした情報のうち、ポジティブキャッシュを記憶する。ここで、ポジティブキャッシュとは、再帰DNSクエリ応答に、ドメイン名に関連付けられた資源を示す情報が含まれる場合に、一次キャッシュメモリに記憶されるそのドメイン名を示す情報と、その資源を示す情報とを関連付けた情報の内、名前解決が出来る情報である。DNSサーバ装置200は、ポジティブキャッシュを記憶する際に、二次キャッシュ特有のTTLを設定する。TTLについては、後述する。
DNSサーバ装置200は、端末装置100へ、DNSクエリ要求に対するDNSクエリ応答を送信する。DNSクエリ応答には、ドメイン名に関連付けられている資源を示す情報、及びドメイン名の名前を解決できないことを示す情報のいずれかが含まれる。
端末装置100は、DNSサーバ装置200が送信したDNSクエリ応答を受信する。端末装置100は、受信したDNSクエリ応答に含まれる情報に基づいて、資源を示す情報が含まれる場合には、その資源を示す情報に基づいて、サーバ装置(図示なし)と通信を行う。また、端末装置100は、受信したDNSクエリ応答に、ドメイン名の名前を解決できないことを示す情報が含まれる場合には、ドメイン名の名前を解決できないことを表した文字情報又は画像を表示する。
図2は、本実施形態に係る通信システムを構成する端末装置、DNSサーバ装置、権威DNSサーバ装置の一例を示す図である。以下、端末装置100、DNSサーバ装置200、権威DNSサーバ装置300について順次説明する。
(端末装置)
端末装置100は、通信部110と、記憶部120と、情報処理部130と、操作部140と、表示部160と、前記各構成要素を図2に示されているように電気的に接続するためのアドレスバスやデータバス等のバスライン150とを備える。
通信部110は、通信モジュールによって実現される。通信部110は、ネットワーク50を経由して、DNSサーバ装置200などの他の装置と通信を行う。通信部110は、DNSサーバ装置200へ、情報処理部130が出力したDNSクエリ要求を送信する。また、通信部110は、DNSサーバ装置200が送信したDNSクエリ応答を受信し、受信したDNSクエリ応答を、情報処理部130へ出力する。
記憶部120は、例えば、RAM(Random Access Memory)、ROM(Read Only Memory)、HDD(Hard Disk Drive)、フラッシュメモリ、またはこれらのうち複数が組み合わされたハイブリッド型記憶装置などにより実現される。記憶部120には、情報処理部130により実行されるプログラム122が記憶される。
情報処理部130の全部または一部は、例えば、CPU(Central Processing Unit)などのプロセッサが記憶部120に格納されたプログラム122を実行することにより実現される機能部(以下、ソフトウェア機能部と称する)である。なお、情報処理部130の全部または一部は、LSI(Large Scale Integration)、ASIC(Application Specific Integrated Circuit)、またはFPGA(Field-Programmable Gate Array)などのハードウェアにより実現されてもよく、ソフトウェア機能部とハードウェアとの組み合わせによって実現されてもよい。
情報処理部130は、例えば、処理部132と、作成部134とを備える。
処理部132は、ユーザが操作部140を操作することによってドメイン名を示す情報を入力した場合に、操作部140が出力するドメイン名を示す情報を取得する。操作部140は、取得したドメイン名を示す情報を、作成部134へ出力する。
また、処理部132は、通信部110が出力したDNSクエリ応答を取得し、取得したDNSクエリ応答に含まれる情報に基づいて、処理を行う。具体的には、処理部132は、取得したDNSクエリ応答に、資源を示す情報が含まれる場合には、その資源を示す情報に基づいて、サーバ装置(図示なし)へアクセスする。一方、処理部132は、取得したDNSクエリ応答に、ドメイン名の名前を解決できないことを示す情報が含まれる場合には、ドメイン名の名前を解決できないことを表す文字情報又は画像を作成し、作成した文字情報又は画像を、表示部160に出力する。
また、作成部134は、処理部132が出力したドメイン名を示す情報を含むDNSクエリ要求を作成する。作成部134は、作成したDNSクエリ要求を、通信部110へ出力する。
操作部140は、例えば、タッチパネルなどによって構成され、表示部160に表示される画面に対するタッチ操作を検出し、タッチ操作の検出結果を、情報処理部130へ出力する。タッチ操作には、ドメイン名を入力する操作などが含まれる。
表示部160は、処理部132が出力した文字情報又は画像を表示する。
DNSサーバ装置200は、通信部210と、記憶部220と、情報処理部230と、前記各構成要素を図2に示されているように電気的に接続するためのアドレスバスやデータバス等のバスライン250とを備える。
通信部210は、通信モジュールによって実現される。通信部210は、ネットワーク50を経由して、端末装置100、権威DNSサーバ装置300などの他の装置と通信を行う。
通信部210は、端末装置100が送信したDNSクエリ要求を受信し、受信したDNSクエリ要求を、情報処理部230へ出力する。通信部210は、情報処理部230が出力した再帰DNSクエリ要求を取得し、取得した再帰DNSクエリ要求を、権威DNSサーバ装置300へ、送信する。通信部210は、権威DNSサーバ装置300が送信した再帰DNSクエリ応答を受信し、受信した再帰DNSクエリ応答を、情報処理部230へ出力する。通信部210は、情報処理部230が出力したDNSクエリ応答を取得し、取得したDNSクエリ応答を、端末装置100へ、送信する。
記憶部220は、例えば、RAM、ROM、HDD、フラッシュメモリ、またはこれらのうち複数が組み合わされたハイブリッド型記憶装置などにより実現される。記憶部220には、情報処理部230により実行されるプログラム222が記憶される。
情報処理部230は、例えば、処理部232と、要求部234と、更新部236と、応答部238と、一次キャッシュメモリ240と、二次キャッシュメモリ242とを備える。
一次キャッシュメモリ240は、端末装置100が送信したDNSクエリ要求に基づいて、権威DNSサーバ装置300へ、ドメイン名の名前を解決することを問い合わせた結果を記憶する。具体的には、一次キャッシュメモリ240は、権威DNSサーバ装置300が記憶するリソースレコードの少なくとも一部の情報を記憶する。
図3は、リソースレコードに記憶される情報の一例を示す図である。リソースレコードは、図3に示すように、ドメイン名と、Rデータ、タイプ(Type)、クラス、TTLなどの資源とを関連付けて記憶する。
「ドメイン名」は、リソースレコードを定義しているドメイン名などのNAMEを示す情報である。「ドメイン名」は、端末装置100によって、名前の解決が要求されたドメイン名を示す。
「Rデータ」は、リソースレコードの資源の場所などを示す。「Rデータ」は、「ドメイン名」に該当する場所を示す。
「Type」は、リソースレコードのタイプを示す。具体的には、タイプには、A、AAAA、NS、CNAME,SOA、PTR、HINFO、MINFO、MX、TXTなどが含まれる。
「クラス」は、リソースレコードのクラスを示す。具体的には、クラスには、インターネット用を表す「1」が含まれる。
「TTL(Time to live)」は、一次キャッシュメモリ240に記憶される情報の有効生存期間を示す。「TTL」は、権威DNSサーバ装置300によって設定される。
図3に示される例では、ドメイン名「www.AAA.co.jp」と、Rデータ「192.0.2.1」と、Type「1」と、クラス「1」と、TTL「1980」とが関連付けて記憶されている。
二次キャッシュメモリ242は、権威DNSサーバ装置300がドメイン名の名前を解決できた場合に、その権威DNSサーバ装置300が送信する再帰DNSクエリ応答に含まれるドメイン名と、資源を示す情報との組み合わせを記憶する。二次キャッシュメモリ242は、権威DNSサーバ装置300がドメイン名の名前を解決できなかった場合に、その権威DNSサーバ装置300が送信する再帰DNSクエリ応答に含まれるドメイン名と、ドメイン名の名前を解決できないことを示す情報との組み合わせ(ネガティブキャッシュ)は記憶しない。
また、二次キャッシュメモリ242は、一次キャッシュメモリ240がキャッシュする時間よりも長い時間、ポジティブキャッシュを記憶する。
また、二次キャッシュメモリ242は、記憶している情報を、TTLが満了しても消去しない。ここで、TTLは、二次キャッシュ特有のTTLである。ここで、二次キャッシュメモリ242のTTLは、クライアントが二次キャッシュの情報を長期間保持し続けないようにするため、五分等の短時間を設定する運用を想定する。二次キャッシュメモリ242は、記憶しているドメイン名と、資源を示す情報との関連付けの数が、予め設定されるキャッシュ数閾値を超える場合には、更新された時刻が古いものから消去する。
また、二次キャッシュメモリ242に記憶される情報は、DNSサーバ装置200がリスタートした際に消去してもよいし、リスタートしても消去されないようにしてもよい。
さらに、二次キャッシュメモリ242に記憶される情報は、他のDNSサーバ装置によって参照できるようにされる。このようにすることによって、他のDNSサーバ装置が送信したDNSクエリ要求を処理することができるとともに、二次キャッシュメモリ242を、他のDNSサーバ装置と共用できる。DNSサーバ装置200は、キャッシュヒット率によって性能が大きく異なる。ここで、DNSサーバ装置200を起動した際に、他のDNSサーバ装置との間で共用した二次キャッシュメモリ242から、一次キャッシュメモリ240に記憶する情報を生成するようにしてもよい。このように構成することによって、DNSサーバ装置を起動した直後からキャッシュヒット率が高くすることができる。
処理部232は、取得した資源を示す情報を含むDNSクエリ応答を作成し、作成したDNSクエリ応答を応答部238に出力し、応答部238は、通信部210へ出力する。
一方、処理部232は、取得したドメイン名を示す情報と関連付けて、一次キャッシュメモリ240にドメイン名の名前を解決できないことを示す情報が記憶されている場合には、一次キャッシュメモリ240からドメイン名の名前を解決できないとする情報を取得し、ドメイン名の名前を解決できないとするDNSクエリ応答を作成し、作成したDNSクエリ応答を応答部238に出力し、応答部238は通信部210へ出力する。
また、処理部232は、取得したドメイン名を示す情報に関連付けて資源を示す情報が一次キャッシュメモリ240に記憶されていない場合には、要求部234にDNSクエリ要求を出力し、要求部234は再帰DNSクエリ要求を作成し、通信部210へ出力する。
また、要求部234が作成した再帰DNSクエリ要求を通信部210へ出力してから時間閾値によって示される時間が経過する以前に、処理部232が、通信部210が出力した再帰DNSクエリ応答を取得した場合、処理部232は、取得した再帰DNSクエリ応答を、更新部236へ出力する。また再帰DNSクエリ応答からDNSクエリ応答を作成し、応答部238とへ出力する。
一方、処理部232は、要求部234が作成した再帰DNSクエリ要求を通信部210へ出力してから時間閾値が経過したことを示す情報を取得した場合、そのDNSクエリ要求に含まれるドメイン名を示す情報に関連付けて資源を示す情報が二次キャッシュメモリ242に記憶されているか否かを判定する。
処理部232は、そのDNSクエリ要求に含まれるドメイン名に関連付けて資源を示す情報が二次キャッシュメモリ242に記憶されている場合には、そのドメイン名を示す情報に関連付けて記憶されている資源を示す情報を、二次キャッシュメモリ242から取得する。処理部232は、取得した資源を示す情報を含むDNSクエリ応答を作成し、作成したDNSクエリ応答を、応答部238に出力し、応答部238は通信部210へ出力する。
一方、処理部232は、取得したドメイン名を示す情報に関連付けて資源を示す情報が、二次キャッシュメモリ242に記憶されていない場合には、ドメイン名の名前を解決できないことを示す情報を含むDNSクエリ応答を作成し、作成したDNSクエリ応答を、応答部238に出力し、応答部238は通信部210へ出力する。通信部210は、DNSクエリ要求を送信した端末装置100へDNSクエリ応答を送
信する。
また、更新部236は、一次キャッシュメモリ240を更新する際に記憶した情報に基づいて、二次キャッシュメモリ242を更新する。一次キャッシュメモリ240を更新する際に記憶した情報に基づいて、二次キャッシュメモリ242を更新することによって、一次キャッシュメモリ240に記憶される情報と、二次キャッシュメモリ242に記憶される情報とを同期させる。具体的には、更新部236は、一次キャッシュメモリ240を更新する際に記憶した情報のうち、ドメイン名と、資源を示す情報との組み合わせを、二次キャッシュメモリ242に記憶することによって更新する。更新部236は、二次キャッシュメモリ242に関連付けて記憶されるドメイン名と、Rデータと、Typeと、クラスと、TTLとのうち、TTLについては、権威DNSサーバ装置300が設定したTTLと、DNSサーバ装置200が設定した二次キャッシュ特有のTTLを、両方保持する。そして、端末装置100へ通知する資源を示す情報として、そのTTLよりも短い時間が通知される。これによって、仮に、端末装置100に、ドメイン名を示す情報と、資源を示す情報とが通知された場合に、そのドメイン名を示す情報と、その資源を示す情報とが、端末装置100に、長い期間キャッシュされないようにできる。これは、二次キャッシュメモリ242に記憶される情報は、ドメイン名の名前が解決できないことを低減するためのものであり、最新の情報でないおそれがある。このため、二次キャッシュメモリ242に記憶された資源を示す情報に関連付けて記憶されるTTLは、本来のTTLと、そのTTLよりも短い時間とする。これによって、二次キャッシュメモリ242に記憶された情報を取得した端末装置100は、同じドメイン名を示す情報が入力された場合に、TTLが満了している場合には、DNSサーバ装置200に、そのドメイン名の名前を解決することを問い合わせることができるため、最新の情報を取得する機会を増加させることができる。また、本来のTTLと、そのTTLよりも短い時間とが記憶されることによって、本来のTTLが分からなくなってしまうことを避けることができる。
更新部236は、ドメイン名と、そのドメイン名の名前を解決できないことを示す情報とについては、二次キャッシュメモリ242に記憶しない。これにより、二次キャッシュのメモリ量を節約する。
権威DNSサーバ装置300は、通信部310と、記憶部320と、情報処理部330と、前記各構成要素を図2に示されているように電気的に接続するためのアドレスバスやデータバス等のバスライン350とを備える。
通信部310は、通信モジュールによって実現される。通信部310は、ネットワーク50を経由して、DNSサーバ装置200と通信を行う。通信部310は、DNSサーバ装置200が送信した再帰DNSクエリ要求を受信し、受信した再帰DNSクエリ要求を、情報処理部330へ出力する。通信部310は、情報処理部330が出力した再帰DNSクエリ応答を、DNSサーバ装置200へ送信する。
記憶部320は、例えば、RAM、ROM、HDD、フラッシュメモリ、またはこれらのうち複数が組み合わされたハイブリッド型記憶装置などにより実現される。記憶部320は、情報処理部330が実行するプログラム322と、リソースレコードファイル324とを記憶する。リソースレコードファイル324は、ドメイン名を示す情報と資源を示す情報とを関連付けた変換表である。リソースレコードファイル324の一例については、図3に示される。リソースレコードファイル324は、図3に示すように、ドメイン名と、Rデータ、Type、クラス、TTLなどの資源とを関連付けて記憶する。
情報処理部330は、例えば、処理部332を備える。
処理部332は、通信部310が出力した再帰DNSクエリ要求を取得し、取得した再帰DNSクエリ要求に含まれるドメイン名を示す情報を取得する。処理部332は、取得したドメイン名を示す情報に関連付けて資源を示す情報がリソースレコードファイル324に記憶されているか否かを判定する。
具体的には、処理部332は、再帰DNSクエリ要求に含まれるQNAME、QTYPEなどのドメイン名を示す情報に一致する資源を示す情報(リソースレコード)を検索する。処理部332は、そのドメイン名を示す情報に一致するリソースレコードがリソースレコードファイル324に記憶されている場合には、そのドメイン名を示す情報に関連付けて記憶されているリソースレコードを、リソースレコードファイル324から取得する。
処理部332は、取得したリソースレコードを含む再帰DNSクエリ応答を作成し、作成した再帰DNSクエリ応答を、通信部310へ出力する。例えば、QTYPEがAレコードの場合には、ドメイン名に関連付けて記憶されているIPアドレス(IPv4)を問い合わせることを意味する。この場合、処理部332は、再帰DNAクエリ要求に含まれるQNAME(ドメイン名)、TYPE、クラスをコピーし、これに続けて、TTL、レングス、IPアドレス(v4)などを含む再帰DNS応答を作成する。
一方、処理部332は、取得したドメイン名を示す情報に関連付けてリソースレコードがリソースレコードファイル324に記憶されていない場合には、ドメイン名を示す情報と、ドメイン名の名前を解決できないことを示す情報とを含む再帰DNSクエリ応答を作成し、作成した再帰DNSクエリ応答を、通信部310へ出力する。
図4−図7を参照して、本実施形態に係る通信システム1の動作について説明する。
(通信システムの動作の一例(その1))
図4は、本実施形態に係る通信システムの動作の一例(その1)を示すシーケンスチャートである。
(ステップS101) 端末装置100の処理部132は、ユーザが操作部140を操作することによってドメイン名を示す情報を入力した場合に、操作部140が出力するドメイン名を示す情報を取得し、取得したドメイン名を示す情報を、作成部134へ出力する。ここで、ユーザが操作部140を操作することなく、ドメイン名を示す情報が、作成部134へ出力されてもよい。
作成部134は、処理部132が出力したドメイン名を示す情報を取得し、取得したドメイン名を示す情報を含み、そのドメイン名を示す情報に関連付けて記憶されている資源を示す情報を問い合わせる情報であるDNSクエリ要求を作成する。作成部134は、作成したDNSクエリ要求を、通信部110へ出力する。通信部110は、作成部134が出力したDNSクエリ要求を、DNSサーバ装置200へ送信する。
(ステップS102) DNSサーバ装置200の通信部210は、端末装置100が送信したDNSクエリ要求を受信し、受信したDNSクエリ要求を、情報処理部230へ出力する。
情報処理部230の処理部232は、通信部210が出力したDNSクエリ要求を取得する。処理部232は、取得したDNSクエリ要求に含まれるドメイン名を示す情報を取得し、取得したドメイン名を示す情報に関連付けて資源を示す情報が一次キャッシュメモリ240に記憶されているか否かを判定する。ここでは、一次キャッシュメモリ240に、取得したドメイン名を示す情報に関連付けて、資源を示す情報が記憶されていない場合について説明を続ける。
(ステップS103) 処理部232は、取得したDNSクエリ要求を、要求部234へ出力する。
要求部234は、再帰DNSクエリ要求を作成する。要求部234は、作成した再帰DNSクエリ要求を通信部210へ出力する。通信部210は、要求部234が出力した再帰DNSクエリ要求を、権威DNSサーバ装置300へ送信する。
情報処理部330の処理部332は、通信部310が出力した再帰DNSクエリ要求を取得する。処理部332は、取得した再帰DNSクエリ要求に含まれるドメイン名を示す情報に関連付けられる資源を示す情報が、リソースレコードファイル324に記憶されているか否かを判定する。
(ステップS105) 処理部332は、そのドメイン名を示す情報に関連付けて記憶されている資源を示す情報を含む再帰DNSクエリ応答又は名前を解決できないことを示す情報を含む再帰DNSクエリ応答を作成する。処理部332は、作成した再帰DNSクエリ応答を、通信部310へ出力する。
(ステップS106) 権威DNSサーバ装置300の通信部310は、処理部332が出力した再帰DNSクエリ応答を、DNSサーバ装置200へ送信する。
(ステップS107) DNSサーバ装置200の通信部210は、権威DNSサーバ装置300が送信した再帰DNSクエリ応答を受信し、受信した再帰DNSクエリ応答を、処理部232へ出力する。
処理部232は、通信部210が出力した再帰DNSクエリ応答を、更新部236と、応答部238とへ出力する。更新部236は、処理部232が出力した再帰DNSクエリ応答を取得し、取得した再帰DNSクエリ応答が不正応答に該当するか否かを判定する。ここで、不正応答とは、フォーマットエラー、再帰クエリに紐付かない応答などである。
(ステップS108) 更新部236は、不正応答に該当しないと判定した場合、その再帰DNSクエリ応答に含まれる情報に基づいて、一次キャッシュメモリ240を更新する。
更新部236は、再帰DNSクエリ応答に含まれるドメイン名と、資源を示す情報とを関連付けて、一次キャッシュメモリ240に記憶することによって更新する。
(ステップS110) DNSサーバ装置200の更新部236は、再帰DNSクエリ応答がポジティブ応答であるか否かを判定する。ここで、ポジティブ応答とは、ドメイン名に関連付けて資源が記憶されている再帰DNSクエリ応答をいう。なお、更新部236は再帰DNSクエリ応答がポジティブ応答でないと判定した場合、処理を終了する。
(ステップS111) DNSサーバ装置200の更新部236は、再帰DNSクエリ応答がポジティブ応答であると判定した場合、一次キャッシュメモリ240に記憶した情報に基づいて、二次キャッシュメモリ242を更新する。更新部236は、一次キャッシュメモリ240を更新する際に記憶した情報のうち、ドメイン名と、資源を示す情報との組み合わせを、二次キャッシュメモリ242に記憶することによって更新する。更新部236は、二次キャッシュメモリ242に関連付けて記憶されるドメイン名と、IPアドレスと、Typeと、クラスと、TTLと、更新日時とのうち、TTLについては、権威DNSサーバ装置300が設定したTTLと、DNSサーバ装置200が設定した二次キャッシュ特有のTTLを、両方保持する。
(ステップS112) 更新部236はステップS107で不正応答に該当すると判定した場合、再帰DNSクエリ応答を破棄する。
図4に示されるシーケンスチャートにおいて、ステップS108と、ステップS109の処理の順序は、逆であってもよい。
図4に示されるシーケンスチャートによれば、ステップS107で不正応答にあたる再帰DNSクエリ応答を一次キャッシュから除外することが可能になる。また、ステップS110により、更に、ポジティブ応答のみ二次キャッシュで保持し、かつ、権威DNSサーバ装置300が設定したTTLと、DNSサーバ装置200が設定した二次キャッシュ特有のTTLを、両方保持することにより、一次キャッシュと異なる機能を有する二次キャッシュのサービス提供が可能になるという効果がある。
図5は、本実施形態に係る通信システムの動作の一例(その2)を示すシーケンスチャートである。
(ステップS201) 端末装置100の処理部132は、ユーザが操作部140を操作することによってドメイン名を示す情報を入力した場合に、操作部140が出力するドメイン名を示す情報を取得し、取得したドメイン名を示す情報を、作成部134へ出力する。ここで、ユーザが操作部140を操作することなく、ドメイン名を示す情報が、作成部134へ出力されてもよい。
作成部134は、処理部132が出力したドメイン名を示す情報を取得し、取得したドメイン名を示す情報を含み、そのドメイン名を示す情報に関連付けて記憶されている資源を示す情報を問い合わせる情報であるDNSクエリ要求を作成する。作成部134は、作成したDNSクエリ要求を、通信部110へ出力する。通信部110は、作成部134が出力したDNSクエリ要求を、DNSサーバ装置200へ送信する。
(ステップS202) DNSサーバ装置200の通信部210は、端末装置100が送信したDNSクエリ要求を受信し、受信したDNSクエリ要求を、処理部232へ出力する。
処理部232は、取得したDNSクエリ要求に含まれるドメイン名を示す情報を取得し、取得したドメイン名を示す情報に関連付けて資源を示す情報が記憶されているか否かを、一次キャッシュメモリ240に記憶されている情報を検索することによって判定する。ここでは、ドメイン名を示す情報に関連付けて資源を示す情報が、一次キャッシュメモリ240に記憶されていない場合について説明を続ける。
要求部234は、再帰DNSクエリ要求を作成する。要求部234は、作成した再帰DNSクエリ要求を通信部210へ出力する。通信部210は、要求部234が出力した再帰DNSクエリ要求を、権威DNSサーバ装置300へ送信する。ここで、権威DNSサーバ装置300は、ダウンなどの原因によって、再帰DNSクエリ応答を送信しない。
(ステップS204) DNSサーバ装置200の処理部232は、要求部234が再帰DNSクエリ要求を通信部210へ出力してから時間閾値によって示される時間が経過しても、通信部210から再帰DNSクエリ応答が出力されない場合に、そのDNSクエリ要求に含まれるドメイン名を示す情報に関連付けて資源を示す情報を、二次キャッシュメモリ242から検索する。
(ステップS205) 処理部232は、そのDNSクエリ要求に含まれるドメイン名を示す情報に関連付けて資源を示す情報が二次キャッシュメモリ242に記憶されているか否かを判定する。
(ステップS206) 処理部232は、DNSクエリ応答に含まれるドメイン名を示す情報に関連付けて資源を示す情報が、二次キャッシュメモリ242に記憶されている場合には、そのドメイン名を示す情報に関連付けて記憶されている資源を示す情報を、二次キャッシュメモリ242から取得する。処理部232は、DNSサーバ装置200が設定した二次キャッシュ特有のTTLを参照する。
(ステップS207) 処理部232は、参照した二次キャッシュ特有のTTLが、権威DNSサーバ装置300が設定したTTLより短いか否かを判定する。
(ステップS208) 参照した二次キャッシュ特有のTTLが、権威DNSサーバ装置300が設定したTTLより短い場合、処理部232は、取得した資源を示す情報と二次キャッシュ特有のTTLに基づくDNSクエリ応答を作成し、作成したDNSクエリ応答を、応答部238に出力し、応答部238は通信部210へ出力する。通信部210は、処理部232が出力したDNSクエリ応答を、端末装置100へ送信する。
(ステップS209) 参照したTTLが、権威DNSサーバ装置300が設定したTTLより長い場合、処理部232は、取得した資源を示す情報と権威DNSサーバ装置300が設定したTTLとを含むDNSクエリ応答を作成し、作成したDNSクエリ応答を、応答部238に出力し、応答部238は通信部210へ出力する。通信部210は、処理部232が出力したDNSクエリ応答を、端末装置100へ送信する。
(ステップS210) 処理部232は、DNSクエリ要求に含まれるドメイン名を示す情報に関連付けて資源を示す情報が、二次キャッシュメモリ242に記憶されていない場合には、ダミー応答を返すべきか否かを判定する。判定基準は任意に設定できる。一例として、MTAがMXレコードの名前を解決しようとした場合には、ダミー応答を返すべきでないと判定する。
(ステップS211) 処理部232は、ダミー応答を返すべきでないと判定した場合、DNSクエリ応答を破棄する。
(ステップS212) 処理部232は、ダミー応答を返すべきと判定した場合、ダミー応答を参照する。端末装置100からの無駄な再送を抑止する観点から、有効なダミー応答が選択される。
(ステップS213) 処理部232は、選択した内容のダミー応答を作成し、作成したダミー応答を、DNSクエリ応答として、応答部238に出力し、応答部238は通信部210へ出力する。通信部210は、処理部232が出力したダミー応答を、端末装置100へ送信する。
図5に示されるシーケンスチャートのステップS202において、処理部232は、取得したドメイン名を示す情報に関連付けて資源を示す情報が、一次キャッシュメモリ240に記憶されている場合には、そのドメイン名を示す情報に関連付けて記憶されている資源を示す情報を、一次キャッシュメモリ240から取得する。処理部232は、取得した資源を示す情報を含むDNSクエリ応答を作成し、作成したDNSクエリ応答を、応答部238に出力し、応答部238は通信部210へ出力する。通信部210は、処理部232が出力したDNSクエリ応答を、端末装置100へ送信する。
図6は、本実施形態に係る通信システムの動作の一例(その3)を示すシーケンスチャートである。
ステップS501−S503は、図5を参照して説明したステップS201−S202を適用できる。端末装置100が複数となる以外、同様である。
(ステップS504) DNSサーバ装置200の処理部232は、取得したドメイン名を示す情報に関連付けて資源を示す情報が、一次キャッシュメモリ240にヒットするか否かを判定する。
(ステップS505) 処理部232は、取得したドメイン名を示す情報に関連付けて資源を示す情報が、一次キャッシュメモリ240に記憶されている場合には、そのドメイン名を示す情報に関連付けて記憶されている資源を示す情報を、一次キャッシュメモリ240から取得する。処理部232は、取得した資源を示す情報を含むDNSクエリ応答を作成し、作成したDNSクエリ応答を、応答部238に出力し、応答部238は通信部210へ出力する。通信部210は、処理部232が出力したDNSクエリ応答を、端末装置100−1、端末装置100−Nへ送信する。
(ステップS506) 処理部232は、取得したドメイン名を示す情報に関連付けて資源を示す情報が、一次キャッシュメモリ240に記憶されていない場合には、該当のDNSクエリ要求は、再帰DNSクエリ中であるか否かを判定する。
(ステップS507) DNSサーバ装置200の処理部232は、該当のDNSクエリ要求が再帰クエリ中であると判定した場合、そのDNSクエリ要求に含まれるドメイン名を示す情報に関連付けて資源を示す情報を、二次キャッシュメモリ242から検索する。
(ステップS508) 処理部232は、そのDNSクエリ要求に含まれるドメイン名を示す情報に関連付けて資源を示す情報が二次キャッシュメモリ242に記憶されているか否かを判定する。
(ステップS509) 処理部232は、DNSクエリ応答に含まれるドメイン名を示す情報に関連付けて資源を示す情報が、二次キャッシュメモリ242に記憶されている場合には、そのドメイン名を示す情報に関連付けて記憶されている資源を示す情報を、二次キャッシュメモリ242から取得する。処理部232は、DNSサーバ装置200が設定した二次キャッシュ特有のTTLを参照する。
(ステップS510) 処理部232は、参照した二次キャッシュ特有のTTLが、権威DNSサーバ装置300が設定したTTLより短いか否かを判定する。
(ステップS511) 参照した二次キャッシュ特有のTTLが、権威DNSサーバ装置300が設定したTTLより短い場合、処理部232は、取得した資源を示す情報と、参照した二次キャッシュ特有のTTLとを含むDNSクエリ応答を作成し、作成したDNSクエリ応答を、応答部238に出力し、応答部238は通信部210へ出力する。通信部210は、応答部238が出力したDNSクエリ応答を、端末装置100へ送信する。
(ステップS512) 参照した二次キャッシュ特有のTTLが、権威DNSサーバ装置300が設定したTTLより長い場合、処理部232は、取得した資源を示す情報と、権威DNSサーバ装置300が設定したTTLとを含むDNSクエリ応答を作成し、作成したDNSクエリ応答を、応答部238に出力し、応答部238は通信部210へ出力する。通信部210は、応答部238が出力したDNSクエリ応答を、端末装置100−1、端末装置100−Nへ送信する。
(ステップS513) 処理部232は、DNSクエリ応答に含まれるドメイン名を示す情報に関連付けて資源を示す情報が、二次キャッシュメモリ242に記憶されていない場合には、ダミー応答を返すべきか否かを判定する。具体的には、図5ステップS210−212と同様である。
(ステップS514) 処理部232は、ダミー応答を返すべきと判定した場合、ダミー応答を参照する。端末装置100からの無駄な再送を抑止する観点から、有効なダミー応答が選択される。選択したダミー応答を作成し、作成したダミー応答を、DNSクエリ応答として、応答部238に出力し、応答部238は通信部210へ出力する。通信部210は、応答部238が出力したダミー応答を、端末装置100へ送信する。
(ステップS515) 処理部232は、該当のDNSクエリ要求が、再帰DNSクエリ中でないと判定した場合、クエリ内容を記憶する。
(ステップS516) 処理部232は、記録したクエリ内容を含むDNSクエリ要求を、要求部234へ出力する。要求部234は、再帰DNSクエリ要求を作成する。要求部234は、作成した再帰DNSクエリ要求を通信部210へ出力する。通信部210は、要求部234が出力した再帰DNSクエリ要求を、権威DNSサーバ装置300へ送信する。なお、ステップS516は再帰DNSクエリ要求中であり、まだ名前解決が出来ていない状態を示す。図6は、端末装置から同じタイミングで同じ名前解決要求が一斉集中するケースにおいて、再帰DNSクエリを抑制出来ることで、DNSサーバ装置の負荷低減および、キャッシュポイズニングのリスク低減を図りながら、二次キャッシュを用いた名前解決サービスを継続出来る効果がある。
図7は、本実施形態に係る通信システムの動作の一例(その4)を示すシーケンスチャートである。図7は、図5のステップS202−S204の間の処理を示す。なお、DNSサーバ装置200は、図7のステップS603−606に該当するドメイン及び権威DNSサーバ装置300の状態を継続的に把握しているものとする。
(ステップS601) DNSサーバ装置200は、端末装置100からDNSクエリ要求を受信すると、一次キャッシュを検索する。一次キャッシュにヒットすれば、DNSサーバ装置200は端末装置100にDNSクエリ応答を送信する。一方、一次キャッシュにヒットしない場合、ステップS602に進む。
(ステップS602) DNSサーバ装置200の処理部232は、DNSクエリ要求について、二次キャッシュメモリ242を参照できる有効時間内であるか否かを判定する。二次キャッシュメモリ242を参照できる有効時間内である場合、図5のステップS204(二次キャッシュを検索)へ移行する。
S204により、該当するドメインまたは権威DNSサーバ装置300の状態に基づき再帰DNSクエリ要求による名前解決が適切ではない状態と判断している時間内には、DNSクエリ要求ごとにS603−S611の処理をスキップして再帰DNSクエリを行わず、DNSサーバ装置の負荷低減を図りながら二次キャッシュによる名前解決サービスを継続できる効果がある。
(ステップS603) 処理部232は、二次キャッシュメモリ242を参照できる有効時間内でない場合、継続的に把握しているドメイン及び権威DNSサーバ装置300の状態に基づき、当該DNSクエリ要求に伴う権威DNSサーバ装置300との通信において、単位時間に再帰DNSクエリ要求に紐付かない不正応答数が閾値を超過しているか否かを判定する。ステップS603は、キャッシュポイズニングのリスクの高低を判別し、リスクが高い場合は、再帰DNSクエリを行わず二次キャッシュによる名前解決サービスが継続できる効果がある。
(ステップS604) 処理部232は、単位時間に不正応答が閾値を超過していない場合、当該DNSクエリ要求に伴う権威DNSサーバ装置300との単位時間あたりの再帰クエリ数が閾値を超過しているか否かを判定する。
(ステップS605) 処理部232は、当該DNSクエリ要求に伴う権威DNSサーバ装置300との単位時間あたりの再帰クエリ数が閾値を超過している場合、単位時間あたりのネガティブ応答率や無応答率が閾値を超過しているか否かを判定する。ステップS604とS605により、権威DNSサーバ装置300がダウンしている、又は、多くの攻撃が発生しているなどの場合において、再帰DNSクエリ要求を行わないことでDNSサーバ装置の負荷低減を図りながら二次キャッシュによる名前解決サービスが継続できる効果がある。
(ステップS606) 処理部232は、当該DNSクエリ要求に伴う権威DNSサーバ装置300との単位時間あたりの再帰クエリ数が閾値を超過していない場合、又は単位時間あたりのネガティブ応答・無応答率が閾値を超過していない場合に、単位時間あたりの該当ドメインに関する通信のダミー応答数及び率が閾値を超過しているか否かを判定する。ステップS606により、二次キャッシュに存在しない名前解決要求が多く発生していることで、DNSサーバ装置200及び権威DNSサーバ装置300に対し、多くの攻撃が継続しているかを判別して、再帰DNSクエリ要求を抑制することで、DNSサーバ装置の負荷低減を図りながら二次キャッシュを用いた名前解決サービスを継続できる効果がある。
(ステップS607) 処理部232は、単位時間あたりの該当ドメインに関する通信のダミー応答数及び率が閾値を超過していないと判定した場合、取得したDNSクエリ要求を、要求部234へ出力する。
要求部234は、再帰DNSクエリ要求を作成する。要求部234は、作成した再帰DNSクエリ要求を通信部210へ出力する。通信部210は、要求部234が出力した再帰DNSクエリ要求を、権威DNSサーバ装置300へ送信する。
なお、権威DNSサーバ装置300から応答があった場合は、図4のステップS107に移行する。また、権威DNSサーバ装置300から無応答であった場合は、図5のステップS204に移行する。
(ステップS608) 処理部232は、単位時間あたりの該当ドメインに関するダミー応答数及び率が閾値を超過していると判定した場合、二次キャッシュメモリ242の参照延長時間内であるか否かを判定する。二次キャッシュメモリ242の参照延長時間内である場合、図5のステップS204へ移行する。
(ステップS609) 処理部232は、二次キャッシュメモリ242の参照延長時間内でないと判定した場合、取得したDNSクエリ要求を、要求部234へ出力する。
要求部234は、再帰DNSクエリ要求を作成する。要求部234は、作成した再帰DNSクエリ要求を通信部210へ出力する。通信部210は、要求部234が出力した再帰DNSクエリ要求を、権威DNSサーバ装置300へ送信する。
なお、権威DNSサーバ装置300から応答があった場合は、図4のステップS107に移行する。また、権威DNSサーバ装置300から無応答であった場合は、図5のステップS204に移行する。
(ステップS610) 処理部232は、単位時間に再帰DNSクエリ要求に紐付かない不正応答が閾値を超過している場合、または、単位時間あたりの再帰DNSクエリ数が閾値を超過しかつネガティブ応答率や無応答率が閾値を超過している場合は、当該ドメイン又は権威DNSサーバ装置300との再帰DNSクエリ要求を一定時間抑止するため、二次キャッシュメモリ242を参照させる有効時間を設定する。
(ステップS611) 処理部232は、二次キャッシュ参照時間を超えても、ダミー応答数&率が閾値を超えている際に二次キャッシュ参照を延長し再帰クエリ要求を抑止するため、二次キャッシュメモリ242の参照延長時間を設定する。その後、図5のステップS204(二次キャッシュを検索)へ移行する。
図7に示されるシーケンスチャートによれば、DNSサーバ装置200がDNSクエリ要求を受信した場合に、DNSサーバ装置200及び権威DNSサーバ装置300への負荷を下げつつ、端末装置100にDNSクエリ応答をするにあたり、二次キャッシュメモリ242の参照又は権威DNSサーバ装置300への再帰DNSクエリ要求のどちらが最適解かを判別することができる。
前述した実施形態では、リソースレコードに、ドメイン名と、Rデータと、Typeと、クラスと、TTLとが関連付けて記憶される場合について説明したがこの例に限られない。例えば、ドメイン名と関連付けて、Rデータと、Typeと、クラスと、TTLとに加え、再帰DNSクエリ応答のソースIP、名前解決時のプロトコル(UDP、TCP)、再帰DNSクエリ時にトンネリング検出有無などの他の情報が記憶されてもよい。
前述した実施形態では、資源に、Rデータと、Typeと、クラスと、TTLとが含まれる場合について説明したが、この例に限られない。例えば、資源に、RデータType、クラス、及びTTL以外の情報が含まれてもよい。
前述した実施形態では、DNSサーバ装置200が、ポジティブキャッシュを記憶する際に、権威DNSサーバ装置300が設定したTTLと、そのTTLよりも短い時間とを設定する場合について説明したが、この例に限られない。例えば、運用によって、二次キャッシュメモリ242で設定するTTLと、権威DNSサーバ装置300で設定済みのTTLとを比較して、最適な一つに設定を切り替えるようにしてもよい。
前述した実施形態では、二次キャッシュメモリ242に設定される権威DNSサーバ装置300が設定したTTLよりも短い時間として、五分等の画一的な時間に設定される場合について説明したが、この例に限られない。例えば、二次キャッシュメモリ242に記憶される情報の性質によりTTLを異ならせてもよい。具体的には、二次キャッシュメモリ242に記憶される性質に応じて情報を区分し、区分Aの場合には一分とし、区分Bの場合には五分、・・・、区分Xの場合には十二時間などに設定してもよい。また、二次キャッシュメモリ242に記憶される情報の性質によりTTLを、動的に変更してもよい。具体的には、最初は、デフォルトで五分に設定し、五分後に問い合わせがあり、二次キャッシュメモリ242に記憶される情報を使用する状況が継続されている場合は、二次キャッシュ特有のTTLを十分等の長い時間に再設定する。
なお、相手方サービスの種類によって、最適なTTLを決めてもよい。相手方サービスの更新頻度、各種検索エンジンが動作する相手方システムの回復予想時間等が考慮されてもよい。システムのサービス継続が前提で更新頻度が高いものは、二次キャッシュメモリ242のTTLを短く設定する。他方で、システムのサービス継続が難しい場合にはTTLを長く設定する。また、過去の履歴から最適なTTLを割り出して、区分することによって、振分が可能である。
前述した実施形態において、二次キャッシュメモリ242を、複数のDNSサーバ装置200で共用するようにしてもよいし、DNSサーバ装置200毎に二次キャッシュメモリ242を備えるようにしてもよい。また、DNSサーバ装置200毎に二次キャッシュメモリ242を備える場合に、二次キャッシュメモリ202毎に同期をとるようにしてもよい。
前述した実施形態では、DNSサーバ装置200は、再帰DNSクエリ要求を送信してから時間閾値経過しても、再帰DNSクエリ応答を取得できなかった場合に、二次キャッシュメモリ242に、再帰DNSクエリ要求に含まれるドメイン名を示す情報に関連付けて資源を示す情報が二次キャッシュメモリ242に記憶されているか否かを判定する場合について説明したが、この例に限られない。例えば、DNSサーバ装置200は、権威DNSサーバ装置300が送信した再帰DNSクエリ応答を受信し、受信した再帰DNSクエリ応答に、ドメイン名の名前を解決できない情報が含まれる場合に、再帰DNSクエリ要求に含まれるドメイン名を示す情報に関連付けて資源を示す情報が二次キャッシュメモリ242に記憶されているか否かを判定するようにしてもよい。
前述した実施形態では、端末装置100からの無駄な再送を抑止する観点から、有効なダミー応答が選択しているが、選択したダミー応答の内容によっては抑止効果が得られない場合も考えられることから、例えば、単位時間あたりの該当するDNSクエリ要求数、ダミー応答数および割合などから、動的にダミー応答内容を選択し直してもよい。加えて、抑止効果のあったダミー応答内容の自動的に記憶学習し、次回ダミー応答が発動される際に、抑止効果の高いダミー応答内容順で選択出来るようにしてもよい。また、学習する際には、端末装置100やDNSサーバ装置200のIPアドレス、ポート番号、およびDNSクエリ要求に含まれるドメインなどと組み合わせて記憶し、次回ダミー応答が発動される際に、優先して選択できる応答内容の条件に加えてもよい。また、ダミー応答を返しても抑止効果が得られない時には、動的に該当の端末装置からのDNSクエリ要求を一時的に遮断してもよい。
前述した実施形態では、ユーザが操作部140を操作することによってドメイン名を示す情報を入力した場合に、そのドメイン名を示す情報を含み、そのドメイン名を示す情報に関連付けて記憶されている資源を示す情報を問い合わせる情報であるDNSクエリ要求を作成する場合について説明したがこの例に限られない。例えば、ユーザが操作部140を操作することによって入力されたドメイン名に限らず、端末装置100で、何らかの処理が行われるのに伴って、ドメイン名の名前を解決するための問い合わせを行う場合についても適用できる。
このように構成することによって、二次キャッシュメモリを、権威DNSサーバ装置が攻撃を受けた場合、権威DNSサーバ装置がダウンした場合、キャッシュポイズニング、ネットワーク障害、輻輳、規制などによってドメイン名の名前を解決するのに問題が生じる場面において、一時的に名前を解決するための避難先として活用できる。このため、クライアント装置が送信したDNSクエリ要求に対して、ドメイン名の名前を解決ができないことを低減することができ、ユーザに対してサービスを継続できる。
本実施形態に係るDNSサーバ装置によれば、二次キャッシュは、一次キャッシュがキャッシュする時間よりも長い時間、ポジティブキャッシュを記憶する。このように構成することによって、一次キャッシュに記憶されている情報が消去されても、二次キャッシュに記憶されている情報が消去されないようにできるので、クライアント装置が送信したDNSクエリ要求に対して、ドメイン名の名前を解決ができないことを低減することができ、ユーザに対してサービスを継続できる。また、ドメイン名の名前を解決ができないことを低減することができるため、DNSサーバ装置への過剰な負荷を下げることができるため、多数のユーザのサービスに悪影響を与えないようにすることができる。
本実施形態に係るDNSサーバ装置によれば、資源の問い合わせに対して、権威DNSサーバ装置からの応答がない場合に、二次キャッシュへ、資源を問い合わせる。このように構成することによって、DNSサーバ装置が、権威DNSサーバ装置へ、再帰DNSクエリ要求を送信した場合に、権威DNSサーバ装置が応答を送信しなかった場合でも、二次キャッシュメモリに、その再帰DNSクエリ要求に含まれるドメイン名を示す情報に関連付けて、資源を示す情報が記憶されている否かを判定することができる。これによって、ドメイン名の名前を解決することができるため、クライアント装置が送信したDNSクエリ要求に対して、ドメイン名の名前を解決ができないことを低減することができ、ユーザに対してサービスを継続できる。また、ドメイン名の名前を解決ができないことを低減することができるため、DNSサーバ装置への過剰な負荷を下げることができるため、多数のユーザのサービスに悪影響を与えないようにすることができる。
本実施形態に係るDNSサーバ装置によれば、資源の問い合わせを行っている間に、DNSクエリ要求に含まれる名前、タイプ、クラスと、複数の前記クライアント装置の各々が送信したDNSクエリ要求に含まれる名前、タイプ、クラスとが一致する場合に、前記資源を、二次キャッシュから取得する。
このように構成することによって、キャッシュポイズニングのリスクを低減することができるとともに、スパイクトラヒックによるDNSサーバ装置の負荷を低減できる。ここで、スパイクトラヒックとは、同一のドメイン名の名前を解決することを要求するDNSクエリ要求が、複数のクライアントから一斉に送信された場合によって生じる。
本実施形態に係るDNSサーバ装置によれば、権威DNSサーバ装置が送信した応答又は無応答であることに基づいて、クライアント装置が新たに送信したDNSクエリ要求に対して、権威DNSサーバ装置へ、資源を問い合わせるか否かを判定する。このように構成することによって、DNSサーバ装置は、権威DNSサーバ装置との間の通信に基づいて、権威DNSサーバ装置に異常が発生していると想定される場合には再帰DNSクエリ要求を送信しないと判定し、権威DNSサーバ装置に異常が発生していないと想定される場合には再帰DNSクエリ要求を送信すると判定できる。
なお、前述の端末装置、DNSサーバ装置、及び権威DNSサーバ装置は内部にコンピュータを有している。そして、前述した各装置の各処理の過程は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されており、このプログラムをコンピュータが読み出して実行することによって、上記処理が行われる。ここでコンピュータ読み取り可能な記録媒体とは、磁気ディスク、光磁気ディスク、CD−ROM、DVD−ROM、半導体メモリ等をいう。また、このコンピュータプログラムを通信回線によってコンピュータに配信し、この配信を受けたコンピュータが当該プログラムを実行するようにしてもよい。
また、上記プログラムは、前述した機能の一部を実現するためのものであってもよい。
さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。
Claims (8)
- クライアント装置と、権威DNSサーバ装置との間に設けられたDNSサーバ装置であって、
前記クライアント装置が送信したDNSクエリ要求に基づき、前記権威DNSサーバ装置へ、資源を問い合わせる要求部と、
前記要求部による前記資源の前記問い合わせに応じて、前記権威DNSサーバ装置へ名前を問い合わせた結果を記憶する一次キャッシュと、
前記一次キャッシュに記憶された前記問い合わせた結果のうち、名前を解決できる情報であるポジティブキャッシュを記憶する二次キャッシュとを備え、
前記要求部は、前記資源の前記問い合わせに対して、名前を解決できない所定の場合に、前記二次キャッシュへ、前記資源を問い合わせる、DNSサーバ装置。 - 前記二次キャッシュは、前記一次キャッシュが記憶する時間よりも長い時間、前記ポジティブキャッシュを記憶する、請求項1に記載のDNSサーバ装置。
- 前記資源の有効生存期間として、前記権威DNSサーバ装置で設定された有効生存期間と、前記二次キャッシュで設定された有効生存期間とのうち、短い有効生存期間を、前記クライアント装置に応答する応答部をさらに備える、
請求項1又は請求項2に記載のDNSサーバ装置。 - 前記要求部は、前記資源の前記問い合わせに対して、前記権威DNSサーバ装置からの応答がない場合に、前記二次キャッシュへ、前記資源を問い合わせる、請求項1から請求項3のいずれか一項に記載のDNSサーバ装置。
- 前記要求部は、前記資源の前記問い合わせを行っている間に、前記DNSクエリ要求に含まれる名前、タイプ、クラスと、複数の前記クライアント装置の各々が送信したDNSクエリ要求に含まれる名前、タイプ、クラスとが一致する場合に、前記資源を、前記二次キャッシュから取得する、請求項1から請求項4のいずれか一項に記載のDNSサーバ装置。
- 前記権威DNSサーバ装置が送信した応答又は無応答であることに基づいて、クライアント装置が新たに送信したDNSクエリ要求に対して、前記権威DNSサーバ装置へ、資源を問い合わせるか否かを判定する判定部
を備える、請求項1から請求項5のいずれか一項に記載のDNSサーバ装置。 - クライアント装置と、権威DNSサーバ装置との間に設けられたDNSサーバ装置が実行する方法であって、
前記DNSサーバ装置は、前記クライアント装置が送信したDNSクエリ要求に基づき、前記権威DNSサーバ装置へ名前を問い合わせた結果を記憶する一次キャッシュと、前記一次キャッシュに記憶された前記問い合わせた結果のうち、名前を解決できる情報であるポジティブキャッシュを記憶する二次キャッシュとを備え、
前記DNSサーバ装置が実行する方法は、
前記クライアント装置が送信したDNSクエリ要求に基づき、前記権威DNSサーバ装置へ、資源を問い合わせるステップと、
前記資源の前記問い合わせに対して、前記権威DNSサーバ装置が送信した応答又は無応答であることに基づき名前を解決できないことを示す場合に、前記二次キャッシュへ、前記資源を問い合わせるステップと
を有する、方法。 - クライアント装置と、権威DNSサーバ装置との間に設けられ、前記クライアント装置が送信したDNSクエリ要求に基づき、前記権威DNSサーバ装置へ名前を問い合わせた結果を記憶する一次キャッシュと、前記一次キャッシュに記憶された前記問い合わせた結果のうち、名前を解決できる情報であるポジティブキャッシュを記憶する二次キャッシュとを備えたDNSサーバ装置のコンピュータに、
前記クライアント装置が送信したDNSクエリ要求に基づき、前記権威DNSサーバ装置へ、資源を問い合わせるステップと、
前記資源の前記問い合わせに対して、前記権威DNSサーバ装置が送信した応答又は無応答であることに基づき名前を解決できないことを示す場合に、前記二次キャッシュへ、前記資源を問い合わせるステップと
を実行させる、プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017190424A JP6529139B2 (ja) | 2017-09-29 | 2017-09-29 | Dnsサーバ装置、方法、及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017190424A JP6529139B2 (ja) | 2017-09-29 | 2017-09-29 | Dnsサーバ装置、方法、及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2019068199A JP2019068199A (ja) | 2019-04-25 |
JP6529139B2 true JP6529139B2 (ja) | 2019-06-12 |
Family
ID=66340829
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017190424A Active JP6529139B2 (ja) | 2017-09-29 | 2017-09-29 | Dnsサーバ装置、方法、及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6529139B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113472914B (zh) * | 2021-06-28 | 2023-09-26 | 北京天地互连信息技术有限公司 | Dns定向预取缓存方法及系统 |
-
2017
- 2017-09-29 JP JP2017190424A patent/JP6529139B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP2019068199A (ja) | 2019-04-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10148612B2 (en) | Method and system for increasing speed of domain name system resolution within a computing device | |
US11606388B2 (en) | Method for minimizing the risk and exposure duration of improper or hijacked DNS records | |
JP4159337B2 (ja) | 仮想ネットワーク名の解決方法 | |
US9264358B2 (en) | Alias resource record sets | |
EP2769307B1 (en) | Answer augmentation system for authoritative dns servers | |
US11347797B2 (en) | Asset search and discovery system using graph data structures | |
US20050021841A1 (en) | Dynamic DNS registration method, domain name solution method, DNS proxy server, and address translation device | |
JPWO2006067951A1 (ja) | アクセス制御装置およびアクセス制御方法 | |
US20160021055A1 (en) | Methods and systems for implementing very large dns zones | |
JP2011517193A (ja) | ルーティングをリクエストするための方法とシステム | |
US9954815B2 (en) | Domain name collaboration service using domain name dependency server | |
WO2018214853A1 (zh) | 一种减小dns报文长度的方法、装置、介质及设备 | |
US10826868B2 (en) | NAT aware DNS | |
JP6529139B2 (ja) | Dnsサーバ装置、方法、及びプログラム | |
JP2018169638A (ja) | キャッシュサーバおよびキャッシュ方法 | |
JP6571737B2 (ja) | Dnsサーバ装置、方法、及びプログラム | |
CN115118700B (zh) | 一种通信方法及通信系统 | |
JP4757063B2 (ja) | キャッシュサーバ装置、キャッシュ制御方法およびキャッシュサーバ装置用プログラム | |
JP2019186659A (ja) | Dns水責め攻撃を防御する方法、プログラム、及び装置 | |
JP5345577B2 (ja) | 名前解決装置、名前解決方法および名前解決プログラム | |
JP4217725B2 (ja) | 再帰問合わせを高度化するためのキャッシュサーバ装置、キャッシュ制御方法およびキャッシュサーバ装置用プログラム | |
JP4745190B2 (ja) | アドレス取得装置、アドレス取得方法、及びプログラム | |
EP3657741A1 (en) | Data packet routing method and data packet routing device | |
CN116708361A (zh) | 域名解析器识别方法、装置和电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20190225 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20190305 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20190408 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20190416 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20190510 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6529139 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |