## page was renamed from DNS/1/RFC/1034/4 ## page was renamed from DNS/基礎知識/RFC/1034/4 ## page was renamed from DNS/RFC/1034/4 ## page was renamed from DNS/RFC1034/4 #pragma section-numbers off <> 目次より 4. ネームサーバ NAME SERVERS [[#10|4.1. はじめに]] Introduction<
> [[../4.2#11|4.2. データベースをゾーンに分ける方法]] How the database is divided into zones<
> [[../4.2#12|4.2.1. 技術的事項]] Technical considerations<
> [[../4.2#13|4.2.2. 管理上の事項]] Administrative considerations<
> [[../4.3#14|4.3. ネームサーバの内部構成]] Name server internals<
> [[../4.3#15|4.3.1. 問合せと返答]] Queries and responses<
> [[../4.3#16|4.3.2. アルゴリズム]] Algorithm<
> [[../4.3#17|4.3.3. ワイルドカード]] Wildcards<
> [[../4.3#18|4.3.4. 否定返答をキャッシュ(任意実装)]] Negative response caching (Optional)<
> [[../4.3#19|4.3.5. ゾーンの維持管理と転送]] Zone maintenance and transfers<
> = 4. ネームサーバ = <> == 4.1. はじめに Introduction == {{{ Name servers are the repositories of information that make up the domain database. The database is divided up into sections called zones, which are distributed among the name servers. While name servers can have several optional functions and sources of data, the essential task of a name server is to answer queries using data in its zones. By design, name servers can answer queries in a simple manner; the response can always be generated using only local data, and either contains the answer to the question or a referral to other name servers ';closer'; to the desired information. }}} ネームサーバはドメインデータベースを構成する情報の保管所である。 データベースはゾーンと呼ばれる部分に分割されていて、 ゾーンはネームサーバ間に分散されている。 ネームサーバは実装任意の機能とデータ源を持てるが、 本来の仕事はそのゾーン内にあるデータを使って問合せに答える事である。 設計として、 ネームサーバは単純な方法で問合せに答えることができる; 返答はローカルデータだけを使って常に生成できる。 そして、返答は問合せに対する答か、 求めている情報に「より近い」ネームサーバへの参照を含んでいる。 {{{ A given zone will be available from several name servers to insure its availability in spite of host or communication link failure. By administrative fiat, we require every zone to be available on at least two servers, and many zones have more redundancy than that. }}} ホストや通信リンクに障害があっても利用可能となるように ゾーンは複数のネームサーバから利用可能とすべきである。 管理上の命令として、ゾーンは 2つ以上のサーバで利用可能であることを要求している。 そして、多くのゾーンはより多くの冗長性を持っている。 {{{ A given name server will typically support one or more zones, but this gives it authoritative information about only a small section of the domain tree. It may also have some cached non-authoritative data about other parts of the tree. The name server marks its responses to queries so that the requester can tell whether the response comes from authoritative data or not. }}} ネームサーバはゾーン群をサポートするが、 これにより、ドメイン木のほんの一部だけに権威ある情報を持つ。 木の他の部分についてはキャッシュされた権威のないデータを持つことがある。 返答が権威あるデータから来るものかどうか、問合せ側で判定できるように ネームサーバは返答に印を付ける。 <> == 4.2. データベースをゾーンに分ける方法 How the database is divided into zones == {{{ The domain database is partitioned in two ways: by class, and by ';cuts'; made in the name space between nodes. }}} ドメインデータベースの分割法は二つある:クラスによる方法と名前空間を ノードの間で「切る」という方法と。 {{{ The class partition is simple. The database for any class is organized, delegated, and maintained separately from all other classes. Since, by convention, the name spaces are the same for all classes, the separate classes can be thought of as an array of parallel namespace trees. Note that the data attached to nodes will be different for these different parallel classes. The most common reasons for creating a new class are the necessity for a new data format for existing types or a desire for a separately managed version of the existing name space. }}} クラスによる分割は単純だ。 [以下、翻訳は省略] {{{ Within a class, ';cuts'; in the name space can be made between any two adjacent nodes. After all cuts are made, each group of connected name space is a separate zone. The zone is said to be authoritative for all names in the connected region. Note that the ';cuts'; in the name space may be in different places for different classes, the name servers may be different, etc. }}} ひとつのクラスの中では名前空間の「切断」は任意の隣接したノードの間で行ってよい。 切断が行われた後に、連結されている名前空間のグループはそれぞれがひとつのゾーンとなる。 ゾーンは連結されている領域に対しての権威をもつと言われる。 名前空間での「切断」は異なるクラスでは異なる場所にあるかもしれない。 また、ネームサーバも異なることがある、など。 {{{ These rules mean that every zone has at least one node, and hence domain name, for which it is authoritative, and all of the nodes in a particular zone are connected. Given, the tree structure, every zone has a highest node which is closer to the root than any other node in the zone. The name of this node is often used to identify the zone. }}} これらの規則が意味するのは、 各ゾーンはドメイン名となるノードを含むひとつ以上のノードをもつこと、 ゾーンはそれらのドメイン名に対して権威をもつこと、 そして、ゾーン中のすべてのノードは連結されているということである。 従って、ツリー構造をしているおのおののゾーンではゾーン中の他のノードよりも ルートにより近い最上位ノードが存在する。 このノードの名前がゾーンそのものを指すためによく使われる。 {{{ It would be possible, though not particularly useful, to partition the name space so that each domain name was in a separate zone or so that all nodes were in a single zone. Instead, the database is partitioned at points where a particular organization wants to take over control of a subtree. Once an organization controls its own zone it can unilaterally change the data in the zone, grow new tree sections connected to the zone, delete existing nodes, or delegate new subzones under its zone. }}} 特に役だつものではないが、名前空間を分割して 各ドメイン名が全て別のゾーンとすることも、 全てのノードを含むひとつのゾーンとすることも可能である。 それよりも、データベースは 組織が制御をひきとりたいような部分木に分れるように分割される。 組織がそれ自身のゾーンを制御しはじめれば、 ゾーン内のデータを独自に変更したり、 ゾーンに新しい木を増やしたり、既存のノードを削除したり、 自分の中に新しいサブゾーンを作って委譲したりすることができる。 {{{ If the organization has substructure, it may want to make further internal partitions to achieve nested delegations of name space control. In some cases, such divisions are made purely to make database maintenance more convenient. }}} 組織が下部構造を持つなら、 名前空間の制御を委譲するということを多段に行い、 さらに分割を行いたいであろう。 データベース管理がより簡単になるという 理由だけでこのような分割が行われることがある。 <> 4.2.1. 技術的な考慮 Technical considerations {{{ The data that describes a zone has four major parts: }}} ゾーンを記述するデータは大きく四つに分けられる: {{{ - Authoritative data for all nodes within the zone. }}} - ゾーン内の全ノードの権威あるデータ。 {{{ - Data that defines the top node of the zone (can be thought of as part of the authoritative data). }}} - ゾーンの最上位ノードを定義するデータ (権威あるデータの一部であると考えられる)。 {{{ - Data that describes delegated subzones, i.e., cuts around the bottom of the zone. }}} - 委譲されたサブゾーンを記述するデータ、 すなわち、ゾーンの最下部での切断。 {{{ - Data that allows access to name servers for subzones (sometimes called ';glue'; data). }}} - サブゾーンのネームサーバへのアクセスを可能にするデータ (しばしば「グルー(のり)」と呼ばれる)。 {{{ All of this data is expressed in the form of RRs, so a zone can be completely described in terms of a set of RRs. Whole zones can be transferred between name servers by transferring the RRs, either carried in a series of messages or by FTPing a master file which is a textual representation. }}} ここのすべてのデータは RR という形で表現される。 そのためゾーンは RRs の集合を使って完全に記述できる。 ネームサーバ間のゾーン全体を転送の転送は RRs の転送によって、あるいは メッセージ列としての転送、 もしくはテキスト表現であるマスターファイルの FTP などで可能である。 {{{ The authoritative data for a zone is simply all of the RRs attached to all of the nodes from the top node of the zone down to leaf nodes or nodes above cuts around the bottom edge of the zone. }}} ゾーンの権威あるデータとは ゾーンのトップノードからリーフかゾーン下端の切断のすぐ上のノードまでの 全てのノードに付属する全ての RRs のことにすぎない。 {{{ Though logically part of the authoritative data, the RRs that describe the top node of the zone are especially important to the zone's management. These RRs are of two types: name server RRs that list, one per RR, all of the servers for the zone, and a single SOA RR that describes zone management parameters. }}} 論理的に言えば、権威あるデータの一部ではあるが、 ゾーンの最上位ノードを記述する RRs はゾーンの管理にとって特に重要である。 この資源レコードとは以下の二つのタイプである: ネームサーバ RRs (ゾーンのすべてのネームサーバを数えあげたもので、 ゾーンネームサーバ毎にひとつずつ)と、 ゾーン管理のパラメタを記述するSOA RR ひとつとである。 {{{ The RRs that describe cuts around the bottom of the zone are NS RRs that name the servers for the subzones. Since the cuts are between nodes, these RRs are NOT part of the authoritative data of the zone, and should be exactly the same as the corresponding RRs in the top node of the subzone. Since name servers are always associated with zone boundaries, NS RRs are only found at nodes which are the top node of some zone. In the data that makes up a zone, NS RRs are found at the top node of the zone (and are authoritative) and at cuts around the bottom of the zone (where they are not authoritative), but never in between. }}} ゾーンの下部にあって、ゾーンカットを記述している RRs は サブゾーンのネームサーバ名を指す NS RRs である。 切断はノード間でおきるので、 これらの RRs は当該ゾーンの権威あるデータの一部では「ない」。 そして、RRs はサブゾーンの最上位にある対応する RRs と 一致させなければならない。 ネームサーバというもの常にゾーン境界線と結び付いてるので、 NS RRs はゾーンの最上位ノードにだけつけるべきものである。 ゾーンを構成しているデータ中では、NS RRs は ゾーンの最上位ノードについている(権威がある)か、 ゾーンの底部のカットにある(権威はない)かであり、 中間にはあらわれない。 {{{ One of the goals of the zone structure is that any zone have all the data required to set up communications with the name servers for any subzones. That is, parent zones have all the information needed to access servers for their children zones. The NS RRs that name the servers for subzones are often not enough for this task since they name the servers, but do not give their addresses. In particular, if the name of the name server is itself in the subzone, we could be faced with the situation where the NS RRs tell us that in order to learn a name server's address, we should contact the server using the address we wish to learn. To fix this problem, a zone contains ';glue'; RRs which are not part of the authoritative data, and are address RRs for the servers. These RRs are only necessary if the name server's name is ';below'; the cut, and are only used as part of a referral response. }}} ゾーン構造の目標のひとつとして、 どのゾーンもそのサブゾーンのネームサーバとの交信に必要なすべてデータを 持つということがある。 すなわち、親ゾーンはその子ゾーンのサーバにアクセスするのに 必要な全ての情報を持つことである。 サブゾーンのサーバの名前を指す NS RRs はこの用途には不十分である。 それはサーバの名前は分ってもアドレスを示さないからである。 とりわけ、ネームサーバの名前がサブゾーンのものである場合には 「ネームサーバのアドレスを知るために、 知りたいところのアドレスを使ってそのネームサーバにアクセスしなければならない」 ということを NS RRs が示すという状況になってしまう。 この問題を解決するため、ゾーンは グルー RRs を持つ。 (グルーは権威あるデータの一部ではなくて、ネームサーバのアドレス RRs である。) これらの RRs はネームサーバの名前がカットより「下」にある時にだけ 必要であり、参照返答(referral)の一部としてだけ用いられる。 <> 4.2.2. 管理上の考慮 Administrative considerations {{{ When some organization wants to control its own domain, the first step is to identify the proper parent zone, and get the parent zone's owners to agree to the delegation of control. While there are no particular technical constraints dealing with where in the tree this can be done, there are some administrative groupings discussed in [RFC-1032] which deal with top level organization, and middle level zones are free to create their own rules. For example, one university might choose to use a single zone, while another might choose to organize by subzones dedicated to individual departments or schools. [RFC-1033] catalogs available DNS software an discusses administration procedures. }}} 組織が自身のドメインを管理しようとするときの最初の一歩は 正しく親ゾーンを知り、親ゾーンの所有者に管理を委譲してもらうよう 同意をとることである。 ドメイン木のどこで委譲してよいかに関しては特別な技術的制約はないが、 最上位組織を扱う[RFC-1032]で論じられている管理グループ分けは存在している。 さらに、中間レベルのゾーンは自身の規則を自由に作ってよい。 例えば、ある大学はゾーンをひとつだけ使うことを選ぶかもしれないし、 また別の大学は部門や各学校にサブゾーン専用に設けるやりかたを選ぶ かもしれない。 [RFC-1033]には利用可能なDNS ソフトウェアの一覧があり、 管理手順を論じている。 {{{ Once the proper name for the new subzone is selected, the new owners should be required to demonstrate redundant name server support. Note that there is no requirement that the servers for a zone reside in a host which has a name in that domain. In many cases, a zone will be more accessible to the internet at large if its servers are widely distributed rather than being within the physical facilities controlled by the same organization that manages the zone. For example, in the current DNS, one of the name servers for the United Kingdom, or UK domain, is found in the US. This allows US hosts to get UK data without using limited transatlantic bandwidth. }}} 新しいサブゾーンにふさわしい名前が選ばれたら、 新しい(ゾーン)所有者は複数のネームサーバを用意できることを 示すべきである。 ゾーンのためのサーバがそのドメインの名前を持ったホスト上にある 必要はないということに注意せよ。 多くの場合、ゾーンを維持する組織が管理する施設内にサーバがあるより、 広く分散されている方がインターネット一般からアクセスしやすいだろう。 例えば、現在の DNSではイギリス、つまり UK ドメインのための ネームサーバのひとつは US 内にある。 これにより、US のホストは 帯域の限定された太西洋横断回線を使わなくとも、 UK のデータを得られる。 {{{ As the last installation step, the delegation NS RRs and glue RRs necessary to make the delegation effective should be added to the parent zone. The administrators of both zones should insure that the NS and glue RRs which mark both sides of the cut are consistent and remain so. }}} インストールの最後のステップとして、親ゾーンには 委譲が効果をもつのに必要な委譲のための NS RRs と グルー RRs を 加えなければならない。 両方のゾーンの管理者は カットの両面を表わす NS と グルー RRs が一致していて、 いつまでもそうあり続けることを保証しなければならない。 <> == 4.3. ネームサーバの内部動作 Name server internals == <> 4.3.1. 問合せと返答 Queries and responses {{{ The principal activity of name servers is to answer standard queries. Both the query and its response are carried in a standard message format which is described in [RFC-1035]. The query contains a QTYPE, QCLASS, and QNAME, which describe the types and classes of desired information and the name of interest. }}} ネームサーバの主たる動作は標準問合せに答える事である。 問合せとその返答の両者は[RFC-1035]に記述された標準メッセージ形式に従う。 質問はQTYPE、QCLASS、QNAMEひとつずつを含み、 これらは求める情報のタイプ、クラスと興味がある名前を記述する。 {{{ The way that the name server answers the query depends upon whether it is operating in recursive mode or not: }}} ネームサーバが問合せに答える方法は 再帰モードで動作しているかどうかによる: {{{ - The simplest mode for the server is non-recursive, since it can answer queries using only local information: the response contains an error, the answer, or a referral to some other server ';closer'; to the answer. All name servers must implement non-recursive queries. }}} - サーバとして一番単純なのは非再帰モードである。 ローカル情報だけを使って問合せに答えることができるためだ: 返答にはエラーか、答か、「より近い」サーバへの参照かの三種がある。 どのネームサーバも非再帰問合せはかならず実装しなければならない。 {{{ - The simplest mode for the client is recursive, since in this mode the name server acts in the role of a resolver and returns either an error or the answer, but never referrals. This service is optional in a name server, and the name server may also choose to restrict the clients which can use recursive mode. }}} - クライアントから見たとき、最も単純なモードは再帰モードである。 このモードではネームサーバがリゾルバの役割をはたしてくれるから。 それはエラーか答かを返す。けして参照は返さない。 ネームサーバでのこのサービスは実装任意である。 また、ネームサーバは再帰モードを利用できるクライアントを制限してよい。 {{{ Recursive service is helpful in several situations: }}} 再帰サービスが役立ついくつかの状況は: {{{ - a relatively simple requester that lacks the ability to use anything other than a direct answer to the question. }}} - 質問への直接の答以外を扱う能力に欠ける単純な要求者 {{{ - a request that needs to cross protocol or other boundaries and can be sent to a server which can act as intermediary. }}} - プロトコルやその他の境界を越える必要があり、 媒介できる出来るサーバへ送って構わないリクエスト {{{ - a network where we want to concentrate the cache rather than having a separate cache for each client. }}} - クライアント毎にキャッシュを持たせないで、集中キャッシュを 使いたいネットワーク。 {{{ Non-recursive service is appropriate if the requester is capable of pursuing referrals and interested in information which will aid future requests. }}} 非再帰サービスが適切なのは参照(referral) を利用することができて、 将来のリクエストの助けになる情報に興味がある要求者の場合である。 {{{ The use of recursive mode is limited to cases where both the client and the name server agree to its use. The agreement is negotiated through the use of two bits in query and response messages: }}} 再帰モードを使用するのは クライアントとネームサーバの両方が使用に同意することが条件になる。 合意の交渉には問合せと返答メッセージ中の 2ビットが使用される。 {{{ - The recursion available, or RA bit, is set or cleared by a name server in all responses. The bit is true if the name server is willing to provide recursive service for the client, regardless of whether the client requested recursive service. That is, RA signals availability rather than use. }}} - 再帰可能(RAビット)はネームサーバの全ての返答で設定/クリアされる。 このビットはクライアントが再帰サービスを求めたかどうかに関わらず、 サーバがサービスを提供できるなら 1 である。つまり、RA は使うと いうより使えることを示す。 {{{ - Queries contain a bit called recursion desired or RD. This bit specifies specifies whether the requester wants recursive service for this query. Clients may request recursive service from any name server, though they should depend upon receiving it only from servers which have previously sent an RA, or servers which have agreed to provide service through private agreement or some other means outside of the DNS protocol. }}} - 問合せは再帰要望(RD)と呼ばれるビットを含む。 このビットは問合せが再帰サービスを望んでいるかを示す。 クライアントはサーバに再帰的サービスを求めるのはよいが、 過去に RAが設定された返答をもらったサーバか 別途 DNS プロトコル外の何らかの方法で合意したサーバだけから 再帰サービスの返事を受け取れると思うべきである。 {{{ The recursive mode occurs when a query with RD set arrives at a server which is willing to provide recursive service; the client can verify that recursive mode was used by checking that both RA and RD are set in the reply. Note that the name server should never perform recursive service unless asked via RD, since this interferes with trouble shooting of name servers and their databases. }}} RD が設定された問合せがサーバに届き、 サーバが再帰サービスを提供している場合に再帰モードが有効になる; クライアントは返答で RAとRDの両方のビットが設定されていることを調べて、 再帰モードが使われたことを確認できる。 ネームサーバは RD により要請がない場合には再帰サービスを実行すべきではない ことに注意せよ。 再帰はネームサーバやそのデータベースの障害検出の邪魔になるからである。 {{{ If recursive service is requested and available, the recursive response to a query will be one of the following: }}} 再帰サービスが要請され、利用できる場合、再帰の返答は以下ようなものだ: {{{ - The answer to the query, possibly preface by one or more CNAME RRs that specify aliases encountered on the way to an answer. }}} - 問合せへの答、途中で遭遇したCNAME RRsが前についている 可能性がある。 {{{ - A name error indicating that the name does not exist. This may include CNAME RRs that indicate that the original query name was an alias for a name which does not exist. }}} - 名前が存在しないことを示す名前エラー。これは元の問合せ名が CNAME RR であって、存在しない名前の別名だった場合もありうる。 {{{ - A temporary error indication. }}} - 一時的エラー {{{ If recursive service is not requested or is not available, the non- recursive response will be one of the following: }}} 再帰サービスが要請されていないか、利用可能でない場合、非再帰の応答は 以下のどれかになる: {{{ - An authoritative name error indicating that the name does not exist. }}} - 名前が存在しないことを示す権威ある名前エラー {{{ - A temporary error indication. }}} - 一時的エラー {{{ - Some combination of: }}} - 以下のいずれかの組み合わせ:。 {{{ RRs that answer the question, together with an indication whether the data comes from a zone or is cached. }}} 答となる RRsと そのデータがゾーンからのものかキャッシュからのものかの区別 {{{ A referral to name servers which have zones which are closer ancestors to the name than the server sending the reply. }}} 求める名前により近い祖先のゾーンを持つネームサーバへの参照。 {{{ - RRs that the name server thinks will prove useful to the requester. }}} - 問合せ者に有用であろうとネームサーバが考えた RRs。 <> 4.3.2. アルゴリズム Algorithm {{{ The actual algorithm used by the name server will depend on the local OS and data structures used to store RRs. The following algorithm assumes that the RRs are organized in several tree structures, one for each zone, and another for the cache: }}} ネームサーバが実際に使うアルゴリズムは ローカルOSと資源レコードを保持するデータ構造に依存するだろう。 以下のアルゴリズムでは RRs は複数の木構造、 各ゾーン毎のものと、キャッシュに対応したもの、 として構成されていることを仮定している: {{{ 1. Set or clear the value of recursion available in the response depending on whether the name server is willing to provide recursive service. If recursive service is available and requested via the RD bit in the query, go to step 5, otherwise step 2. }}} 再帰サービスを提供するかどうかによって、返答の再帰可能値を設定する。 再帰サービスが可能であって、問合せの RD ビットにより再帰が求められているなら、 ステップ 5 へ行く。そうでなければステップ 2 へ。 {{{ 2. Search the available zones for the zone which is the nearest ancestor to QNAME. If such a zone is found, go to step 3, otherwise step 4. }}} 利用可能なゾーン内の QNAMEにもっとも近い祖先ゾーンを探せ。 このようなゾーンがあればステップ 3 へ、なければステップ 4 へ。 {{{ 3. Start matching down, label by label, in the zone. The matching process can terminate several ways: }}} ゾーン内でラベルをひとつずつ比較していく。 比較作業が終了するための条件にはいくつかある: {{{ a. If the whole of QNAME is matched, we have found the node. }}} a. QNAME全体が一致したら、目的のノードを見つけた。 {{{ If the data at the node is a CNAME, and QTYPE doesn't match CNAME, copy the CNAME RR into the answer section of the response, change QNAME to the canonical name in the CNAME RR, and go back to step 1. }}} ノードのデータがCNAMEであり QTYPEとCNAMEとが一致しないときは、 CNAME RR を返事の返答節にコピーし、 QNAMEを CNAME RR にある正規名で置き換えて、 ステップ1 に戻る。 {{{ Otherwise, copy all RRs which match QTYPE into the answer section and go to step 6. }}} そうでなければ、QTYPEと一致するすべての RRs を返答節にコピーし、 ステップ6 に行く。 {{{ b. If a match would take us out of the authoritative data, we have a referral. This happens when we encounter a node with NS RRs marking cuts along the bottom of a zone. }}} b. 権威あるデータでないところに到達したら、参照を得たことになる。 ゾーンの下端でカットを示す NS RRs に遭遇した時に発生する。 {{{ Copy the NS RRs for the subzone into the authority section of the reply. Put whatever addresses are available into the additional section, using glue RRs if the addresses are not available from authoritative data or the cache. Go to step 4. }}} サブゾーンの NS RRs を答の権威節へコピーせよ。 利用可能な全てのアドレスを付加節に置く。 権威のあるデータやキャッシュ中に必要なアドレスがないなら、 グルー RRs を使ってよい。 ステップ4に行く。 {{{ c. If at some label, a match is impossible (i.e., the corresponding label does not exist), look to see if a the ';*'; label exists. }}} c. どこかのラベルで比較ができなくなった(つまり対応するラベルが 存在しなくなった)なら、';*';ラベルがあるか調べる。 {{{ If the ';*'; label does not exist, check whether the name we are looking for is the original QNAME in the query or a name we have followed due to a CNAME. If the name is original, set an authoritative name error in the response and exit. Otherwise just exit. }}} ';*';ラベルがないなら、探しているのが元々の問合 せのQNAMEであるのか、CNAMEをたどって得た名前なのかを調べよ。 名前が元々の名前であれば、返答には権威ある名前エラーを設定、 終了する。そうでなければ単に終了する。 {{{ If the ';*'; label does exist, match RRs at that node against QTYPE. If any match, copy them into the answer section, but set the owner of the RR to be QNAME, and not the node with the ';*'; label. Go to step 6. }}} もし';*';ラベルが存在したら、そのノードのRRsをQTYPE と比較する。もしどれかの RRs が一致したら、それらを返答節 コピーする、ただし、RR の持主は ';*';を持つラベ ルではなくQNAMEにセットする。ステップ6へいく。 {{{ 4. Start matching down in the cache. If QNAME is found in the cache, copy all RRs attached to it that match QTYPE into the answer section. If there was no delegation from authoritative data, look for the best one from the cache, and put it in the authority section. Go to step 6. }}} キャッシュ内を探す。QNAMEがキャッシュで発見されたら、 それに付随する RRs のうち、QTYPEと一致するものを返答節へコピーする。 もし権威あるデータからの委譲がないときには、キャッシュの中から 最もいいものを探して、それを権威節に入れる。 ステップ6 へ行く。 {{{ 5. Using the local resolver or a copy of its algorithm (see resolver section of this memo) to answer the query. Store the results, including any intermediate CNAMEs, in the answer section of the response. }}} ローカルリゾルバを使うか、リゾルバのアルゴリズム(この文書のリゾル バの節を見よ)を使うかして問合せに答える。 途中に現われた CNAMEも含めて、結果を返事の返答節に置く。 {{{ 6. Using local data only, attempt to add other RRs which may be useful to the additional section of the query. Exit. }}} ローカルなデータだけを使って、有用そうなその他のRRsを 付加節に加える。終了する。 <> 4.3.3. ワイルドカード Wildcards {{{ In the previous algorithm, special treatment was given to RRs with owner names starting with the label ';*';. Such RRs are called wildcards. Wildcard RRs can be thought of as instructions for synthesizing RRs. When the appropriate conditions are met, the name server creates RRs with an owner name equal to the query name and contents taken from the wildcard RRs. }}} 前節のアルゴリズムで ';*'; ラベルで始まる所有者名をもつRRsには 特別な処置がなされた。 このような RRs はワイルドカードと呼ばれる。 ワイルドカード RRs は RRs を合成するための指示と考えらる。 適切な条件を満たす時、ネームサーバは問合せの名前と一致した所有者名をもち ワイルドカード RRs の内容をもつ RRs を生成する。 {{{ This facility is most often used to create a zone which will be used to forward mail from the Internet to some other mail system. The general idea is that any name in that zone which is presented to server in a query will be assumed to exist, with certain properties, unless explicit evidence exists to the contrary. Note that the use of the term zone here, instead of domain, is intentional; such defaults do not propagate across zone boundaries, although a subzone may choose to achieve that appearance by setting up similar defaults. }}} この機能はインターネットから別種のメールシステム(訳注:UUCP など)へ メールを転送するために使うゾーンを生成するのによく使われる。 そのゾーンに属する名前の問合せがサーバにやってきたら、 反対の指定がされているのでないかぎり、 どういう名前であろうとある属性をもって存在するというのが 一般的な考えである。 ここで、ドメインではなく、 ゾーンという言葉を使ったのは意図的であることに注意せよ; このようなデフォルトはゾーン境界を越えて伝わることはない。 ただし、サブゾーンは類似のデフォルトを設定することで、 そのように見えるようにするかもしれない。 {{{ The contents of the wildcard RRs follows the usual rules and formats for RRs. The wildcards in the zone have an owner name that controls the query names they will match. The owner name of the wildcard RRs is of the form ';*.';, where is any domain name. should not contain other * labels, and should be in the authoritative data of the zone. The wildcards potentially apply to descendants of , but not to itself. Another way to look at this is that the ';*'; label always matches at least one whole label and sometimes more, but always whole labels. }}} ワイルドカードRRsの中身は通常の RRs の規則と形式に従う。 ゾーン中のワイルドカードは適合する問合せ名を操作する所有者名を持つ。 ワイルドカード RRs の所有者名は ';*.';という形式であり、 ここで は任意のドメイン名である。 は他の * ラベルを含んではならず、 ゾーンの権威あるデータのものでなければならない。 ワイルドカードはの子孫にも適用される可能性があるが、 自身には適用されない。 別の見方をすると、 ';*';ラベルは 1つ以上のラベル(全体)に一致し、 ラベルの一部分には一致はしないということになる。 {{{ Wildcard RRs do not apply: }}} ワイルドカード RR は以下のものにはあてはまらない: {{{ - When the query is in another zone. That is, delegation cancels the wildcard defaults. }}} - 問合せが他のゾーンに対するものである。 つまり委譲があると、ワイルドカードデフォルトは効果がなくなる。 {{{ - When the query name or a name between the wildcard domain and the query name is know to exist. For example, if a wildcard RR has an owner name of ';*.X';, and the zone also contains RRs attached to B.X, the wildcards would apply to queries for name Z.X (presuming there is no explicit information for Z.X), but not to B.X, A.B.X, or X. }}} - 問合せ名の存在がすでに分っていたり、 ワールドカードドメインと問合せ名の間の名前の存在が分っているとき。 例えば、ワイルドカード RRs の所有者名が ';*.X';であり、 ゾーン内に B.XのRRsがある場合、 ワイルドカードは Z.X には適用される(Z.X の明示的情報はないものとして)が B.X, A.B.X, X などには適用されない。 {{{ A * label appearing in a query name has no special effect, but can be used to test for wildcards in an authoritative zone; such a query is the only way to get a response containing RRs with an owner name with * in it. The result of such a query should not be cached. }}} 問合せ名中に現われる * ラベルは特別な効果を持たないが、 権威あるなゾーン中でワイルドカードのテストをするときに使える; このような問合せは所有者名に * を含む RRs の返答を得る唯一の方法である。 このような問合せの結果はキャッシュしてはならない。 {{{ Note that the contents of the wildcard RRs are not modified when used to synthesize RRs. }}} RRsを生成するために使われるとき、ワイルドカード RRs の中身は 修正されないことに注意せよ。 {{{ To illustrate the use of wildcard RRs, suppose a large company with a large, non-IP/TCP, network wanted to create a mail gateway. If the company was called X.COM, and IP/TCP capable gateway machine was called A.X.COM, the following RRs might be entered into the COM zone: }}} ワイルドカード RRs の使用例を示すために、 大きな非IP/TCP網を持つ大きな会社がメールゲートウェイを作ろうとしているとする。 会社は X.COM と呼ばれていて、 TP/TCPを持つゲートウェイマシンは A.X.COMと呼ばれるとしたら、以下のRRs を COMゾーンに登録するだろう: {{{ X.COM MX 10 A.X.COM *.X.COM MX 10 A.X.COM A.X.COM A 1.2.3.4 A.X.COM MX 10 A.X.COM *.A.X.COM MX 10 A.X.COM }}} {{{ This would cause any MX query for any domain name ending in X.COM to return an MX RR pointing at A.X.COM. Two wildcard RRs are required since the effect of the wildcard at *.X.COM is inhibited in the A.X.COM subtree by the explicit data for A.X.COM. Note also that the explicit MX data at X.COM and A.X.COM is required, and that none of the RRs above would match a query name of XX.COM. }}} この指定により、 X.COMで終わるドメイン名についの MX 問合せをすれば、いつでも、 A.X.COM を指す MX RRs が返ってくることになる。 A.X.COMに対する明示的データがあるので A.X.COM の部分木には *.X.COMの効果が及ばないため、ワイルドカード RRs は二つ必要になる。 X.COMとA.X.COMについても明示的なMXデータが必要であることと 上記のどの RRs も XX.COM の問合せには一致しないことに注意せよ。 <> 4.3.4. 否定応答のキャッシュ(任意) Negative response caching (Optional) {{{ The DNS provides an optional service which allows name servers to distribute, and resolvers to cache, negative results with TTLs. For example, a name server can distribute a TTL along with a name error indication, and a resolver receiving such information is allowed to assume that the name does not exist during the TTL period without consulting authoritative data. Similarly, a resolver can make a query with a QTYPE which matches multiple types, and cache the fact that some of the types are not present. }}} DNS には ネームサーバが TTL 付きの否定返答を送り、リゾルバがキャッシュすることを 認めるという任意実装のサービスがある。 例えば、ネームサーバは名前エラー表示とともにTTLを送ることができる。 そして、この情報を受け取ったリゾルバは TTL時間の間、 権威あるデータを調べることなく、その名前が存在しないと判定することが許される。 同様に、リゾルバは複数のタイプと一致するQTYPEを持つ問い合わせをして、 いくつかのタイプが存在しないという事実をキャッシュしてよい。 {{{ This feature can be particularly important in a system which implements naming shorthands that use search lists beacuse a popular shorthand, which happens to require a suffix toward the end of the search list, will generate multiple name errors whenever it is used. }}} この機能は検索リストで使って名前短縮を実装するようなシステムで 特に重要でありえる。 そのわけはよく使われる名前の 短縮法では、捜索リストの末尾にむかっての接尾辞を必要としていて、 使用時に複数の名前エラーを生じるからである。 {{{ The method is that a name server may add an SOA RR to the additional section of a response when that response is authoritative. The SOA must be that of the zone which was the source of the authoritative data in the answer section, or name error if applicable. The MINIMUM field of the SOA controls the length of time that the negative result may be cached. }}} 実現の方法はネームサーバが 権威ある返答をするときに返事の付加節に SOA RRs を付け加えてもよい というものである。 このSOA は返答節中の権威あるデータやネームエラーの生成源であるゾーンのもの でなければならない。 SOAの MINUMUM フィールドが否定の結果をキャッシュしてよい時間の長さを決める。 {{{ Note that in some circumstances, the answer section may contain multiple owner names. In this case, the SOA mechanism should only be used for the data which matches QNAME, which is the only authoritative data in this section. }}} 返答節が複数の所有者名を持つ状況があることに注意せよ。 この場合、SOA メカニズムは QNAME に適合するデータだけに使われるべきである。 それはこの節中の唯一の権威あるデータである。 {{{ Name servers and resolvers should never attempt to add SOAs to the additional section of a non-authoritative response, or attempt to infer results which are not directly stated in an authoritative response. There are several reasons for this, including: cached information isn't usually enough to match up RRs and their zone names, SOA RRs may be cached due to direct SOA queries, and name servers are not required to output the SOAs in the authority section. }}} ネームサーバとリゾルバは権威のない返答の付加節にSOAを加えたり、 権威のある返答で直接言われていない結果を導いたりしてはならない。 これにはいくつか理由がある: キャッシュされた情報は RRs とそのゾーン名をマッチさせるのに十分でない、 SOA RRs は SOA を直接問い合わせることでキャッシュされる、 ネームサーバは権威節に SOA を答ることを要求されてない。 など。 {{{ This feature is optional, although a refined version is expected to become part of the standard protocol in the future. Name servers are not required to add the SOA RRs in all authoritative responses, nor are resolvers required to cache negative results. Both are recommended. All resolvers and recursive name servers are required to at least be able to ignore the SOA RR when it is present in a response. }}} この機能は実装任意であるが、 将来、改訂されたバージョンでは 標準プロトコルの一部になると期待される。 ネームサーバは権威ある返答に SOA RRs を加えるように要求されていないし、 リゾルバは否定的結果をキャッシュすることを要求されていない。 両方とも推奨されている。 リゾルバと再帰ネームサーバは 返答に SOA RRs が存在している時、 それを無視できることが必要である。 {{{ Some experiments have also been proposed which will use this feature. The idea is that if cached data is known to come from a particular zone, and if an authoritative copy of the zone's SOA is obtained, and if the zone's SERIAL has not changed since the data was cached, then the TTL of the cached data can be reset to the zone MINIMUM value if it is smaller. This usage is mentioned for planning purposes only, and is not recommended as yet. }}} この機能を使う実験も提案されている。 考え方は次のようなものである。 キャッシュされたデータが来たゾーンがわかっていて、 そのゾーンのSOAの権威あるコピーが得られ、 ゾーンのシリアル番号がデータがキャッシュされて以来変更されていなければ、 キャッシュデータのTTLはゾーンのMINIMUM 値より小さければ、 MINIMUM値で置き換えてよい。 この使用法は計画が目的で触れられていて、まだ推奨できるものではない。 <> 4.3.5. ゾーンの保守管理と転送 Zone maintenance and transfers {{{ Part of the job of a zone administrator is to maintain the zones at all of the name servers which are authoritative for the zone. When the inevitable changes are made, they must be distributed to all of the name servers. While this distribution can be accomplished using FTP or some other ad hoc procedure, the preferred method is the zone transfer part of the DNS protocol. }}} ゾーン管理者の仕事の一つは ゾーンの権威あるネームサーバのすべてにおいて、 ゾーンを維持管理することである。 必要な変更が行われたときに、 それを全てのネームサーバに配らなくてはならない。 配布は FTP やその他のアドホックな方法で可能だが、 DNS プロトコルのゾーン転送を使う方が望ましい。 {{{ The general model of automatic zone transfer or refreshing is that one of the name servers is the master or primary for the zone. Changes are coordinated at the primary, typically by editing a master file for the zone. After editing, the administrator signals the master server to load the new zone. The other non-master or secondary servers for the zone periodically check for changes (at a selectable interval) and obtain new zone copies when changes have been made. }}} 自動的なゾーン転送や更新の一般モデルでは ネームサーバのうちのひとつがゾーンのマスターあるいはプライマリである。 変更はゾーンのマスターファイルを編集するなどプライマリに集約される。 編集の後、マスターサーバに新しいゾーンを読み込むよう指示する。 ゾーンの他の非マスターあるいはセカンダリサーバは定期的に変更の有無を調べ、 (選択可能な間隔で)、変更されているときは新しいゾーンのコピーを得る。 {{{ To detect changes, secondaries just check the SERIAL field of the SOA for the zone. In addition to whatever other changes are made, the SERIAL field in the SOA of the zone is always advanced whenever any change is made to the zone. The advancing can be a simple increment, or could be based on the write date and time of the master file, etc. The purpose is to make it possible to determine which of two copies of a zone is more recent by comparing serial numbers. Serial number advances and comparisons use sequence space arithmetic, so there is a theoretic limit on how fast a zone can be updated, basically that old copies must die out before the serial number covers half of its 32 bit range. In practice, the only concern is that the compare operation deals properly with comparisons around the boundary between the most positive and most negative 32 bit numbers. }}} 変更を検出するにはセカンダリはゾーンの SOA シリアルフィールドを調べるだけだ。 何かゾーンを変更した場合にはかならずゾーンのSOAのシリアル番号を増加させる。 増加は単純な増分であったり、マスターファイルの書き込み日時を使ったもの ゾーンのシリアル番号を比較することで、どちらが最近であるかを決定 できるようにすることが目的である。 シリアル番号の増加と比較には順序空間算術を使うので、 ゾーンを更新する速度には理論的な上限がある。 基本的に、古いコピーはシリアル番号が 32 ビットで表わされる範囲の半分を過ぎる 前に消滅していなければならない。 実際には、唯一の関心時は32 ビット数において、正の最大値と負の最小値付近での 比較操作が正しく行われる事である。 {{{ The periodic polling of the secondary servers is controlled by parameters in the SOA RR for the zone, which set the minimum acceptable polling intervals. The parameters are called REFRESH, RETRY, and EXPIRE. Whenever a new zone is loaded in a secondary, the secondary waits REFRESH seconds before checking with the primary for a new serial. If this check cannot be completed, new checks are started every RETRY seconds. The check is a simple query to the primary for the SOA RR of the zone. If the serial field in the secondary's zone copy is equal to the serial returned by the primary, then no changes have occurred, and the REFRESH interval wait is restarted. If the secondary finds it impossible to perform a serial check for the EXPIRE interval, it must assume that its copy of the zone is obsolete an discard it. }}} セカンダリサーバが行う周期的確認はゾーンの SOA RRs のパラメータで制御される。 SOA RRs では問い合わせる間隔を設定する。 パラメータは更新(REFRESH)、再試(RETRY)、満期(EXPIRE)と呼ばれる。 新しいゾーンがセカンダリにロードされたらいつでも、 セカンダリは REFRESH 秒以上待ってから、プライマリのシリアル 番号があたらしくなっているか、調べる。 この確認が完了しなかったときには、RETRY秒後に再度確認操作を行う。 確認操作はゾーンのプライマリに SOA RR を問い合わせるだけである。 セカンダリにあるゾーンのコピーのシリアルフィールドが プライマリからのものと等しければ、変更はなかったことになり、 REFRESH 秒待つことが再開される。 EXPIRE 秒の間、シリアルチェックできなかった場合には、 ゾーンのコピーは有効期限ぎれとして、廃棄しなければならない。 {{{ When the poll shows that the zone has changed, then the secondary server must request a zone transfer via an AXFR request for the zone. The AXFR may cause an error, such as refused, but normally is answered by a sequence of response messages. The first and last messages must contain the data for the top authoritative node of the zone. Intermediate messages carry all of the other RRs from the zone, including both authoritative and non-authoritative RRs. The stream of messages allows the secondary to construct a copy of the zone. Because accuracy is essential, TCP or some other reliable protocol must be used for AXFR requests. }}} ゾーンが変更されたことが分ったら、 セカンダリサーバはAXFRでゾーン転送を要求しなければならない。 AXFR は拒否されるなど、エラーを起こすかもしれないが、 通常は連続した返答メッセージが返ってきます。 最初と最後のメッセージにはゾーンの権威あるトップノードのデータが 含まれているはずだ。 途中のメッセージにはゾーンのすべての RRs が含まれていて、 それには権威のあるものもないものもある。 メッセージの集合によって、 セカンダリはゾーンの複製を作ることができる。 正確さが重要なので、AXFR要求では TCPなどの信頼性の高いプロトコル を使わなくてはならない。 {{{ Each secondary server is required to perform the following operations against the master, but may also optionally perform these operations against other secondary servers. This strategy can improve the transfer process when the primary is unavailable due to host downtime or network problems, or when a secondary server has better network access to an ';intermediate'; secondary than to the primary. }}} 各セカンダリサーバはあとに続く操作はマスターに対して行わなければならない。 ただし、他のセカンダリサーバに対してこれらの操作を行ってもよい。 この戦略はホストダウンやネットワークの問題でプライマリが利用できない時や、 プライマリよりも中間セカンダリの方がアクセスしやすい場合に 転送プロセスを改善することができる。 ---- 2002-10-16 訳 前野年紀