DNSサーバ

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動先: 案内検索

DNSサーバ(ディーエヌエスサーバ)は、Domain Name System(DNS)の「名前解決」の機能、すなわち、ホスト名やメールアドレスに含まれるドメイン名などといった「名前」などから、IPアドレスなど[1]の実体を得る「解決」を行う、分散データベースの構成要素となる機能を実装したサーバである。ドメインの持ち主が情報を提供するための「DNSコンテンツサーバ」と、ネットワークの利用者(ドメイン名システム(DNS)の利用者)が名前解決に利用するための「DNSキャッシュサーバ」があるが、両者は全く違うものなので混同してはならないし、そもそもDNSサーバと総称すること自体に問題がある。コンテンツサーバはドメインの持ち主が管理することもできるが、多くの場合、プロバイダやレンタルサーバ業者などが提供しているものを利用する[2]。キャッシュサーバは、接続プロバイダなどがほとんどの場合に用意しており、「インターネットを利用するための機器の設定」にその設定が含まれていたり、あるいはDHCPでIPアドレス等と一緒に自動的に設定してしまうことが専らであるが、ユーザのLAN内に(あるいは端末自身の中のサーバとして)用意して、そちらを使うこともできる(分散システム的な観点からは、そのほうが望ましい)。DNSの仕組み上キャッシュすることが前提の設計になっているため、キャッシュを持っていて「キャッシュサーバ」と専ら呼ばれるのであるが、中継するのみでキャッシュしない、いわゆるプロキシ的な動作をするものもある。

概要[編集]

たとえば、コンピューターが他のコンピュータとインターネットプロトコル(IP)を介して通信する際には、相手先のIPアドレスを知る必要がある。一方、URLなどには(IPアドレスを、直接指定することもできるが)、もっぱらドメイン名を使って対象を記述する。ドメイン名から、IPアドレスなどといった必要な情報を得る(名前を解決する)ために、ネットワーク上で情報を提供する仕組みが Domain Name Systemであり、それを担う各サーバがDNSサーバである。

DNSサーバは分散型データベースの1ノードとして機能している。DNSサーバには以下の2種類がある。

  • #DNSコンテンツサーバ - 自らの「ゾーン」(ドメイン名空間)について、情報を管理し問い合わせに回答する。独自のドメイン名をドメインレジストラで登録する際、「そのドメイン名を管理するDNSサーバ」として指定するのがDNSコンテンツサーバである[3]
  • #DNSキャッシュサーバ - 依頼された問い合わせに応じて、コンテンツサーバへ必要な問い合わせを行い、結果を依頼元に返す。結果を再利用できるよう、一定期間自らキャッシュする。フルリゾルバ・フルサービスリゾルバ・キャッシュDNSサーバとも呼ばれる。

コンテンツサーバについては、「権威DNSサーバ」という用語もある。コンテンツサーバという語は上記のような役割のサーバ全般の総称であるのに対し、権威DNSサーバは例えば「wikipedia.orgドメインの(wikipedia.orgドメインが管理・委譲している情報を持っている(それに関して権威がある))権威DNSサーバ」といったように、個々のドメインとの関係を意味する。

DNSサーバが持つ「ゾーン情報」(ゾーンファイル)を他のDNSサーバから取得し、同期する仕組みを「DNSゾーン転送」と言う。

DNSコンテンツサーバ[編集]

DNSコンテンツサーバの役割は、Domain Name Systemにおいて、ドメインの管理情報、すなわち、自ゾーンの管理するサーバのIPアドレスなどの各種リソースレコード(RR)と、ドメインの委任に関する情報を保持し、問い合わせ要求があったときに応答することである。

DNSサーバが保持する「ゾーン情報」(ゾーンファイル)内のリソースレコード(資源レコード)の種類の例を以下に示す。

リソースレコードの例
  • Aレコード
名前に対するIPv4アドレス
  • AAAAレコード
名前に対するIPv6アドレス
  • PTRレコード
逆引き(IPアドレスに対する名前)たとえば 198.51.100.234 というIPアドレスを逆引きするには 234.100.51.198.in-addr.arpa という名前のPTRレコードを問い合わせればよい
  • NSレコード
そのゾーンの権威あるDNSコンテンツサーバの名前
  • 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統合ゾーン」は、プライマリサーバとしての役割に機能拡張[4]がされたものである。
セカンダリサーバ
担当するゾーンに関する問い合わせに回答するが、自らはゾーン情報を管理せずプライマリサーバから受け取ったゾーン情報を保持している。

セキュリティ[編集]

DNSサーバが応答不能になれば、管理しているゾーン内のコンピューター提供しているサービスを利用できなくなり、誤った情報を回答するとクライアントコンピューターは意図していないノードにアクセスしてしまう[5]ことになる。

