DNSサーバについて調べたので備忘録。
DNS(Domain Name System)は、ドメイン名を管理、運用するためのシステムで、ドメイン名とIPアドレスの対応付けや、メールの宛先ホストを指示する際に使われます。
これを「名前解決」と呼びます。
そしてこの名前解決を行うサーバがDNSサーバです。
DNSサーバは大きく「権威DNSサーバ」と「DNSキャッシュサーバ」の2つに分けられます。
権威DNSサーバ
権威DNSサーバは「コンテンツサーバ」とも呼ばれており、あるドメイン名の情報を記録・管理する正当な権限を有し、そのドメインの情報についての外部からの問い合わせに応答するDNSサーバです。
例えば「aaa.bbb.jp」というドメインがあった場合、このドメインのIPアドレス等の情報を管理しているDNSサーバのことです。
さらに権威DNSサーバは、管理しているドメインによって以下のような種類もあります。
- ルートサーバ
- トップレベルドメインDNSサーバ
ルートサーバは、「.jp」「.com」「.org」といったドメイン名の一番右側(トップレベルドメイン)のドメイン名を管理しているDNSサーバが、どこ(どのIPアドレス)にあるのかを管理しています。
キャッシュDNSサーバは名前解決をする際、このルートサーバに一番最初に問い合わせを行い、トップレベルドメインを管理しているDNSサーバ(トップレベルドメインDNSサーバ)→対象のドメインを管理しているDNSサーバ、といった順番で問い合わせていきます。
なお、ルートサーバは世界に13台しかありません。
DNSキャッシュサーバ
DNSキャッシュサーバは、利用者から名前解決のリクエストを受け、返す役割をもつサーバです。利用者はまず、DNSキャッシュサーバに問い合わせを行います。問い合わせを受け付けたDNSキャッシュサーバは、ルートサーバに問い合わせを行い、ルートサーバから返ってきた情報を元に対象のドメインを管理しているDNSサーバに辿り着くまで問い合わせを行います。
そして対象のドメインを管理しているDNSサーバの情報が判明したら、利用者に名前解決の結果を返し、自身はその情報をDNSレコードに設定されているTTLに基づいてキャッシュしておきます。(定められた時間情報を保管しておく)
そうすることで、次回同じドメインの名前解決の問い合わせがきた際に、ルートサーバへ問い合わせをすることなく結果を返すことができ、DNSサーバや回線などのリソースの有効活用に繋げることができます。
ちなみに、DNSキャッシュサーバがルートサーバなどの権威DNSサーバに問い合わせを行うことを、「再帰問い合わせ(Recursive)」と言い、答えを得られるまで繰り返しほかのDNSサーバに問い合わせを行うことを「反復問い合わせ(Iterative)」と言います。
また、DNSキャッシュサーバは「フルサービスリゾルバ」とも呼ばれます。
リゾルバ
リゾルバとは、DNSクライアントのプログラムのことで、スタブリゾルバとも呼ばれています。
例えば、Webブラウザでドメイン名を入力する場面があると、Webブラウザは実際に通信を行うサーバのIPアドレスを調べるために、スタブリゾルバを呼び出します。スタブリゾルバは、キャッシュDNSサーバ(フルサービスリゾルバ)に対して問い合わせを行い、得られた結果をWebブラウザに返します。
このように、スタブリゾルバはアプリケーションとDNSキャッシュサーバ間の橋渡しの役割を担っています。
リゾルバはプログラム名ということですので、フルサービスリゾルバはDNSキャッシュサーバ内のプログラムということになります。
内部向けと外部向けのDNSサーバの役割
DNSサーバには内部(FWで社内側とインターネット側に区切る)と外部の2種類があります。
それぞれ役割が異なっており、内部向けは社内システムを利用する際などに利用され、外部向けはインターネットにアクセスする際や、外部に公開しているWebサイトがある場合にそのWebサイトのドメインの管理に利用されます。
外部向けの通信の名前解決や、外部からの名前解決を外部DNSで受け持つことで、社内LANへの外部からの通信をしなくて済むようになるため、セキュリティリスクを減らすことができます。
まとめ
DNSに関連したサイバー攻撃やセキュリティ対策についても、後の記事で書きたいと思います。
コメント