DNSは世界中のDNSサーバが相互に連携して運用される分散協調型データベースの特徴を持つ。ドメインは階層構造でドメインツリーと呼ばれる。個々のホストはツリー上のリーフにあたる。ドメインごとのDNSサーバが、ドメイン内のホスト名とIPアドレスの対応付けを管理する。個々のDNSサーバが権限をもって管理する範囲(サブドメインの委譲した領域を除く)をゾーンと呼ぶ。
ルートDNSサーバは、「IP Anycast」技術を用いて冗長化されている。つまり、同一のIPアドレスが複数のホストに割り当てられているが、クライアントがやり取りする相手は1台のホストだけとなる。また、インターネット上のダイナミックルーティングプロトコル(BGP)の仕組みにより、クライアントから見てネットワーク的に最も近い1台のホストにだけパケットが到達する。
ドメイン名の書式
ホスト名.ホストが設置されているサイトのドメイン名.SLD.TLD.
ドメイン名は、ドメインツリーのルートからリーフに至るパスを、ピリオド区切りで右から左に記述する。最右端のピリオドはルートを示し、DNSサーバの設定以外では省略するのが一般的。ドメイン名の右から1番目TLD(Top Level Domain)には、gTLD(generic TLD)とccTLD(country code TLD)の2種類がある。また、ホストのドメインツリーを完全に記述したドメイン名をFQDN(Fully Qualified Domain Name=完全修飾ドメイン名)と呼ぶ。
正引きの仕組み
正引きは、ドメイン名からIPアドレスを問い合わせること。
通常のDNS問い合わせはUDPポート53番を使用するが、問い合わせに失敗するとTCPポート53番を使用してリトライする仕様となっている。ファイアウォールを超えてDNS問合せを行うには、UDPとTCPのポート53番を通す必要がある。
![]() |
名前解決の仕組み(正引き) |
クライアントから登録されているDNSサーバへの問合せを再帰的問合せという。クライアント上で動作し、名前解決の問合せを行うプログラムのことをスタブリゾルバ(stub resolver)という。単にリゾルバと呼ぶことが多い。
一方、登録されているDNSサーバからほかのDNSサーバへの問合せを反復的問合せという。スタブリゾルバから再帰的問合せを受けるDNSサーバをフルサービスリゾルバ(full-service resolver)という。
さらに、フルサービスリゾルバから反復的問合せを受けるDNSサーバをコンテンツサーバという。コンテンツサーバは権限に応じて二種類の動作をする。自分が権限を有すればホストのIPアドレスを返す。権限を委譲している場合は、委譲先のDNSサーバのIPアドレスを返す。
フルサービスリゾルバは、名前解決の過程で得た情報をすぐ破棄せずにキャッシュする。キャッシュの有効期間は、ほかのDNSサーバへの問合せを省略する。フルサービスリゾルバのことをキャッシュサーバと呼ぶことが多い。
逆引きの仕組み
逆引きは、IPアドレスからドメイン名を問い合わせること。
基本的な仕組みは正引きと同じだが、ドメインツリーは別もの。
4オクテット目.3オクテット目.2オクテット目.1オクテット目.in-addr.arpa
SLD.TLDは「.in-addr.arpa」であり、第3レベルドメインがIPアドレスの1オクテット目、第4レベルドメインが2オクテット目、第5レベルドメインが3オクテット目に対応する。第5レベルドメインのDNSサーバが、逆引きの情報を管理しており、ホスト名は第4オクテット目に対応する。
フォワーダ
外部ドメイン情報を問い合わせる場合、あらかじめ登録された別のDNSサーバに再帰的問合せを実行することができる。再帰的問合せを依頼されたDNSサーバをフォワーダという。フォワーダを指定したDNSサーバは回送用DNSサーバという。
![]() |
通常のDNSサーバとフォワーダの動作の違い |
ブロードバンドルータの多くはフォワーダ機能を備えており、プロバイダのDNSサーバがフォワーダとして設定される。内部のクライアントからは、ルータがDNSサーバとして機能しているように見える。DNSサーバを運用管理する手間が省け、WAN回線のトラフィックを軽減できる利点がある。
ゾーン情報
DNSサーバはゾーンごとにゾーンファイルを設定する。ゾーン情報はレコード単位に以下の書式で記述する。
[名前] [TTL] [クラス] レコード種別 パラメタ
名前 | 検索対象となっている情報の名前 |
TTL | レコードの有効期間。通常、ゾーン全体のTTLを指定し、個々のレコードのTTLは省略する |
クラス | 現在、IN(Internetを意味する)が利用されている |
レコード種別 | SOA、NS、A、CNAME、PTRなど。詳細は下表 |
レコード 種別 |
意味 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
SOA | ゾーン全体に関する情報を記載する。ゾーンにつき1レコード存在する。「名前」フィールドにゾーンのドメイン名を登録する。「パラメタ」フィールドには下記内容を登録する
|
||||||||||||
NS | ゾーンに対して権威のあるDNSサーバ(プライマリDNSサーバ、セカンダリDNSサーバ)を登録する。「名前」フィールドにドメイン名を登録し、「パラメタ」フィールドにDNSサーバを登録する
|
||||||||||||
A | IPv4アドレスの正引きの名前解決で使用される。「名前」フィールドにホスト名を登録し、「パラメタ」フィールドにIPアドレスを登録する
|
||||||||||||
PTR | 逆引きの名前解決で使用される。「名前」フィールドにIPアドレスを登録し、「パラメタ」フィールドにホスト名を登録する。 逆引き用のドメインとして、IPv4アドレスは「in-addr.arpa」を用い、IPv6アドレスは「ip6.arpa」を用いる
|
||||||||||||
CNAME | 外部に公開するホスト名(別名)に対応するサーバ名(正式名)を登録する。「名前」フィールドにホスト名(別名)を登録し、「パラメタ」フィールドにサーバ名(正式名)を登録する
|
||||||||||||
MX | ゾーンのメールサーバを登録する。「名前」フィールドにドメイン名を登録し、「第1パラメタ」フィールドメールサーバの優先度、「第2パラメタ」フィールドにメールサーバを登録する。メール転送に失敗したら次に優先順位のメールサーバにメールが送られる仕組みになっている。値が小さいほど優先度が高くなっている
|
||||||||||||
AAAA | IPv6アドレスに正引きの名前解決で使用される。「名前」フィールドにホスト名を登録し、「パラメタ」フィールドにIPアドレスを登録する
|
- レコードの記述には省略記法を用いてもよい
- レコード内でホスト名をFQDNで指定するときは、末尾に「.」を付加する
- 末尾の「.」を省略すると相対ドメイン名として解釈される
- 基点ドメイン名は、ゾーン名または$ORIGIN制御文で定義する
- 「@」は基点ドメイン名を表す特殊記号として解釈される
- 各レコードの「名前」フィールドが省略された場合は、直前レコードの「名前」フィールドの値が適用される
- ゾーンファイルには次に示す制御文でゾーン情報全体に関する設定を記述できる
制御文及び文法 | 意味 |
---|---|
$TTL 有効期間 | ゾーンファイルのTTLのデフォルト値を秒単位で指定。レコードの「TTL」フィールドに有効期間が設定されていた場合は、$TTL制御文よりも優先される |
$ORIGIN 基点ドメイン名 | ゾーンファイルの基点ドメイン名を指定(BINDの場合、named.confのzoneステートメントに記述されたゾーン名よりも、こちらの方が優先される) |
0 件のコメント:
コメントを投稿