逆引き

広告

広告

逆引きとは

最終更新
2006-01-22T15:08:00+09:00
この記事のURI参照
http://www.7key.jp/nw/technology/protocol/dns_rv.html#what

逆問合せとも呼ばれます。IPアドレスからドメイン名を調べることを指します。これとは逆にドメイン名からIPアドレスを調べることを正引き(標準問合せ)と言います。逆引きでは、ドメイン名空間の中で正引きとは違うスペースが使われることとなっていて、TLDがarpa、SLDがin-addrのドメインが逆引き用ドメインとして使われます(IPv4の場合)。以下はIPアドレス192.168.0.1を逆引きする際に使われるドメイン名スペースを表しています。

逆引き用ドメイン名空間サンプル

上図から解るように、逆引きで用いられるドメイン名IPアドレスオクテットごとに逆に配置されたものが使われます。

1.0.168.192.in-addr.arpa

つまり、逆引き用のネームサーバでは下記のようなリソースレコードを用いることとなります。

PTRタイプリソースレコード
OwnerTypeClassRData
1.0.168.192.in-addr.arpaPTRINwww.7key.jp

逆引きを行う場合、クライアントリゾルバは質問に使うIPアドレスDNSメッセージの回答部分に置き、質問部分は空の状態で問合せを行います。ネームサーバはこの問合せに対して未実装エラーを示すエラー応答か、質問部分にネームサーバの知っているドメイン名を記述した応答を返すこととなります。

クラスレス環境における権限委譲

最終更新
2006-01-22T15:53:00+09:00
この記事のURI参照
http://www.7key.jp/nw/technology/protocol/dns_rv.html#classless

逆引きとはで説明をしました逆引きドメイン名スペースをを使った方法では、IPアドレスの各オクテットを分割することができません。192.168.0.0/24ゾーンにあるホストの逆引きはそのゾーンのオーソリティを持つネームサーバがサポートすることができますが、192.168.0.0/29ゾーンにあるホストのオーソリティは192.168.0.0/24ゾーンにあるネームサーバが持つこととなるからです。この問題を避けるための方法がRFC2317で紹介されています。

例えば、組織Aに対して192.168.0.0/25、組織Bに対して192.168.0.128/26、組織Cに対して192.168.0.192/26のIPアドレス空間を割り当てているとします。従来の方法では以下のように単一ゾーンを使用することとなり、権限が委譲されているとは言えません。

$ORIGIN 0.168.192.in-addr.arpa.
;
1               PTR     host1.A.domain.
2               PTR     host2.A.domain.
3               PTR     host3.A.domain.
;
129             PTR     host1.B.domain.
130             PTR     host2.B.domain.
131             PTR     host3.B.domain.
;
193             PTR     host1.C.domain.
194             PTR     host2.C.domain.
195             PTR     host3.C.domain.

そのため、下記のようにサブドメインとCNAMEリソースレコードを使用して、見かけ上の権限委譲を行うこととなっています。

$ORIGIN 0.168.192.in-addr.arpa.
@       IN      SOA     my-ns.my.domain. hostmaster.my.domain. (...)
;
0/25            NS      ns.A.domain.
0/25            NS      some.other.name.server.
;
1               CNAME   1.0/25.2.0.192.in-addr.arpa.
2               CNAME   2.0/25.2.0.192.in-addr.arpa.
3               CNAME   3.0/25.2.0.192.in-addr.arpa.
;
128/26          NS      ns.B.domain.
128/26          NS      some.other.name.server.too.
;
129             CNAME   129.128/26.2.0.192.in-addr.arpa.
130             CNAME   130.128/26.2.0.192.in-addr.arpa.
131             CNAME   131.128/26.2.0.192.in-addr.arpa.
;
192/26          NS      ns.C.domain.
192/26          NS      some.other.third.name.server.
;
193             CNAME   193.192/26.2.0.192.in-addr.arpa.
194             CNAME   194.192/26.2.0.192.in-addr.arpa.
195             CNAME   195.192/26.2.0.192.in-addr.arpa.
$ORIGIN 0/25.0.168.192.in-addr.arpa.
@       IN      SOA     ns.A.domain. hostmaster.A.domain. (...)
@               NS      ns.A.domain.
@               NS      some.other.name.server.
;
1               PTR     host1.A.domain.
2               PTR     host2.A.domain.
3               PTR     host3.A.domain.

この方法は、親ゾーンに対して256個のCNAMEリソースレコードを追加する必要があります。

RFC内で「ホスト名に使う文字列には、"/"の代わりにハイフンなどの控えめな文字を用いた方が好ましい」(We advise you not to be so pedantic, and to not precisely copy the above examples, e.g. substitute a more conservative character, such as hyphen, for "/".)と記載されています。

補足知識

最終更新
2006-01-15T13:44:00+09:00
この記事のURI参照
http://www.7key.jp/nw/technology/protocol/dns_rv.html#supplement

ネームサーバは必ずしも逆引きをサポートする必要はありません。

広告

当ページ作成にあたり、参考にさせてもらったリソース

Copyright (C) 2006 七鍵 key@do.ai 初版:2006年01月21日 最終更新:2006年01月22日