DNSサーバには、ドメインの情報(権威情報)を定義・公開するコンテンツサーバと、それを利用するリゾルバの2種類がある。今回はコンテンツサーバの機能についてまとめておく。
本入門連載では、システム管理者やシステムエンジニアの方々を主な対象として、IT業界でよく使われる技術や概念、サービスなどの解説をコンパクトにまとめておく。
前回はDNSで提供されているサービスの概要について解説した。今回は、DNSサーバの機能について解説する。
単にDNSサーバと言った場合、実は1台のDNSサーバの中に、DNSのゾーン情報を提供する機能だけでなく、ゾーン情報を利用する側の機能も含まれていて、少し分かりづらくなっている。本連載ではこの2つの機能を次のように区別する。
DNSサーバで提供されているサービスには複数の機能があるが、今回は1.のコンテンツサーバ機能についてまとめておく。リゾルバ機能については第3回で触れる。
DNSサーバでは、ドメインごとの情報を「ゾーン」と呼ばれる単位で管理している。ゾーンの中には、そのドメインの情報(ドメイン名や属性など)やホスト名、IPアドレス、ネームサーバ情報など、さまざまな情報が「レコード」として記録されている(登録できるレコードの種類については後述)。
以下にドメインのゾーン定義の例を示しておく。これはWindows Server OSのDNSサービスで定義されているexample.jpゾーンの例である。
(2)のSOAレコードで定義されているのがドメインの「権威情報(Authority)」であり(詳細は後述)、ドメインに関する一番重要な情報である。
あるドメインの権威情報を提供するDNSサーバを特に「コンテンツサーバ」とか「権威DNSサーバ(authoritative name server)」という。コンテンツサーバは、外部からのDNS問い合わせに応答する責任を持つ。コンテンツサーバを上位のDNSサーバに登録することにより、ルートからドメインの階層をたどって、目的のドメインやそこにあるホスト名などを見つけることができるようになる。
例えばexample.jpというDNSドメインがある場合(実際にはjpドメインでこの名前を取得することはできないが。組織内のみで使うなら自由)、このドメインに対するゾーンを作成後、このサーバの名前やIPアドレス情報を上位ドメインに追加してもらう。するとルートDNSサーバからjpドメインのDNSサーバをたどって、example.jpドメインの情報を見つけることができるようになる。
example.jpドメインまでたどり着けば、あとはSOAレコード中で定義しているDNSサーバによって、このドメイン内のホスト名などを参照できるようになる。
通常は、ドメインの所有者がそのドメインに対する権威DNSサービスを提供するが(DNSサーバを用意するが)、ISPが提供するDNSサーバサービスを使ったり、「Google Cloud DNS」のような汎用のDNSサービスなどを使うこともできる。
example.jpの下にさらに下位のドメイン階層を設ける場合は、example.jp内でサブドメイン(サブゾーン)として定義してもよいし、独立した別のドメインとして定義して、そのドメインを担当する別のDNSサーバに処理を「委任、委譲(delegate)」してもよい。
DNSサービスは、ドメインに対する名前解決の基本的な機能なので、もしDNSサーバに障害が発生するとそのドメインに対する名前解決が行えず、結果として、そのドメインへはアクセスできなくなってしまう。このような事態を避けるため、コンテンツサーバは複数台用意するのが普通である。
だがDNSサーバの台数が増えると、管理したり、DNSサーバ間で登録情報の同期を取る手間が増える。そこで一般的には、1台を「プライマリDNSサーバ」(マスター)とし、残りは全て「セカンダリDNSサーバ」(スレーブ)として運用することが多い*1。
*1 プライマリ/セカンダリという呼び方について
プライマリ/セカンダリではなく、マスター/スレーブと呼ぶこともある(BIND 8.x以降ではプライマリ/セカンダリではなく、マスター/スレーブと呼んでいる)。だが本記事では、Windows OSの表記に合わせてプライマリ/セカンダリと呼ぶことにする。
管理者はプライマリDNSサーバのゾーン情報だけを管理・更新する。するとプライマリDNSサーバに設定された内容が自動的にセカンダリにコピー/同期される。DNSサーバ間では「ゾーン転送」という、登録データを直接コピーする機能が使われる。
このような構成にしている場合、プライマリとセカンダリにはどちらにも同じようにDNSの要求が届くので(プライマリに障害があるときだけセカンダリにアクセスが来るわけではない)、どちらも同じ程度の負荷に耐えられるような機器構成が望ましい。
最後に、DNSサーバに登録できるレコード情報についてまとめておく。
レコード | 意味/用途 |
---|---|
SOA | Start Of Authority。ドメインの権威情報を定義するレコード。次のような情報を含む ・シリアル番号。ゾーン情報を更新する度に増加させること。クライアントはこの数字の増加を確認すると、ゾーン情報が更新されたと判断する ・ネームサーバ:ドメインのDNSサーバ名 ・更新時間/再試行時間/期限:キャッシュしたゾーン情報の有効期限 |
NS | Name Server(DNSサーバ名) |
A | IPv4アドレス |
AAAA | IPv6アドレス |
CNAME | Canonical Name(ホスト名の別名)。同じホストを異なる名前でアクセスできるようになる |
PTR | Pointer(IPv4/IPv6の逆引きアドレス) |
MX | Mail Exchanger(メールサーバ情報) |
TXT | Text(テキスト)情報 |
DNSSEC | DNSのセキュリティ拡張機能DNSSECで利用するためのキー情報などを定義するレコード(DNSKEY/RRSIG/DS/NSECなど)。ゾーンデータを暗号化して公開鍵暗号で署名してやり取りする。「DNSSEC の概要」(TechNetサイト)参照 |
主なDNSレコードの種類とその意味 |
幾つか補足しておく。
これはドメインの権威情報を定義する、一番重要なレコードである。
(2)はSOAレコードのシリアル番号を表している(2の32乗以内の数値)。ゾーン情報を更新したら、手動で増加させておく。するとDNSのクライアントはSOAレコードの変更を検知して、内容を再取得する。番号が同じだとキャッシュした値をそのまま使うので、変更が反映されない。
(5)は、クライアントが取得したSOAレコードの有効期限を表している。長いとDNSサーバの負荷は減るが、更新があった場合にすぐには反映されない可能性がある。もしWebサーバやメールサーバのIPアドレスの変更などを考えているなら、この値(および関連するレコードのTTLなど)を短く設定しておくとよい。
逆引きレコードとは、与えられたIPv4やIPv6のアドレスから、対応する元のDNS名(FQDN)を定義するためのレコードである。
IPアドレスは32bitもしくは128bitのバイナリデータである。これをレコードとして登録するため、DNSではIPアドレスに対しては特殊なゾーン記述方法を用意している。
IPv4の場合は次のようにして登録する。
注:ホストアドレス部が8bit未満の場合は、さらにサブドメインに分割するなどの特殊な措置が必要になることがあるが、ここでは触れない。
IPv6の場合もほぼ同様にして処理する
MXレコードは、このドメインに対するメールサーバ(メールの受信サーバ)を指定するためのレコードである。このドメインに対してメールを送信するメールサーバは、まずドメインのMXレコードを取得してメールサーバの名前やIPアドレスを求め、そこにSMTPプロトコルで接続する。
C:\>nslookup -type=mx example.jp …example.jpドメインのメールサーバ情報を取得する
サーバー: UnKnown
Address: ::1
example.jp MX preference = 20, mail exchanger = centosserver1.example.jp …メールサーバ1
example.jp MX preference = 10, mail exchanger = example-dc1.example.jp …メールサーバ2
centosserver1.example.jp internet address = 10.20.2.101
example-dc1.example.jp internet address = 10.20.1.101
…(以下省略)…
この例ではメールサーバが2台表示されている、実際にはPreference(優先度)の小さい方を優先して使用する。もし接続できなければ、次に大きい値を持つメールサーバを利用する。
これはDNS中に任意のテキストを定義するためのレコードである。一般的にはあまり使うことはないが、例えば「ドメインの正統な所有者の証明」のために使われることがある。例えば以下のページで解説しているサービスでは、途中で指定されたテキストをDNSのTXTレコードとして設定するという手順がある(他にも確認方法はあるが)。DNSサーバの設定を変更できるのはドメインの所有者だけなので、これによって、ドメインの所有者であることが確認できる、というわけだ。
Copyright© Digital Advantage Corp. All Rights Reserved.