健全な利用環境を確保するために、DNSサーバのリソースレコードの改ざんやDoS攻撃を防ぐよう、DNSサーバソフトウエアおよびOSの設定やセキュリティ更新プログラムの適用、コンテンツサーバの多重化(セカンダリサーバを公開し、プライマリサーバは非公開とするなど)、ファイアウォール侵入防止システムの導入などにより対策を講じる必要がある。

DNSキャッシュサーバ[編集]

DNSキャッシュサーバの役割は、DNSクライアント(ウェブブラウザなど、ドメイン名を利用する何らかのアプリケーション等)からの再帰的問い合わせによって名前解決の依頼を受け、非再帰的問い合わせを行い名前を解決することである。たとえば、Webブラウザで、www.wikipedia.orgなどを入力した際、そのコンピュータがまず名前解決しに行くのがDNSキャッシュサーバである。

(DNSキャッシュサーバのIPアドレスは、典型的には、ネットワークインタフェースの立ち上げ時に、DHCPで受け取ったかネットワーク設定スクリプトに書き込まれているものが、設定ファイル(典型的には /etc/resolv.conf )に書き込まれる。あるいは古典的には /etc/resolv.conf は静的な設定ファイルであった。なおmacOSではこのファイルが存在するが編集しても動作には反映しないプログラムがあり、「システム環境設定」のほうで設定を変更する必要がある)

再帰的問い合わせと非再帰的問い合わせ[編集]

名前解決における問い合わせには、再帰的問い合わせと非再帰的問い合わせ(反復問い合わせ)の2種類がある。典型的で単純な例で説明すると、ユーザプログラムからlibcの gethostbyname (3) を通して、/etc/resolv.conf で設定されたDNSキャッシュサーバへの問い合わせが再帰的問い合わせで、キャッシュサーバが行う、DNSコンテンツサーバ群への繰返しの問い合わせが非再帰的問い合わせである。

再帰的問い合わせ
名前解決がされたのであれば、その完全な結果を、できなかった場合は「存在しない」とするやはり完全な結果を求める問い合わせである。ユーザのパーソナルコンピュータなどといった端末から、DNSキャッシュサーバに対して送られる。
非再帰的問い合わせ
反復問い合わせとも。この問い合わせを受けたDNSコンテンツサーバは、自分自身が持っている情報であればそれを、委任している情報であればそのこと(委任情報)を返す。DNSキャッシュサーバはその内容に応じて次々と問い合わせを反復する(一般的にはルートサーバから順にドメインツリーをたどる)。

実装[編集]

代表的なDNSサーバソフトウエアは次のものがある。 DNSサーバの中には、DNSコンテンツサーバとDNSキャッシュサーバが別々になっているものもあれば、両方機能を搭載するものもある。

OSで指定する「DNSサーバ」[編集]

WindowsmacOS、各種UNIX / Unix系Linuxなど)、Androidをはじめとする、ネットワーク通信可能なオペレーティングシステムには、ネットワーク関連の設定に「DNSサーバ」のIPアドレスを指定する項目がある[6]。オペレーティングシステムが名前解決を必要とした際、問い合わせるDNSキャッシュサーバのIPアドレスである。

これらの情報は、DHCPサーバから(割当IPアドレス情報とあわせて)受け取ることが可能である[7]

大抵、複数のDNSサーバを指定可能になっている。DNSサーバへ問い合わせる際に優先順位の高い順に行い、応答がない場合(該当DNSサーバが停止、通信経路で障害発生など)に次位(代替)以降のDNSサーバへ問い合わせを行うようになっている。クライアントコンピュータが名前解決できないと、電子メールやウェブサーバの利用ができなくなってしまうため、DNSサーバの可用性は大変重要である。

脚注[編集]

  1. ^ MXレコードなどはIPアドレス以外に解決される。他にも近年はメイルの返信元の真正性確認などに使われるTXTフィールドなどがある。設計上は任意の拡張が容易なように作られている(たとえば、IPv6のために追加されたAAAAレコードなど)。
  2. ^ 特に、可用性を上げるためのセカンダリサーバは、上流のネットワークなどができるだけ別系統であることが望ましく、2系統のネットワークを持たない場合などには外部に出すのが現実的なことが多い。
  3. ^ 社内専用など、一般に公開しないゾーンを管理するコンテンツサーバというようなものもある。当然ながら、レジストラへの登録の必要はない。
  4. ^ http://technet.microsoft.com/ja-jp/library/cc731204.aspx
  5. ^ フィッシングサイトなど悪意のあるウェブサーバへ誘導されてしまったり、メールの転送先を変更され窃取されたりすることになる。
  6. ^ Windowsでは、コントロールパネルのネットワーク設定、macOSでは「システム環境設定」の「ネットワーク」、Unix系では/etc/resolve.confなど
  7. ^ DHCPサーバから得た情報で設定する場合の指定項目は「DNSサーバのアドレスを自動的に取得する」などと表現されている。

関連項目[編集]

外部リンク[編集]