連載
» 2015年08月27日 05時00分 UPDATE

DNS Tips:グルーレコードで付加する情報とは

グルーレコードとはどのような役割を果たし、どのような情報を記載すべきなのかを説明する。

[佐藤 新太(JPRS),@IT]

 グルーレコードとは、権威DNSサーバーが、委任されたサブドメインのNS(ネームサーバー)を応答する際に追加の情報として必要となる情報のことである。具体的には、ネームサーバーの名前に対応するIPアドレスの情報となる。

 サブドメインの委任をしている場合、委任元の権威DNSサーバーに委任先のドメイン名の問い合わせがあると、委任先を管理するネームサーバーの名前を応答することになる。しかし、そのネームサーバーとの通信を行うためには、名前ではなくIPアドレスを知る必要がある。つまり、教えてもらったネームサーバーの名前を再度DNSで調べることになる。もしここで、応答されたネームサーバーの名前が委任先のドメイン名であった場合、この状況がループを起こし、どうやっても委任先のドメインの情報を得ることができなくなってしまう。

 これを防ぎ、委任元のゾーンと委任先の情報をつなぎ止めるために使われるのが「グルー(glue、接着剤)レコード」である。

 例えば、example.jpゾーンのネームサーバーとしてns1.example.jpを指定してある場合、jpゾーンのネームサーバーはexample.jpゾーンの名前に関する問い合わせに対してNSとしてns1.example.jpを応答するだけでなく、ns1.example.jpのIPアドレスを示すAレコードも付加して答える。

 このグルーレコードは、ドメイン名のツリー構造から考えると権威DNSサーバーが管理するゾーンからは外れた情報である。しかし、キャッシュDNSサーバーが情報を検索するためにはどうしても必要となる情報なのである。

 実際に権威DNSサーバーが返すグルーレコードをdigコマンドで確認してみよう(リスト1)。

% dig +norec @a.dns.jp jprs.jp


; <<>> DiG 9.9.7-P2 <<>> +norec @a.dns.jp jprs.jp

; (2 servers found)

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47989

;; flags: qr; QUERY: 1, ANSWER: 0, AUTHORITY: 3, ADDITIONAL: 6


;; OPT PSEUDOSECTION:

; EDNS: version: 0, flags:; udp: 4096

;; QUESTION SECTION:

;jprs.jp.                       IN      A


;; AUTHORITY SECTION:

jprs.jp.                86400   IN      NS      ns2.jprs.jp.

jprs.jp.                86400   IN      NS      ns1.jprs.jp.

jprs.jp.                86400   IN      NS      ns3.jprs.jp.


;; ADDITIONAL SECTION:

ns1.jprs.jp.            86400   IN      A       202.11.16.49

ns1.jprs.jp.            86400   IN      AAAA    2001:df0:8::a153

ns2.jprs.jp.            86400   IN      A       202.11.16.59

ns2.jprs.jp.            86400   IN      AAAA    2001:df0:8::a253

ns3.jprs.jp.            86400   IN      A       61.200.83.204


;; Query time: 1 msec

;; SERVER: 2001:dc4::1#53(2001:dc4::1)

;; WHEN: Fri Aug 07 08:50:46 JST 2015

;; MSG SIZE rcvd: 194


%

リスト1:権威DNSサーバーが返すグルーレコードの例

 この例では、jpゾーンを管理している権威DNSサーバーであるa.dns.jpにjprs. jpのAレコードを問い合わせている。a.dns.jpは、jprs.jpを委任しているという情報のみ持っているため、AUTHORITY SECTIONに委任先のネームサーバーの名前を返す。

;; AUTHORITY SECTION:

jprs.jp.                86400   IN      NS      ns2.jprs.jp.

jprs.jp.                86400   IN      NS      ns1.jprs.jp.

jprs.jp.                86400   IN      NS      ns3.jprs.jp.

 委任先のネームサーバーであるns1.jprs. jpとns2.jprs. jp、ns3.jprs.jpはいずれも管理を委任したドメイン名であるjprs. jpに属していることから、a.dns.jpはネームサーバーの名前だけではなく、IPアドレスの情報をADDITIONAL SECTIONに返している。

;; ADDITIONAL SECTION:

ns1.jprs.jp.            86400   IN      A       202.11.16.49

ns1.jprs.jp.            86400   IN      AAAA    2001:df0:8::a153

ns2.jprs.jp.            86400   IN      A       202.11.16.59

ns2.jprs.jp.            86400   IN      AAAA    2001:df0:8::a253

ns3.jprs.jp.            86400   IN      A       61.200.83.204

 このADDITIONAL SECTIONに書かれているIPアドレスの情報が、グルーレコードと呼ばれる情報である。

 なお、委任先のサブドメインを管理するネームサーバーの名前が委任先のドメイン名ではない場合、グルーレコードは不要になる。例えば、example.jpのネームサーバーとしてns1.example.comを指定してある場合、jpのネームサーバーはexample.jpに関する問い合わせに対してNSとしてns1.example.comを答えるだけで、グルーレコードを返すことはない。ns1.example.comのIPアドレスはexample.jpとは関係なく検索できるため、ループが発生しないからである。

 グルーレコードは、委任元のゾーンファイルに記載して指定する。しかし、この情報は権威を持たないデータであるため、必要なもの以外は記載しないようにすべきである。管理するゾーンの情報ではないということは、その正確性を保証できるものではないからである。変わっていても気付かないかもしれないし、間違ったデータを提供することはリゾルバーに対しても迷惑になるだけである。最近のリゾルバーの実装では、信頼すべきでないグルーレコードは捨てられるようになっている。

佐藤 新太(さとう しんた)

ph_satoh.jpg

所属:株式会社日本レジストリサービス(JPRS) システム部

1999年JPNICに入社、2001年JPRSに転籍。JP DNSのIPv6対応、Anycastの導入、レジストリシステムの運用に従事。ICANN SSAC、RSSAC Caucusメンバー。名前衝突に関するJPNICの専門家チームに参加。


Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。