従来より、一般的なインターネットサービスにおいて、ホスト名(ドメイン名)とIPアドレス(Internet Protocol Address)とを対応させて名前解決を行なうDNSシステム(Domain Name System)が用いられている。このDNSシステムにおいては、ドメイン名とIPアドレスとの対応関係が分散して管理され、該当する対応関係を管理して名前解決を行なう権限を有するDNS権威サーバが分散して設置される。
DNS権威サーバには、自身が管理する名前空間の範囲(ゾーン)に対するドメイン名とIPアドレスとの対応関係(リソースレコード)の集合であるゾーンデータの原本を管理するDNS権威サーバ(以下、プライマリDNSと記述する)と、プライマリDNSから取得したゾーンデータを管理して、名前解決の要求を行なったクライアントへ応答するDNS権威サーバ(以下、セカンダリDNSと記述する)がある。このような構成において、セカンダリDNSは、プライマリDNSにおいて更新されて管理されている最新のリソースレコードをゾーン転送によって取得し、これを用いて名前解決を行なう。
ここで、DNSシステムの運用時において、一般的には、複数のプライマリDNSが、リソースレコードをゾーン単位で分散して収容し、1つのセカンダリDNSが、ゾーン転送によって、複数のプライマリDNSそれぞれから、必要なリソースレコードを取得することが行なわれている。
このようなDNSシステムの運用を行なうための第一の従来技術として、例えば、非特許文献1および2には、保守者が、セカンダリDNSに、必要なゾーンごとに、対応するプライマリDNSのIPアドレスのリストを予め登録しておき、セカンダリDNSが、自身に登録されたリストを参照して、予め設定された時間間隔で、プライマリDNSにゾーン転送の要求を行なう技術が開示されている。これについて、図11を用いて説明する。図11は、第一の従来技術を説明するための図である。
なお、以下では、IPアドレスが「IP#0」であるプライマリDNS#0が、「zone0.exam.jp」のゾーンデータである「zone0」を管理し、IPアドレスが「IP#1」であるプライマリDNS#1が、「zone1.exam.jp」のゾーンデータである「zone1」を管理しており、セカンダリDNSが、プライマリDNS#0からゾーン転送によって最新の「zone0」を取得し、プライマリDNS#1からゾーン転送によって最新の「zone1」を取得することで、「ドメイン名:zone0.exam.jp」または「ドメイン名:zone1.exam.jp」の名前解決を行なう場合について説明する。
第一の従来技術において、保守者は、セカンダリDNSに対して、図11に示すように、「zone0.exam.jp」のゾーンデータである「zone0」の問い合わせ先として、プライマリDNS#0の「IPアドレス:IP#0」が設定され、「zone1.exam.jp」のゾーンデータである「zone1」の問い合わせ先として、プライマリDNS#1の「IPアドレス:IP#1」を設定されたコンフィギュレーションファイルを入力する。これにより、セカンダリDNSは、ゾーンごとの問い合わせ先として、「ゾーン名:zone0.exam.jp」と「問い合わせ先:IP#0」とを対応付け、「ゾーン名:zone1.exam.jp」と「問い合わせ先:IP#1」とを対応付けたプライマリDNSのリストを保持する。
そして、セカンダリDNSは、自装置の起動時、あるいは、予め設定された秒単位の更新間隔ごとに、「zone0」および「zone1」のゾーン転送処理を、リストを参照して実施する。すなわち、セカンダリDNSは、リストを参照して、「zone0」のゾーン転送のための問い合わせを「IPアドレス:IP#0」のプライマリDNS#0に対して行ない(図11の(1)参照)、「zone1」のゾーン転送のための問い合わせを「IPアドレス:IP#1」のプライマリDNS#1に対して行なう(図11の(1’)参照)。
なお、実際のゾーン転送処理においては、セカンダリDNSは、プライマリDNSに対してSOA(Start of Authority)要求のクエリを送信し、プライマリDNSからSOA応答を受信した場合に、自身が保持しているゾーンデータとの差分情報のみを転送するIXFR(Incremental Zone Transfer)の要求を、プライマリDNSに対して送信する。そして、セカンダリDNSは、プライマリDNSから、転送処理を行なったことを表す「NOERROR」を含むIXFR応答を受信した場合は、ゾーンデータを更新して転送処理を終了する。
これに反して、差分情報が転送されなかった場合(例えば、プライマリDNSが、IXFRに未対応の場合)、セカンダリDNSは、すべてのゾーンデータを転送するAXFR(A request for a transfer of an entire zone)の要求を、プライマリDNSに対して送信し、転送処理を行なったことを表す「NOERROR」のAXFR応答を受信した場合、ゾーンデータを更新して転送処理を終了する。なお、AXFRに失敗した場合、セカンダリDNSは、その旨を保守者に通知して転送処理を終了する。また、この第一の従来技術は、セカンダリDNSが、SOA/IXFR/AXFRの処理をすべて行なうのではなく、SOA/AXFRの処理のみを行なう場合であっても適用できる。
しかし、第一の従来技術においては、保守者は、セカンダリDNSが管理するゾーンごとに、プライマリDNSを設定する必要があり、大量のゾーンを管理するセカンダリDNSの場合、ゾーン単位でプライマリDNSのIPアドレスの設定を登録したり変更したりすることとなり、保守者の負担が大きくなってしまうという問題点があった。
そこで、第二の従来技術として、例えば、非特許文献3においては、問い合わせをするプライマリDNSのIPアドレスをグループ化し、全ゾーンで共通するリストを作成してセカンダリDNSに登録する技術が開示されている。これについて、図12を用いて説明する。図12は、第二の従来技術を説明するための図である。なお、図12に示す場合も、図11に示す場合と同様に、セカンダリDNSは、プライマリDNS#0から「zone0」を取得し、プライマリDNS#1から「zone1」を取得することで、「ドメイン名:zone0.exam.jp」または「ドメイン名:zone1.exam.jp」の名前解決を行なうものとする。
図12に示すように、第二の従来技術においては、保守者は、セカンダリDNSが管理する「zone0」および「zone1」に関する問い合わせ先として、「IP#0;IP#1」とするリストである「masters_list1」を作成し、「zone0」および「zone1」の問い合わせ先として、「masters_list1」が共通して設定されたコンフィギュレーションファイルを入力する。ここで、「masters_list1」に記載されている「IP#0;IP#1」には、セカンダリDNSが「IP#0」「IP#1」の順に問い合わせを行なうこともあわせて設定されている。
これにより、セカンダリDNSは、ゾーンごとの問い合わせ先として、「ゾーン名:zone0.exam.jp」および「ゾーン名:zone1.exam.jp」のそれぞれにおいて、最初に「IPアドレス:IP#0」のプライマリDNS#0に問い合わせを行ない、続いて、「IPアドレス:IP#1」のプライマリDNS#1に問い合わせを行なうとするプライマリDNSのリストを保持することとなる。
そして、セカンダリDNSは、例えば、「zone1」のゾーン転送処理を、図12に示すリストを参照して実施する。すなわち、セカンダリDNSは、リストを参照して、「zone1」のゾーン転送のための問い合わせを、最初に「IPアドレス:IP#0」のプライマリDNS#0に対して行なう(図12の(1)参照)。ここで、プライマリDNS#0は、「zone1」を管理してないため、セカンダリDNSは、プライマリDNS#0からSOA応答を受信できない。あるいは、セカンダリDNSは、プライマリDNS#0から、他のプライマリDNSに委任して下さいとの委任応答、もしくはエラー応答を受信する。このため、セカンダリDNSは、再度リストを参照して、「zone1」のゾーン転送のための再問い合わせを、「IPアドレス:IP#1」のプライマリDNS#1に対して行なう(図12の(2)参照)。この場合、プライマリDNS#1は、「zone1」の原本を管理しているので、IXFRまたはAXFRによるプライマリDNS#1からセカンダリDNSへの「zone1」の転送が成功する。
このように、第二の従来技術によれば、保守者は、セカンダリDNSが処理を行なうゾーンデータそれぞれを管理するすべてのプライマリDNSのIPアドレスを問い合わせ順に並べたリストを作成して設定するだけでよく、保守者の負担を軽減することができる。
P. Mockapetris, "DOMAIN NAMES - CONCEPTS AND FACILITIES", November 1987, [online], [平成20年1月24日], インターネット<URL: http://www.ietf.org/rfc/rfc1034.txt>
ポール アルビッツ、クリケット リュウ著、「DNS&BIND(第4版)」、オライリー・ジャパン、2002年2月、4.8章
"BIND9.4.2", [online], [平成20年1月24日], インターネット<URL:http://www.isc.org/index.pl?/sw/bind/view/?release=9.4.2#DOCS>
[用語の説明]
まず最初に、以下の実施例で用いる主要な用語を説明する。以下の実施例で用いる「DNS権威サーバ」とは、ホスト名(ドメイン名)とIPアドレス(Internet Protocol Address)との対応関係が分散して管理されるDNSシステム(Domain Name System)において、該当する対応関係を管理して名前解決を行なう権限を有するサーバ装置のことである。また、「ゾーン」とは、「DNS権威サーバ」が管理する名前空間の範囲のことであり、「ゾーンデータ」とは、「ゾーン」に対するドメイン名とIPアドレスとの個々の対応関係(リソースレコード)の集合のことである。
また、「プライマリDNS」とは、リソースレコードの集合である「ゾーンデータ」の原本を更新・管理する「DNS権威サーバ」のことであり、「セカンダリDNS」とは、「プライマリDNS」から取得した「ゾーンデータ」を管理して、名前解決の要求を行なったクライアントへ応答する「DNS権威サーバ」のことである。このような構成において、「セカンダリDNS」は、「プライマリDNS」において更新されて管理されている最新のリソースレコードを「ゾーン転送」によって取得し、これを用いて名前解決を行なう。なお、「プライマリDNS」は、特許請求の範囲に記載の「管理装置」に対応し、「セカンダリDNS」は、特許請求の範囲に記載の「DNSサーバ装置」に対応する。すなわち、以下では、本発明を「セカンダリDNS」に適用した場合について説明する。
[実施例1におけるセカンダリDNSの概要および特徴]
続いて、図1および図2を用いて、実施例1におけるセカンダリDNSの主たる特徴を具体的に説明する。図1および図2は、実施例1におけるセカンダリDNSの概要および特徴を説明するための図である。
実施例1におけるセカンダリDNSは、ゾーンデータを更新して管理する複数のプライマリDNSに接続され、当該複数のプライマリDNSそれぞれから転送された複数のゾーンデータを管理して名前解決を行なうDNS権威サーバであることを概要とし、ゾーン単位のゾーン転送を効率的に実施することが可能となることに主たる特徴がある。
なお、以下では、IPアドレスが「IP#0」であるプライマリDNS#0が、「zone0.exam.jp」のゾーンデータである「zone0」を管理し、IPアドレスが「IP#1」であるプライマリDNS#1が、「zone1.exam.jp」のゾーンデータである「zone1」を管理しており、セカンダリDNSが、プライマリDNS#0からゾーン転送によって最新の「zone0」を取得し、プライマリDNS#1からゾーン転送によって最新の「zone1」を取得することで、「ドメイン名:zone0.exam.jp」または「ドメイン名:zone1.exam.jp」の名前解決を行なう場合について説明する。
この主たる特徴について簡単に説明すると、まず、実施例1におけるセカンダリDNSは、複数のプライマリDNSに対してゾーンデータの転送要求を行なう順番が、自身が管理する複数のゾーンデータすべてに共通して設定された情報を記憶する。例えば、図1の(A)に示すように、保守者は、セカンダリDNSが管理する「zone0」および「zone1」に関する問い合わせ先として、「IP#0;IP#1」とするリストである「masters_list1」を作成し、「zone0」および「zone1」の問い合わせ先として、「masters_list1」が共通して設定されたコンフィギュレーションファイルを入力したとする。ここで、「masters_list1」に記載されている「IP#0;IP#1」には、セカンダリDNSが「IP#0」「IP#1」の順に問い合わせを行なうことが、あわせて設定されている。
これにより、実施例1におけるセカンダリDNSは、ゾーンごとの問い合わせ先として、「ゾーン名:zone0.exam.jp」および「ゾーン名:zone1.exam.jp」のそれぞれにおいて、最初に「IPアドレス:IP#0」のプライマリDNS#0に問い合わせを行ない、続いて、「IPアドレス:IP#1」のプライマリDNS#1に問い合わせを行なうとする「設定順番:IP#0,IP#1」が、すべてのゾーン名に対応付けられたプライマリDNSのリストを記憶する。また、図1の(A)に示すリストには、「ゾーン名」および「設定順番」とともに「優先プライマリ」の項目が対応付けられ、「優先プライマリ」は「なし」とする「<null>」が記憶されているが、これについては、後に詳述する。ここで、「プライマリDNSのリスト」は、特許請求の範囲に記載の「共通設定情報」に対応する。
なお、コンフィギュレーションファイルの形式としては、図1の(A)に示す形式に限定されるものではなく、セカンダリDNSが管理する全ゾーンにおいて共通してプライマリDNSの問い合わせ順番が設定されるものであればどのような形式であってもよい。例えば、「zone=“all” {IP#0;IP#1}」のような形式であってもよい。
そして、実施例1におけるセカンダリDNSは、記憶したプライマリDNSのリストに基づいて、プライマリDNS#0およびプライマリDNS#1それぞれに対して順番にゾーン転送の要求を行なって、当該転送要求に対応するゾーンデータを取得する。例えば、実施例1におけるセカンダリDNSは、自身が保守者によって起動された際に、最初に、プライマリDNS#0に対して「zone1」のゾーン転送を要求する問い合わせを行なう(図1の(A)の(1)参照)。
ここで、プライマリDNS#0は、「zone1」のゾーンデータを管理していないので、実施例1におけるセカンダリDNSは、プライマリDNS#0よりゾーン転送の要求に対する応答を得ることができない。あるいは、セカンダリDNSは、プライマリDNS#0から、他のプライマリDNSに委任して下さいとの委任応答、もしくはエラー応答を受信する。そこで、実施例1におけるセカンダリDNSは、「設定順番」に従って、プライマリDNS#1に、「zone1」のゾーン転送を要求する問い合わせを行なう(図1の(A)の(2)参照)。この場合、プライマリDNS#1は、「zone1」のゾーンデータを管理しているため、実施例1におけるセカンダリDNSは、「zone1」のゾーンデータを、プライマリDNS#1より取得する。
そして、実施例1におけるセカンダリDNSは、ゾーン転送の要求に応答して対応するゾーンデータを送信したプライマリDNSを、優先プライマリとして登録する。すなわち、実施例1におけるセカンダリDNSは、「zone1」のゾーンデータを送信したプライマリDNS#1を、「ゾーン名:zone1.exam.jp」のゾーンデータの転送処理を再度行なう際に、ゾーン転送の要求を最初に優先して行なう優先プライマリであるとして、リストにおける「ゾーン名:zone1.exam.jp」に対応する「優先プライマリ」に、プライマリDNS#1の「IPアドレス:IP#1」を登録する(図1の(A)の(3)参照)。具体的には、「ゾーン名:zone1.exam.jp」に対応する「優先プライマリ」を「<null>」から「IP#1」に更新する。
そして、実施例1におけるセカンダリDNSは、例えば、「zone1」において予め設定された秒単位の更新間隔が経過すると、リストを参照して、優先プライマリであるプライマリDNS#1へ、最初に「zone1」のゾーン転送を要求する問い合わせを行なう(図1の(B)の(1)参照)。なお、図1の(B)に示すリストにおいては、プライマリDNS#0から「zone0」のゾーン転送が成功したことから、「ゾーン名:zone0.exam.jp」に対応する「優先プライマリ」に、プライマリDNS#0の「IPアドレス:IP#0」も登録されている。
ここで、実施例1におけるセカンダリDNSは、優先プライマリとして登録されているプライマリDNSに対して、対応するゾーンデータのゾーン転送を最初に要求して、当該プライマリDNSから応答を得られない場合は、優先プライマリとしての登録を削除する。
例えば、実施例1におけるセカンダリDNSは、「zone1」のゾーン転送の要求をするために、プライマリDNSのリストを参照して、優先プライマリとして登録されているプライマリDNS#1に対して最初に「zone1」の問い合わせを行なう(図2の(1)参照)。ここで、プライマリDNS#1が故障している、もしくはプライマリDNS#1とセカンダリDNSとの間を接続するネットワークに障害が発生しているために、プライマリDNS#1からの応答なく、「zone1」のゾーン転送に失敗したとする(図2の(2)参照)。なお、ゾーン転送に失敗する場合としては、「zone1」の設定先のプライマリDNSがプライマリDNS#1から変更された場合もある。
この場合、実施例1におけるセカンダリDNSは、プライマリDNSのリストにおいて、「ゾーン名:zone1.exam.jp」に対応する「優先プライマリ」に登録されているプライマリDNS#1の「IPアドレス:IP#1」を削除する(図2の(3)参照)。具体的には、「ゾーン名:zone1.exam.jp」に対応する「優先プライマリ」を「IP#1」から「<null>」に更新する。
そして、実施例1におけるセカンダリDNSは、優先プライマリとしての登録が削除されたプライマリDNSに対して転送要求を行なったゾーンデータの転送要求を、再度、プライマリDNSのリストにおける「設定順番」に基づいて、プライマリDNS#0、プライマリDNS#1それぞれに対して順番に行なう。すなわち、実施例1におけるセカンダリDNSは、プライマリDNSのリストにおける「設定順番」に基づいて、プライマリDNS#0に「zone1」のゾーン転送を要求する問い合わせを行ない(図2の(4)参照)、プライマリDNS#0よりゾーン転送の要求に対する応答を得ることができないことから「設定順番」に従って、さらに、プライマリDNS#1に、「zone1」のゾーン転送を要求する問い合わせを行なう(図2の(5)参照)。
このようなことから、実施例1におけるセカンダリDNSは、ゾーン転送に1回成功して優先プライマリが登録されると、優先プライマリが登録されているゾーンデータに関しては、次回以降は、優先プライマリとして登録されたプライマリDNSへ最初に転送要求を送信するので、ゾーン転送の処理ごとに、コンフィギュレーションファイルの先頭に設定されたプライマリDNSにゾーン転送の要求が集中することを回避でき、上記した主たる特徴の通り、ゾーン単位のゾーン転送を効率的に実施することが可能となる。
なお、本実施例では、1つのプライマリDNSが1つのゾーンデータを管理する場合について説明したが、本発明はこれに限定されるものではなく、1つのプライマリDNSが複数のゾーンデータを管理する場合であってもよい。
[実施例1におけるセカンダリDNSの構成]
次に、図3および図4を用いて、実施例1におけるセカンダリDNSの構成を説明する。図3は、実施例1におけるセカンダリDNSの構成を説明するための図であり、図4は、実施例1における設定情報記憶部を説明するための図である。
図3に示すように、実施例1におけるセカンダリDNS10は、入力部11と、出力部12と、通信部13と、入出力制御I/F部14と、記憶部15と、処理部16とから構成され、さらに、ネットワークを介してプライマリDNS#0およびプライマリDNS#1からなるプライマリDNS群20と、クライアント装置30とにそれぞれ接続される。
プライマリDNS群20は、本実施例においては、プライマリDNS#0およびプライマリDNS#1からなる2つのプライマリDNSからなり、IPアドレスが「IP#0」であるプライマリDNS#0が、「zone0.exam.jp」のゾーンデータである「zone0」を管理し、IPアドレスが「IP#1」であるプライマリDNS#1が、「zone1.exam.jp」のゾーンデータである「zone1」を管理する。
クライアント装置30は、セカンダリDNS10に対して、名前解決を要求する装置である。
入力部11は、各種の情報の入力を受付け、キーボードやマウスなどを備えて構成され、特に本発明に密接に関連するものとしては、例えば、セカンダリDNS10の保守者から後述するコンフィグレーションファイルや、ゾーンデータ未取得時におけるゾーンデータの更新間隔およびゾーン転送の要求を行なう回数などを受け付けて入力する。
出力部12は、各種情報を出力し、スピーカやモニタなどを備えて構成され、特に本発明に密接に関連するものとしては、例えば、後述するゾーン転送処理部16aによるゾーン転送が失敗した場合に、その旨を保守者に報知するためのメッセージを出力する。
通信部13は、他の装置との通信を制御し、特に本発明に密接に関連するものとしては、例えば、セカンダリDNS10とプライマリDNS#0およびプライマリDNS#1からなるプライマリDNS群20との間で送受信されるSOA、IXFR、AXFRなどの要求および応答や、セカンダリDNS10とクライアント装置30との間で送受信される名前解決の要求および応答の転送を制御する。
入出力制御I/F部14は、入力部11、出力部12および通信部13と、記憶部15および処理部16との間におけるデータ転送を制御する。
記憶部15は、各種処理に必要なデータおよびプログラムを格納し、特に本発明に密接に関連するものとしては、図3に示すように、設定情報記憶部15aと、ゾーンデータ記憶部15bとを備える。ここで、設定情報記憶部15aは、特許請求の範囲に記載の「共通設定情報記憶手段」に対応する。
設定情報記憶部15aは、複数のプライマリDNSに対してゾーンデータの転送要求を行なう順番が、自身が管理する複数のゾーンデータすべてに共通して設定された情報を記憶する。例えば、設定情報記憶部15aは、図4の(A)に示すように、問い合わせ先および問い合わせ順番としての「IP#0;IP#1」が記述されている「masters_list1」が「zone0」および「zone1」に共通して設定されたコンフィギュレーションファイルを、セカンダリDNS10の保守者から、入力部11を介して受け付けると、当該コンフィギュレーションファイルに記載されている情報を、プライマリDNSのリストとして記憶する。
すなわち、設定情報記憶部15aは、図4の(B)に示すように、ゾーンごとの問い合わせ先として、「ゾーン名:zone0.exam.jp」および「ゾーン名:zone1.exam.jp」のそれぞれにおいて、最初に「IPアドレス:IP#0」のプライマリDNS#0に問い合わせを行ない、続いて、「IPアドレス:IP#1」のプライマリDNS#1に問い合わせを行なうとする「設定順番:IP#0,IP#1」が、すべてのゾーン名に対応付けられたプライマリDNSのリストを記憶する。また、設定情報記憶部15aは、プライマリDNSのリストとして「ゾーン名」および「設定順番」とともに「優先プライマリ」の項目を対応付けて記憶し、初期状態においては、図4の(B)に示すように、「優先プライマリ」は「なし」とする「<null>」を記憶する。
ゾーンデータ記憶部15bは、後述するゾーン転送処理部16aがプライマリDNS#0またはプライマリDNS#1から取得したゾーンデータを記憶する。
処理部16は、OS(Operating System)などの制御プログラム、各種の処理手順などを規定したプログラムおよび所要データを格納するための内部メモリを有し、これらによって種々の処理を実行し、特に本発明に密接に関連するものとしては、図3に示すように、ゾーン転送処理部16aと、優先プライマリ登録部16bと、名前解決処理部16cとを備える。ここで、ゾーン転送処理部16aは、特許請求の範囲に記載の「転送処理手段」に対応し、優先プライマリ登録部16bは、同じく「登録手段」に対応する。
ゾーン転送処理部16aは、優先プライマリが登録されていないゾーンデータにおいて、設定情報記憶部15aが記憶するプライマリDNSのリストにおける「設定順番」に基づいてプライマリDNS#0、プライマリDNS#1の順に、ゾーン転送の要求を送信する。
また、ゾーン転送処理部16aは、後述する優先プライマリ登録部16bによって優先プライマリとしてのプライマリDNSが、プライマリDNSのリストに登録されているゾーンデータに関しては、当該プライマリDNSに対して、ゾーン転送の要求を最初に送信する。
また、ゾーン転送処理部16aは、後述する優先プライマリ登録部16bによってプライマリとしてのプライマリDNSが、プライマリDNSのリストから削除されたゾーンデータに関しては、設定情報記憶部15aが記憶するプライマリDNSのリストにおける「設定順番」に基づいてプライマリDNS#0、プライマリDNS#1の順に、ゾーン転送の要求を送信する。
ここで、ゾーン転送処理部16aは、ゾーン転送の要求時には、プライマリDNSに対してSOA(Start of Authority)要求のクエリを送信し、プライマリDNSからSOA応答を受信した場合に、自身が保持しているゾーンデータとの差分情報のみを転送するIXFR(Incremental Zone Transfer)の要求を、プライマリDNSに対して送信する。そして、ゾーン転送処理部16aは、プライマリDNSから、転送処理を行なったことを表す「NOERROR」を含むIXFR応答を受信して、更新されたゾーンデータを取得した場合は、ゾーンデータ記憶部15bに更新されたゾーンデータを格納して転送処理を終了する。
差分情報が転送されなかった場合(例えば、プライマリDNSが、IXFRに未対応の場合)、ゾーン転送処理部16aは、すべてのゾーンデータを転送するAXFR(A request for a transfer of an entire zone)の要求を、プライマリDNSに対して送信し、転送処理を行なったことを表す「NOERROR」のAXFR応答を受信して、更新されたゾーンデータを取得した場合は、ゾーンデータ記憶部15bに更新されたゾーンデータを格納して転送処理を終了する。なお、AXFRに失敗した場合、ゾーン転送処理部16aは、その旨を保守者に報知するためのメッセージを、出力部12にて出力して転送処理を終了する。
優先プライマリ登録部16bは、SOA応答を送信し、さらにIXFR応答もしくはAXFR応答によって対応するゾーンデータを送信したプライマリDNSを、優先プライマリとして登録する。
例えば、優先プライマリ登録部16bは、図4の(C)に示すように、「zone0」のゾーンデータを送信したプライマリDNS#0を、「ゾーン名:zone0.exam.jp」のゾーンデータの転送処理を再度行なう際の優先プライマリであるとして、リストにおける「ゾーン名:zone0.exam.jp」に対応する「優先プライマリ」に、プライマリDNS#0の「IPアドレス:IP#0」を登録する。また、優先プライマリ登録部16bは、「zone1」のゾーンデータを送信したプライマリDNS#1を、「ゾーン名:zone1.exam.jp」のゾーンデータの転送処理を再度行なう際の優先プライマリであるとして、リストにおける「ゾーン名:zone1.exam.jp」に対応する「優先プライマリ」に、プライマリDNS#1の「IPアドレス:IP#1」を登録する。
ここで、優先プライマリ登録部16bは、優先プライマリとして登録されているプライマリDNSに対して、対応するゾーンデータのゾーン転送を最初に要求して、当該プライマリDNSから応答を得られない場合は、優先プライマリとしての登録を削除する。
例えば、「zone1」において予め設定された秒単位の更新間隔が経過すると、ゾーン転送処理部16aは、図4の(C)に示すリストを参照して、優先プライマリであるプライマリDNS#1へ、最初に「zone1」のゾーン転送を要求する問い合わせを行なうが、ここで、プライマリDNS#1が故障している、もしくはプライマリDNS#1とセカンダリDNSとの間を接続するネットワークに障害が発生しているために、プライマリDNS#1からのSOA応答が受信されず、「zone1」のゾーン転送に失敗したとする。
この場合、優先プライマリ登録部16bは、図4の(D)に示すように、プライマリDNSのリストにおいて、「ゾーン名:zone1.exam.jp」に対応する「優先プライマリ」に登録されているプライマリDNS#1の「IPアドレス:IP#1」を削除する。
優先プライマリの削除処理が行なわれた場合、ゾーン転送処理部16aは、優先プライマリとしての登録が削除されたプライマリDNSに対して転送要求を行なったゾーンデータの転送要求を、再度、プライマリDNSのリストにおける「設定順番」に基づいて、プライマリDNS#0、プライマリDNS#1それぞれに対して順番に行なう。
なお、ゾーン転送処理部16aは、優先プライマリの登録削除後に、「設定順番」に基づいて行なったゾーン転送にも失敗した場合は、その旨を保守者に報知するメッセージを、出力部12を介して出力する。
名前解決処理部16cは、クライアント装置30から「zone0.exam.jp」や「zone1.exam.jp」の名前解決処理要求を受け付けた場合に、ゾーンデータ記憶部15bが記憶するゾーンデータを参照して、「zone0.exam.jp」や「zone1.exam.jp」のIPアドレスを取得して、取得したIPアドレスをクライアント装置30に送信する。
[実施例1におけるセカンダリDNSの優先プライマリ登録処理の手順]
次に、図5を用いて、実施例1におけるセカンダリDNS10の優先プライマリ登録処理を説明する。図5は、実施例1におけるセカンダリDNSの優先プライマリ登録処理を説明するためのシーケンス図である。
なお、以下では、セカンダリDNS10が、優先プライマリが未登録状態の「ゾーンデータ:zone1」の転送処理において、優先プライマリが登録される場合について説明する。また、セカンダリDNS10において、ゾーンデータのSOA要求の再送間隔が「T1」秒として、同一プライマリDNSへの再送回数が「1回」として設定されており、さらに、プライマリDNS#1が「IXFR」未対応であり、「AXFR」に対応している場合について説明する。
図5に示すように、実施例1におけるセカンダリDNS10が備えるゾーン転送処理部16aは、「ゾーンデータ:zone1」の更新間隔が経過すると、設定情報記憶部15aが記憶するプライマリDNSのリストにおける「設定順番」を参照して、プライマリDNS#0に対し、「ゾーンデータ:zone1」のSOA要求を送信する(ステップS501)。また、実施例1におけるセカンダリDNS10の初期起動時においても、ゾーン転送処理部16aは、設定情報記憶部15aが記憶するプライマリDNSのリストにおける「設定順番」を参照して、プライマリDNS#0に対し、「ゾーンデータ:zone1」のSOA要求を送信する。ここで、セカンダリDNS10は、プライマリDNS#0からSOA応答がないまま、「T1」秒が経過した場合は、再度、プライマリDNS#0に対し、「ゾーンデータ:zone1」のSOA要求を送信する(ステップS502)。
そして、ゾーン転送処理部16aは、「T1」秒が経過しても、プライマリDNS#0からのSOA応答が受信されず、また、プライマリDNS#0に対しSOA要求の再送を既に1回行なっているので、設定情報記憶部15aが記憶するプライマリDNSのリストにおける「設定順番」を参照して、プライマリDNS#1に対し、「ゾーンデータ:zone1」のSOA要求を送信する(ステップS503)。なお、図には示さないが、セカンダリDNS10は、プライマリDNS#0から、他のプライマリDNSに委任して下さいとの委任応答、もしくはエラー応答を受信した場合は、ステップS503における処理を行なう。
この場合、プライマリDNS#1は、「ゾーンデータ:zone1」を管理しているので、SOA応答をセカンダリDNS10に対して送信し(ステップS504)、SOA応答を受信したゾーン転送処理部16aは、IXFR要求を、SOA応答を送信したプライマリDNS#1に対して送信する(ステップS505)。ここで、ゾーン転送処理部16aは、IXFR応答が受信されないことから、IXFRに失敗したと判断し(ステップS506)、プライマリDNS#1に対して、AXFR要求を送信する(ステップS507)。なお、ゾーン転送処理部16aは、プライマリDNS#1から、IXFR要求に対応する機能は実装していないとする応答(NOTIMP)を受信した場合も、IXFRに失敗したと判断する。
ここで、プライマリDNS#1は、AXFRに対応しているので、AXFR応答をセカンダリDNS10に対して送信し(ステップS508)、ゾーン転送処理部16aは、最新の「ゾーンデータ:zone1」を受信して、優先プライマリ登録部16bは、プライマリDNS#1を優先プライマリとして登録して(ステップS509)、登録処理を終了する。
[実施例1におけるセカンダリDNSの優先プライマリ登録後における転送処理の手順]
続いて、図6を用いて、実施例1におけるセカンダリDNS10の優先プライマリ登録後における転送処理を説明する。図6は、実施例1におけるセカンダリDNSの優先プライマリ登録後における転送処理を説明するためのシーケンス図である。
なお、以下では、セカンダリDNS10が、「ゾーンデータ:zone1」の優先プライマリとして、プライマリDNS#1のIPアドレス「IP#1」を登録したのちに、最新の「ゾーンデータ:zone1」をプライマリDNS#1から取得する場合について説明する。また、図5を用いて説明した場合と同様に、プライマリDNS#1が「IXFR」未対応であり、「AXFR」に対応している場合について説明する。
図6に示すように、実施例1におけるセカンダリDNS10が備えるゾーン転送処理部16aは、「ゾーンデータ:zone1」の更新間隔が経過すると、設定情報記憶部15aが記憶するプライマリDNSのリストにおける「優先プライマリ」を参照して、プライマリDNS#1に対し、「ゾーンデータ:zone1」のSOA要求を送信する(ステップS601)。プライマリDNS#1は、「ゾーンデータ:zone1」を管理しているので、SOA応答をセカンダリDNS10に対して送信し(ステップS602)、SOA応答を受信したゾーン転送処理部16aは、IXFR要求を、SOA応答を送信したプライマリDNS#1に対して送信する(ステップS603)。
ここで、ゾーン転送処理部16aは、IXFR応答が受信されないことから、IXFRに失敗したと判断し(ステップS604)、プライマリDNS#1に対して、AXFR要求を送信する(ステップS605)。なお、ゾーン転送処理部16aは、プライマリDNS#1から、IXFR要求に対応する機能は実装していないとする応答(NOTIMP)を受信した場合も、IXFRに失敗したと判断する。
ここで、プライマリDNS#1は、AXFRに対応しているので、AXFR応答をセカンダリDNS10に対して送信し(ステップS606)、ゾーン転送処理部16aは、最新の「ゾーンデータ:zone1」を受信して、ゾーンデータの転送処理を終了する。
[実施例1におけるセカンダリDNSの優先プライマリ登録削除処理から再転送処理にいたる処理の手順]
続いて、図7を用いて、実施例1におけるセカンダリDNS10の優先プライマリ登録削除処理から再転送処理にいたる処理を説明する。図7は、実施例1におけるセカンダリDNSの優先プライマリ登録削除処理から再転送処理にいたる処理を説明するためのシーケンス図である。
なお、以下では、セカンダリDNS10が、「ゾーンデータ:zone1」の優先プライマリとして、プライマリDNS#1のIPアドレス「IP#1」を登録したのちに、最新の「ゾーンデータ:zone1」をプライマリDNS#1から取得できない場合について説明する。また、図5を用いて説明した場合と同様に、セカンダリDNS10において、ゾーンデータのSOA要求の再送間隔が「T1」秒として、同一プライマリDNSへの再送回数が「1回」として設定されている場合について説明する。
図7に示すように、実施例1におけるセカンダリDNS10が備えるゾーン転送処理部16aは、「ゾーンデータ:zone1」の更新間隔が経過すると、設定情報記憶部15aが記憶するプライマリDNSのリストにおける「優先プライマリ」を参照して、プライマリDNS#1に対し、「ゾーンデータ:zone1」のSOA要求を送信する(ステップS701)。ここで、プライマリDNS#1が故障している、もしくはプライマリDNS#1とセカンダリDNSとの間を接続するネットワークに障害が発生しているために、プライマリDNS#1からのSOA応答が受信されないまま、「T1」秒が経過した場合は、再度、プライマリDNS#1に対し、「ゾーンデータ:zone1」のSOA要求を送信する(ステップS702)。なお、ゾーン転送に失敗する場合としては、「zone1」の設定先のプライマリDNSがプライマリDNS#1から変更された場合もある。
そして、ゾーン転送処理部16aにおいて、「T1」秒が経過しても、プライマリDNS#1からのSOA応答が受信されず、また、プライマリDNS#1に対しSOA要求の再送を既に1回行なっていることから、優先プライマリ登録部16bは、プライマリDNS#1を優先プライマリとする情報を削除し(ステップS703)、ゾーン転送処理部16aは、設定情報記憶部15aが記憶するプライマリDNSのリストにおける「設定順番」を参照して、プライマリDNS#0に対し、「ゾーンデータ:zone1」のSOA要求を送信する(ステップS704)。ここで、セカンダリDNS10は、プライマリDNS#0からSOA応答がないまま、「T1」秒が経過した場合は、再度、プライマリDNS#0に対し、「ゾーンデータ:zone1」のSOA要求を送信する(ステップS705)。
そして、ゾーン転送処理部16aは、「T1」秒が経過しても、プライマリDNS#0からのSOA応答が受信されず、また、プライマリDNS#0に対しSOA要求の再送を既に1回行なっているので、設定情報記憶部15aが記憶するプライマリDNSのリストにおける「設定順番」を参照して、プライマリDNS#1に対し、「ゾーンデータ:zone1」のSOA要求を送信する(ステップS706)。
この際、プライマリDNS#1の故障、もしくはプライマリDNS#1とセカンダリDNSとの間を接続するネットワークの障害が復旧していないことから、ゾーン転送処理部16aは、プライマリDNS#1からのSOA応答を受信しない状態で「T1」秒が経過すると、プライマリDNS#1に対し、「ゾーンデータ:zone1」のSOA要求を、再度、送信する(ステップS707)。
そして、ゾーン転送処理部16aは、「T1」秒が経過しても、プライマリDNS#1からのSOA応答が受信されず、また、プライマリDNS#1に対しSOA要求の再送を既に1回行なっているので、「ゾーンデータ:zone1」の転送に失敗したと判断し、転送失敗とするメッセージを出力部12において出力し(ステップS708)、転送処理を終了する。
[実施例1におけるセカンダリDNSの処理の手順]
続いて、図8を用いて、実施例1におけるセカンダリDNS10の全体的な処理の流れについて説明する。図8は、実施例1におけるセカンダリDNSの処理を説明するための図である。なお、以下では、セカンダリDNS10の保守者が、コンフィギュレーションファイルを入力し、設定情報記憶部15aにおいて、プライマリDNSのリストが格納された後の処理について説明する。
図8に示すように、実施例1におけるセカンダリDNS10は、例えば、「ゾーンデータ:zone1」のゾーン転送処理を開始する契機となると(ステップS801肯定)、ゾーン転送処理部16aは、設定情報記憶部15aが記憶するプライマリDNSのリストを参照して、「ゾーン名:zone1.exam.jp」において「優先プライマリ」が登録されているか否かを判断する(ステップS802)。
ここで、設定情報記憶部15aが記憶するプライマリDNSのリストを参照して、「ゾーン名:zone1.exam.jp」において「優先プライマリ」が登録されている場合(ステップS802肯定)、ゾーン転送処理部16aは、優先プライマリとして登録されているプライマリDNSに対して、ゾーン転送を要求し(ステップS803)、ゾーン転送に成功したか否かを判断する(ステップS804)。なお、ステップS803においては、設定された再送間隔をおいて、再送回数分のSOA要求を行ない、ステップS804においては、SOA応答を受信した否か、また、SOA応答を受信した場合は、IXFR応答もしくはAXFR応答を受信したか否かを判断する。
ゾーン転送に成功した場合(ステップS804肯定)、ゾーン転送処理部16aは、転送された最新のゾーンデータを、ゾーンデータ記憶部15bに格納して、処理を終了する。
これに反して、ゾーン転送に失敗した場合(ステップS804否定)、優先プライマリ登録部16bは、優先プライマリの情報を削除する(ステップS805)。そして、ゾーン転送処理部16aは、ゾーン転送要求を行なったプライマリDNSを初期化し、すなわち、優先プライマリとして登録されているプライマリDNSにゾーン転送要求を行なった履歴を削除して(ステップS806)、設定情報記憶部15aが記憶するプライマリDNSのリストにおける「設定順番」を参照して、ゾーン転送要求(SOA要求)を送信していないプライマリDNSがあるか否かを判定する(ステップS807)。
また、設定情報記憶部15aが記憶するプライマリDNSのリストを参照して、「ゾーン名:zone0.exam.jp」において「優先プライマリ」が登録されていない場合も(ステップS802否定)、設定情報記憶部15aが記憶するプライマリDNSのリストにおける「設定順番」を参照して、ゾーン転送要求(SOA要求)を送信していないプライマリDNSがあるか否かを判定する(ステップS807)。
ここで、ゾーン転送要求(SOA要求)を送信していないプライマリDNSがある場合(ステップS807肯定)、ゾーン転送処理部16aは、設定順番に基づいて、対応するプライマリDNSへゾーン転送を要求し(ステップS808)、ゾーン転送に成功したか否かを判断する(ステップS809)。
ここで、設定された再送間隔をおいて、再送回数分のSOA要求を行なって、ゾーン転送に失敗した場合(ステップS809否定)、ステップS807に戻って、ゾーン転送要求(SOA要求)を送信していないプライマリDNSがあるか否かを判断する。
これに反して、ゾーン転送に成功した場合(ステップS809肯定)、優先プライマリ登録部16bは、当該プライマリDNSのIPアドレスを、優先プライマリの情報として登録し(ステップS810)、処理を終了する。なお、この際、ゾーン転送処理部16aは、取得したゾーンデータをゾーンデータ記憶部15bに格納する。
一方、ゾーン転送要求(SOA要求)を送信していないプライマリDNSが他にない場合(ステップS807否定)、ゾーン転送処理部16aは、ゾーン転送要求を一度送信したプライマリDNSに対する再送処理回数が、再送設定回数に達しているか否かを判断する(ステップS811)。
ここで、再送処理回数が、再送設定回数に達していない場合(ステップS811否定)、ゾーン転送処理部16aは、ゾーン転送要求を一度送信したプライマリDNSに対して、ゾーン転送要求の再送処理を行ない(ステップS812)、ステップS809に戻って、ゾーン転送に成功するか否かを判断する。
これに反して、再送処理回数が、再送設定回数に達している場合(ステップS811肯定)、ゾーン転送処理部16aは、ゾーン転送処理失敗のメッセージを出力部12において出力して(ステップS813)、処理を終了する。
なお、実施例1におけるセカンダリDNS10は、上述した処理を行なって、最新のゾーンデータを取得して、クライアント装置30からの要求に従って、名前解決処理部16cにおいて、名前解決を実施する。また、実施例1におけるセカンダリDNS10は、自装置が起動され、設定情報記憶部15aにおいて、プライマリDNSのリストが格納された後においても、図8に示す処理を実行する。
[実施例1の効果]
上記したように、実施例1によれば、複数のプライマリDNSに対してゾーンデータの転送要求を行なう順番が、セカンダリDNS自身が管理する複数のゾーンデータすべてに共通して設定された情報(プライマリDNSのリスト)を記憶し、プライマリDNSのリストに基づいて、複数のプライマリDNSそれぞれに対して順番にゾーンデータの転送要求を行なって、複数のプライマリDNSいずれかより、対応するゾーンデータを取得するゾーン転送を行い、ゾーン転送の要求に応答して対応するゾーンデータを送信したプライマリDNSを、当該ゾーンデータの転送処理を再度行なう際に、ゾーン転送の要求を最初に優先して行なう優先プライマリとして登録し、優先プライマリが登録されているゾーンデータの転送処理を行なう際には、優先プライマリとしてのプライマリDNSに当該ゾーンデータの転送要求を最初に優先して行なうので、ゾーン転送の処理ごとに、コンフィギュレーションファイルの先頭に設定されたプライマリDNSにゾーン転送の要求が集中することを回避でき、ゾーン単位のゾーン転送を効率的に実施することが可能となる。
また、実施例1によれば、ゾーンデータの転送要求が最初に行なわれた優先プライマリとして登録されたプライマリDNSから当該ゾーンデータが取得されない場合は、当該プライマリDNSを優先プライマリとする登録を削除し、優先プライマリとしての登録が削除されたプライマリDNSに対して行なったゾーンデータの転送要求を、再度、プライマリDNSのリストにおける設定順番に基づいて、複数のプライマリDNSそれぞれに対して順番に行なうので、優先プライマリとして登録されたプライマリDNSの故障などが発生して、ゾーンデータが取得されない場合にも、保守者がこれに対処することなく、自動的に複数のプライマリDNSそれぞれに対してゾーンデータの転送要求が行なわれるので、保守者の負担を軽減することができ、ゾーン単位のゾーン転送を効率的に実施することが可能となる。