グルーレコードとは、権威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
%
この例では、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とは関係なく検索できるため、ループが発生しないからである。
グルーレコードは、委任元のゾーンファイルに記載して指定する。しかし、この情報は権威を持たないデータであるため、必要なもの以外は記載しないようにすべきである。管理するゾーンの情報ではないということは、その正確性を保証できるものではないからである。変わっていても気付かないかもしれないし、間違ったデータを提供することはリゾルバーに対しても迷惑になるだけである。最近のリゾルバーの実装では、信頼すべきでないグルーレコードは捨てられるようになっている。
Copyright © ITmedia, Inc. All Rights Reserved.