DNSサーバ

DNSサーバ（ディーエヌエスサーバ）は、コンピュータ・ネットワークにおいて、Domain Name System（DNS）の「名前解決」機能が実装されたサーバである。
概要.
DNSサーバには、後述するように2種類があり、それぞれ全く異なる働きをするので、「DNSサーバはこのようなことを行う」と説明することはできない。そのためここでは、Domain Name Systemの役割をまず説明する。
インターネットでの通信に際し、URLの中やメールアドレスの中などでの相手先は、IPアドレスが直接指定されることはまず無く、ドメイン名などといった「名前」が使われている。そういった名前から、IPアドレスなどを得る「解決」を行うシステムがDomain Name Systemである。
あるコンピューターが他のコンピュータとインターネットプロトコル（IP）を介して通信する際には、通信の相手となるコンピュータに付与されたIPアドレスを知る必要がある。一方、URLなどには（IPアドレスを、直接指定することもできるが）、もっぱらドメイン名を使って対象を記述する。ドメイン名から、IPアドレスなどといった必要な情報を得る（名前を解決する）ために、ネットワーク上で情報を提供する仕組みがDomain Name Systemであり、それを担う各サーバがDNSサーバである。
DNSサーバは分散型データベースの1ノードとして機能している。DNSサーバには以下の2種類がある。
DNSサーバが持つ「ゾーン情報」（ゾーンファイル）を他のDNSサーバから取得し、同期する仕組みを「DNSゾーン転送」と言う。
コンテンツサーバとキャッシュサーバ.
DNSサーバは、ドメインの持ち主が情報を提供するための「DNSコンテンツサーバ」と、ネットワークの利用者（ドメイン名システム（DNS）の利用者）が名前解決に利用するための「DNSキャッシュサーバ」の２種類に大別できる。
両者は全く違うものだが、これらを総称して「DNSサーバ」と呼ぶ。コンテンツサーバはドメインの持ち主が管理することもできるが、多くの場合、プロバイダやレンタルサーバ業者などが提供しているものを利用する。キャッシュサーバは、接続プロバイダなどがほとんどの場合に用意しており、「インターネットを利用するための機器の設定」にその設定が含まれていたり、あるいはDHCPでIPアドレス等と一緒に自動的に設定してしまうことが専らであるが、ユーザのLAN内に（あるいは端末自身の中のサーバとして）用意して、そちらを使うこともできる（分散システム的な観点からは、そのほうが望ましい）。DNSの仕組み上キャッシュすることが前提の設計になっているため、キャッシュを持っていて「キャッシュサーバ」と専ら呼ばれるのであるが、中継するのみでキャッシュしない、いわゆるプロキシ的な動作をするものもある。
BINDなどのDNSサーバソフトウェアでコンテンツサーバとキャッシュサーバの両方の設定が行えるため、誤った設定によりセキュアでない状態で運用されてしまうことが指摘されている。
DNSコンテンツサーバ.
DNSコンテンツサーバの役割は、Domain Name Systemにおいて、ドメインの管理情報、すなわち、自ゾーンの管理するサーバのIPアドレスなどの各種リソースレコード(RR)と、ドメインの委任に関する情報を保持し、問い合わせ要求があったときに応答することである。
DNSサーバが保持する「ゾーン情報」（ゾーンファイル）内のリソースレコード（資源レコード）の種類の例を以下に示す。
など。
なお、ドメイン名からIPアドレスを検索する事を正引きと呼び、反対にIPアドレスからドメイン名を検索することを逆引きと呼ぶ。
プライマリサーバとセカンダリサーバ.
コンテンツサーバの役割での「プライマリサーバ」と「セカンダリサーバ」は、マスタとスレーブの関係にある。類似の用語である、オペレーティングシステムのネットワーク構成で指定する「DNSサーバ設定」の「優先」「代替」とは全く無関係であり、混同しないよう注意したい（#OSで指定する「DNSサーバ」）。
セキュリティ.
DNSサーバが応答不能になれば、管理しているゾーン内のコンピューターが提供しているサービスを利用できなくなり、誤った情報を回答するとクライアントコンピューターは意図していないノードにアクセスしてしまうことになる。
健全な利用環境を確保するために、DNSサーバのリソースレコードの改ざんやDoS攻撃を防ぐよう、DNSサーバソフトウエアおよびOSの設定やセキュリティ更新プログラムの適用、コンテンツサーバの多重化（セカンダリサーバを公開し、プライマリサーバは非公開とするなど）、ファイアウォールや侵入防止システムの導入などにより対策を講じる必要がある。
電子署名を用いてDNSの応答が正しいことを検証する「DNSSEC」機能が提供されている。
KSKロールオーバー問題.
DNSSECにおいて、電子署名の正当性検証に使われる最上位の暗号鍵である「ルートゾーンKSK」を更新する際に、EDNSによるIPフラグメンテーションが発生するほどのサイズの応答データが発生するが、通信設定が対応できていないDNSで通信ができず、DNSSECによる正当性検証ができなくなり、インターネットの利用に問題が発生する。
これは、「ルートゾーンKSK」が2016年まで更新されてこなかったために問題になっていなかったが、2016年10月から2018年3月にかけて、 順次変更を行うことになったために顕在化した問題である。特に2017/09/19、2017/12/20、2018/01/11から始まる更新では、IPフラグメンテーションが発生しない1280bytesを超える1414～1424Bytesの応答データが発生するために、問題が発生する。
基本的には、DNSの運用責任者がソフトウェアのアップデートや設定変更で対応すべきものであるが、一般消費者向けのルータに内蔵されているDNS Proxyでも問題が発生する可能性があり、インターネットの利用に問題が発生する場合がある。
DNSキャッシュサーバ.
DNSキャッシュサーバの役割は、DNSクライアント（ウェブブラウザなど、ドメイン名を利用する何らかのアプリケーション等）からの再帰的問い合わせによって名前解決の依頼を受け、非再帰的問い合わせを行い名前を解決することである。たとえば、Webブラウザで、www.wikipedia.orgなどを入力した際、そのコンピュータがまず名前解決しに行くのがDNSキャッシュサーバである。
DNSキャッシュサーバ自身については、直接なんらかの方法でそのIPアドレスを設定する。近年のLinux環境などでの典型としては、ネットワークインタフェースの立ち上げ時に、DHCPによって受け取ったかネットワーク設定スクリプトに書き込まれているものが、設定ファイル（典型的には /etc/resolv.conf ）に書き込まれる。あるいは古典的には /etc/resolv.conf は静的な設定ファイルであった。
再帰的問い合わせと非再帰的問い合わせ.
名前解決における問い合わせには、再帰的問い合わせと非再帰的問い合わせ（反復問い合わせ）の2種類がある。典型的で単純な例で説明すると、ユーザプログラムからlibcの codice_1 (3) を通して、/etc/resolv.conf で設定されたDNSキャッシュサーバへの問い合わせが再帰的問い合わせで、キャッシュサーバが行う、DNSコンテンツサーバ群への繰返しの問い合わせが非再帰的問い合わせである。
実装.
代表的なDNSサーバソフトウエアは次のものがある。
DNSサーバの中には、DNSコンテンツサーバとDNSキャッシュサーバが別々になっているものもあれば、両方機能を搭載するものもある。
端末で指定する「DNSサーバ」.
PCに搭載されるWindowsやmacOS、携帯端末に搭載されるiOSやAndroidをはじめとする、ネットワーク通信可能なオペレーティングシステムには、ネットワーク関連の設定に「DNSサーバ」のIPアドレスを指定する項目がある。一般に gethostbyname(3) といったようなライブラリ関数による処理の中で、これらの設定に従い、DNSキャッシュサーバへの問い合わせ等が行われる。
これらの情報は、DHCPによる管理下にあるネットワークでは、DHCPサーバから（割当IPアドレス情報とあわせて）受け取ることが可能である場合もある。管理ポリシーによっては、それに従うよう要求されている場合もある。
大抵、複数のDNSサーバを指定可能になっている。DNSサーバへ問い合わせる際に優先順位の高い順に行い、応答がない場合（該当DNSサーバが停止、通信経路で障害発生など）に次位（代替）以降のDNSサーバへ問い合わせを行うようになっている。