DNSについて学んでみる。(レコードを簡単に追記する。)
【DNSとは】
インターネット上の各所に存在するホストのIPアドレスとドメイン名を紐付けるためのシステム。
≪DNSの仕組み≫
【構造】
ルートネームサーバは、国や各組織が管理する複数のトップレベルドメインを束ねている。
トップレベルドメインもまた、その下の複数のドメインを束ねており階層構造を形成している。
各階層には、そこに位置するドメインに関する情報を持つネームサーバが存在する。
DNSでは名前解決のためのデータベースを一元管理しているのではなく、各階層に存在するネームサーバが自身に関するデータベースを持つ、分散型データベースの形を成している。
この名前解決に必要なデータベースとは、リソースレコードというドメイン名とIPアドレスやネームサーバとの対応関係が記述されたファイルのことを指す。
また、リソースレコードによって記述された、そのネームサーバが名前解決可能な範囲をゾーンという。
ドメイン名からIPアドレスを割り出す方法を正引き。IPアドレスからドメイン名を割り出す方法を逆引きという。
【ドメイン名の表記】
DNSでは、階層がルートから離れるにつれて、左側に"."で区切られてドメインが追加される。
ドメインの表記は末尾が"."で終わらなければならない。そうでなければ、相対パスとみなされる。
対象のドメインを基準として、右側のドメインを親ドメイン。左側のドメインをサブドメインとも言う。
IPアドレスの場合は、通常左から読むが、DNSでは並びを反転させた上で右から読む。なお、その右にはin-addr.arpa.と続き、逆引きの際はこの表記を使用する。
【名前解決の仕組み】
クライアントのソケットライブラリから提供されているスタブリゾルバより問い合わせが来る。
ローカルネームサーバは、問い合わせ内容と自分のデータベースを比較し、問い合わせに一致する情報(キャッシュ)があれば、それを返す。
ローカルネームサーバは、問い合わせ内容と自分のデータベースの情報が一致しないが、問い合わせ内容に近い情報を持つネームサーバを知っている場合は、自身がそのサーバへ問い合わせる。これを再帰的処理と言う。
問い合わせ内容に全く思い当たる節が無ければ、ルートネームサーバへ問い合わせる。
ローカルネームサーバより問い合わせを受けたネームサーバ(または、ルートネームサーバ)は、自身のゾーンの内容と一致する情報を問い合わせドメインの右側より照合していく。
DNSでは、ホストの名前解決に必要な情報(ドメイン名・IPアドレス)を"."で区切った単位で各ネームサーバが管理している。
たとえば、"hoge.tld"下の"fuga"は、"fuga.hoge.tld"という一意のドメインを管理している。
問い合わせ内容と一致するが、それが一部であった場合、残りの名前解決をするために必要な情報参照先ネームサーバリストを、問い合わせ元へ返す。これを非再帰的処理と
言う。
再帰的処理の場合は、問い合わせを受けたネームサーバが責任を持って、他所のネームサーバへ自ら問い合わせを行い、名前解決させた上で問い合わせ元へ返す。
以降、名前解決するまで問い合わせを繰り返し、最終的にクライアントのリゾルバの下へ返ることで名前解決が完了する。
【委任】
DNSでは、名前解決のための情報が分散されているように、名前解決するための情報の管理についても分散できる。これを委任という。
親ドメインがサブドメインに管理を委任した場合、親ドメインはこれまで管理していたサブドメイン以下の情報には関与せず、サブドメイン以下を管理するネームサーバの場
所情報しかしらない。
サブドメインは独立し、そのドメインに属する情報はサブドメインが直接管理する。同時に、親のゾーンには独立したサブドメインは含まれなくなる。