DNSサーバ
DNSサーバ(ディーエヌエスサーバ)またはネームサーバとは、Domain Name System を担う、コンピュータやサーバソフトウェアのことである。Domain Name System は、ホストの識別子を利用者が理解し易い形式(ドメイン名、例えば'ja.wikipedia.org')とコンピュータがインターネットプロトコル (IP) で通信するために必要な識別情報(IPアドレス)とを対応付ける仕組みである。
概要
コンピューターが他のコンピュータとネットワーク(インターネットプロトコル)を介して通信する際には、相手先のIPアドレスを知る必要がある。一方、一般にインターネットを利用するシステム(ウェブブラウザ、メールサーバその他)では、ヒトには覚えにくいIPアドレスよりもドメイン名によりコンピュータを把握するようになっている。ドメイン名とIPアドレスとの関連情報をコンピュータが知るために、ネットワーク上で情報を提供する仕組みが Domain Name System、それを担う各サーバがDNSサーバである。
DNSの問い合わせ(リクエスト)を回答するサーバを「権威DNSサーバ」と呼ぶ。
DNSサーバは分散型データベースの1ノードとして機能している。単体のDNSサーバは、おおむね次の2種類のいずれか、または両方の役割をもっている。
- DNSコンテンツサーバ - 自らの「ゾーン」(ドメイン名空間)について、情報を管理し問い合わせに回答する。独自のドメイン名をドメインレジストラで登録する際、「そのドメイン名を管理するDNSサーバ」として指定するのがDNSコンテンツサーバである[1]。
- DNSキャッシュサーバ - 依頼された問い合わせに応じて、自らまたは他のDNSサーバへ必要な問い合わせを行い、結果を依頼元に返す。結果を再利用できるよう、一定期間自らキャッシュする。フルリゾルバ・フルサービスリゾルバ・キャッシュDNSサーバとも呼ばれる。
DNSサーバが持つ「ゾーン情報」(ゾーンファイル)を他のDNSサーバから取得し、同期する仕組みを「DNSゾーン転送」と言う。
DNSコンテンツサーバ
DNSコンテンツサーバの役割は、Domain Name Systemにおいて自ゾーンで管理するサーバのIPアドレスなどの各種リソースレコード(RR)を保持し、問い合わせ要求があったときに応答することである。
DNSサーバが保持する「ゾーン情報」(ゾーンファイル)内のリソースレコード(資源レコード)の種類の例を以下に示す。
- リソースレコードの例
- Aレコード
- 名前に対するIPアドレス(IPv4)
- AAAAレコード
- 名前に対するIPアドレス(IPv6)
- PTRレコード
- IPアドレスに対する名前 (IPアドレスは 1.1.168.192.in-addr.arpa. の様に表記される)
- NSレコード
- そのゾーンの権威あるDNSコンテンツサーバの名前
- MXレコード
- 詳細は「MXレコード」を参照そのゾーンのメールサーバの名前
- SOAレコード
- ゾーンそのものの情報
- CNAMEレコード
- その名前に対する別名
- TXTレコード
- テキスト情報
など。
- wikipedia.orgのDNSコンテンツサーバの例
- このDNSコンテンツサーバは、ja.wikipedia.orgやwww.wikipedia.orgなどwikipedia.orgゾーンの各種リソースレコードを保持している。ただし、orgゾーンに保持されているIPアドレスは知らない(間違った設定によってorgのNSレコードをキャッシュで答えてしまうサーバも実際には多く存在する)。このDNSコンテンツサーバは、DNSクライアント(再帰検索の場合はDNSキャッシュサーバ)から、ja.wikipedia.orgのIPアドレスを教えるよう要求を受けると、自らが保持しているコンテンツから、ja.wikipedia.orgのIPアドレスを探し、それをDNSクライアントに返答する。
このようにドメイン名からIPアドレスを検索する事を正引きと呼び、反対にIPアドレスからドメイン名を検索することを逆引きと呼ぶ。
プライマリサーバとセカンダリサーバ
コンテンツサーバの役割での「プライマリサーバ」と「セカンダリサーバ」は、マスタとスレーブの関係にある。類似の用語である、オペレーティングシステムのネットワーク構成で指定する「DNSサーバ設定」の「優先」「代替」とは趣旨が異なる(#OSで指定する「DNSサーバ」)。
- プライマリサーバ
- ゾーン情報を自ら管理し、自らのゾーン情報に関する問い合わせに回答したり、セカンダリサーバへ配信したりする。Windows Server同梱のDNSサービスにある動作モード「Active Directory統合ゾーン」は、プライマリサーバとしての役割に機能拡張[2]がされたものである。
- セカンダリサーバ
- 担当するゾーンに関する問い合わせに回答するが、自らはゾーン情報を管理せずプライマリサーバから受け取ったゾーン情報を保持している。
セキュリティ
DNSサーバが応答不能になれば、管理しているゾーン内のコンピューター提供しているサービスを利用できなくなり、誤った情報を回答するとクライアントコンピューターは意図していないノードにアクセスしてしまう[3]ことになる。
健全な利用環境を確保するために、DNSサーバのリソースレコードの改ざんやDoS攻撃を防ぐよう、DNSサーバソフトウエアおよびOSの設定やセキュリティ更新プログラムの適用、コンテンツサーバの多重化(セカンダリサーバを公開し、プライマリサーバは非公開とするなど)、ファイアウォールや侵入防止システムの導入などにより対策を講じる必要がある。
DNSキャッシュサーバ
DNSキャッシュサーバの役割は、DNSクライアント(この場合はWindowsなど)から名前解決を依頼されたとき、再帰検索を行いドメイン名の解決を図ることである。
Webブラウザで、www.wikipedia.orgなどを入力した際、そのコンピュータがまず名前解決しに行くのがDNSキャッシュサーバである。DNSキャッシュサーバのIPアドレスは、Dynamic Host Configuration Protocol(DHCP)などから取得するほか、設定ファイルとしてマシン内に保存することもある。
また、インターネットなど外部からのDNSクエリーを受け付けているDNSサーバを「オープンリゾルバ」と言う。
反復検索と再帰検索
- 反復検索
- 問い合わせを受けた内容について、自らの情報のみ提供する。クライアントが別のDNSサーバへ問い合わせを行う(一般的にはルートサーバから順にドメインツリーをたどる)ことになる。反復クエリーとも呼ばれる。
- 再帰検索
- 問い合わせを受けた内容について、自らが情報を持っていない場合は他のDNSサーバへ自らが問い合わせを行い、得た結果をクライアントに回答する(フルサービズリゾルバがこのように振る舞う)。自らは再帰検索を行わず、別のDNSサーバ(フォワーダー)へ再帰検索を依頼する(中継する)DNSサーバもある。再帰クエリーとも呼ばれる。
実装
代表的なDNSサーバソフトウエアは次のものがある。 DNSサーバの中には、DNSコンテンツサーバとDNSキャッシュサーバが別々になっているものもあれば、両方機能を搭載するものもある。
OSで指定する「DNSサーバ」
Microsoft Windows、OS X (Macintosh)、各種UNIX・Linux、Android をはじめとする、ネットワーク通信可能なオペレーティングシステムには、ネットワーク関連の設定に「DNSサーバ」のIPアドレスを指定する項目がある[4]。オペレーティングシステムが名前解決を必要とした際、問い合わせるDNSサーバのIPアドレスである。
これらの情報は、DHCPサーバから(割当IPアドレス情報とあわせて)受け取ることが可能である[5]。
大抵、複数のDNSサーバを指定可能になっている。DNSサーバへ問い合わせる際に優先順位の高い順に行い、応答がない場合(該当DNSサーバが停止、通信経路で障害発生など)に次位(代替)以降のDNSサーバへ問い合わせを行うようになっている。クライアントコンピュータが名前解決できないと、電子メールやウェブサーバの利用ができなくなってしまうため、DNSサーバの可用性は大変重要である。
脚注
- ^ 社内専用など、一般に公開しないゾーンを管理するDNSサーバ(コンテンツサーバ)を立ててももちろん構わない。その際はレジストラへ登録する必要はない。
- ^ http://technet.microsoft.com/ja-jp/library/cc731204.aspx
- ^ フィッシングサイトなど悪意のあるウェブサーバへ誘導されてしまったり、メールの転送先を変更され窃取されたりすることになる。
- ^ Microsoft Windowsでは、コントロールパネルのネットワーク設定、Mac OS X では「システム環境設定」の「ネットワーク」、UNIX系では/etc/resolve.confなど
- ^ DHCPサーバから得た情報で設定する場合の指定項目は「DNSサーバのアドレスを自動的に取得する」などと表現されている。
関連項目
- Domain Name System
- サーバ
- OpenDNS
- リゾルバ
- 公開DNSサーバ(Public DNS) - Google Public DNS
- DNSルートゾーン