LoginSignup
1
1

DNS

Domain Name System

インターネット上のホストやネットワーク上に存在するリソースを識別するための分散型システムのこと。

中央集権型ではないため、あるサーバが故障したとしても別のサーバによってシステム全体が稼働し続ける。

DNSによって IPアドレス と ドメイン名 を変換(名前解決)することができる。

DNSの目的は ドメイン名 と IPアドレス の変換

IPアドレス

IPアドレスとは、IPというネットワーク上のデータ配達プロトコルにおいて、コンピュータの住所として使用される情報を指す。

1台のコンピュータが用途別に複数のIPアドレスを持つこともある。

IPアドレスはIPv4では32bit、IPv6では128 bit。以降の説明ではIPv4を扱う。

IPアドレスはネットワーク上の住所として重複が許されない一方で、bit数が決まっているため、発行可能な数に限りがある。

IPv4は、割り当てることができるアドレスの数が43億個程度であり、世界中でネットワークに接続する機器が爆発的に増えたことで枯渇問題が発生し、128bitのサイズのIPアドレスIPv6が登場した。

IPv4とIPv6には互換性がない。現在は、IPv6に移行する過程であり、さまざまな工夫のもとで両者が共存している状態にある。

IPアドレスを2進数で表現すると、11000110 00110011 01100100 00000001のようになる。ただこれでは長すぎるため、一般的には8bitごとにドットで区切り198.51.100.1のように10進数で表現する。

ドメイン名

ドメインという用語は文脈によってさまざまな意味を持つが、ここではインターネット上で、特定の組織・ネットワーク・個人を識別するための名前のことを指す。

IPアドレスと同様に、インターネット上の住所として例えられることが多くwww.example.comなどの形式で表現される。

ドメインはDNSによって特定のIPアドレスと紐づけられているため、DNSに対してドメイン名で問い合わせをすれば紐づくIPアドレスを回答してくれる。

例えばユーザが「Googleのサイトにアクセスしたい」というときに、GoogleのWebサーバのIPアドレスを知らなかったとしてもgoogle.comというドメイン名さえ知っていれば、アクセスに必要なIPアドレスはDNSが名前解決してくれる。

サービスを運用する側にとっても、IPアドレスが変わった時にユーザに周知されたドメイン名を変更することなく紐づくIPアドレスだけを変更することができる(google.comはそのまま使い続けることができる)。

また、ドメインは階層構造を持っている。

  • トップレベルドメイン(TLD、Top Level Domain)、
  • セカンドレベルドメイン(SLD、2LD、Second Level Domain、2nd Level Domain)
  • ・・・

DNS.png

各階層のそれぞれのドメインを管理するサーバをDNSサーバと呼び、最上位のDNS
サーバをルートDNSサーバと言う(TLDが最上位ではない)。

TLDは日本であればjp、アメリカであればusなど。また、comorgなどもここに含まれる。(com=Commercial、商用の。org=Organization、組織。)

SLDには、co.jpor.jpgo.jpne.jpac.jpなどが含まれる。(co=Corporation、企業。or=Organization、組織。go=Government、政府。ac=Academic、教育機関。)

一つのドメイン名に対して複数のIPアドレスを紐づけることもできる(DNSラウンドロビン)。

また、一台のサーバに複数のドメイン名をつけることもできる(仮想ホスト)。

FQDN

ドメイン名の中でも、ホスト名を含む特別なドメイン名をFQDN(Full Qualified Domain Name)と呼ぶ。FQDNは、完全修飾ドメイン名とも呼ばれる。

ホスト名とは、個々のコンピュータを識別するために付けられる名前のことを指す。

FQDNであることを明示したい場合はwww.example.co.jp.のように末尾にドット.をつけることがある。

慣習的に、Webサーバにはwww、DNSサーバにはns(Name Server)、メールサーバにはmx(Mail Exchanger)などのホスト名が使われる。

「ドメイン名があればIPアドレスがわかるのに、なぜホスト名なんて必要なの?」と思うが、特に一台のサーバが複数のサービスを提供するような場合、情報がドメイン名だけだとホストまでしかわからない。ドメイン名までが同じであってもFQDNに含まれるホスト名が異なることで、各サービスを識別することができる(仮想ホスト)。

例えばexample.co.jpを運用するサーバがWebサーバとメールサーバの2つの機能を提供する場合、www.example.co.jpなのか、mx.example.co.jpなのかで両者のサービスを区別できる(ドメイン部分は同じ)。

またwww.co.jpwww.co.usなどのように異なるドメイン間で同じホスト名が利用できるのもメリットとして挙げられる。

ネットワークアドレスとホストアドレス

IPアドレスは、 ネットワーク部 と ホスト部 から構成される。

IPアドレスという言葉は、基本的には特定のコンピュータを指して使われるが、ルーティングなどの文脈では、スイッチングハブやルータによって分割されたセグメント、またはネットワーク全体を指すことがある。この時のIPアドレスはネットワークアドレスと呼ばれる。

IPアドレス.png

グローバルIPアドレスをプライベートIPアドレス

DNSによって名前解決されるのは基本的にグローバルIPアドレス。

プライベートIPアドレスは、内部ネットワークで使用される。

ネームサーバ

ドメイン名、IPアドレスの対応情報を管理するサーバはDNSサーバまたはネームサーバと呼ばれる。

ゾーン

ネームサーバは複数のドメイン名を管理することかできる。一つのネームサーバが管理する複数のドメイン名をドメイン領域と呼び、これをゾーンと言う。

リゾルバ

DNSサーバに対して、IPアドレスの問い合わせを行うクライアント側のソフトウェアをリゾルバという。

通常リゾルバはOSに標準で搭載されているため、開発者がソフトウェアとしてインストールしたり直接操作したりとリゾルバを意識する機会はあまりない。

無題のプレゼンテーション (3).png

プライマリDNSサーバ・セカンダリDNSサーバ

DNSサーバは可用性を高めることを目的として通常は2台以上設置される。

通常時に機能するものはプライマリDNSサーバと呼ばれ、異常発生時などにバックアップとして機能するものはセカンダリDNSサーバと呼ばれる。

DNSサーバが保持する設定ファイルをゾーンファイルと呼ぶため、プライマリDNSサーバからセカンダリDNSサーバへの同期はゾーン転送と呼ばれる。

コンテンツDNSサーバ・キャッシュDNSサーバ

DNSサーバにはコンテンツDNSサーバキャッシュDNSサーバという分類もある。

コンテンツDNSサーバは権威DNSサーバとも呼ばれる。

コンテンツDNSサーバは自身でドメイン名・IPアドレスの紐付け情報を管理するのに対して、キャッシュDNSサーバはコンテンツDNSサーバに対して問い合わせた結果を一時保管するのみ。

またキャッシュDNSサーバの保持する情報は一定時間が経過すると削除される。キャッシュDNSサーバを使用することによって、同じ問い合わせに対してキャッシュから高速回答することができる。

キャッシュDNSサーバは、自身がキャッシュを保持していない情報についてはクライアントに代わって権威サーバに問い合わせをすることからフルサービスリゾルバとも呼ばれる(権威サーバは自身が知らない情報は「知らない」としか回答しないのに対して、フルサービスリゾルバは、自身が知らない情報を他の権威DNSサーバに問い合わせて解決してくれるため)。

権威DNSサーバは、自身が管理するゾーン内の情報だけではなく下位の権威DNSサーバの情報など、他のゾーンに関する情報も保持している。

例えばwww.example.co.jpというドメイン名(FQDN)があるとき、リゾルバは自身の端末に設定されたDNSサーバ(フルサービスリゾルバ)に問い合わせを行う。

リゾルバ : 「www.example.co.jpのIPアドレスを教えて

フルサービスリゾルバは、www.example.co.jpのIPアドレスを保持していない時、まずルートDNSサーバに問い合わせを行う。

フルサービスリゾルバ : 「www.example.co.jpのIPアドレスを教えて

ルートDNSサーバはwww.example.co.jpのIPアドレスを知らない。ただし、jpドメインを管理している下位の権威サーバは知っている。そこで、TLDであるjpを管理する権威DNSサーバのIPアドレスを回答する。

ルートDNSサーバ : 「私はwww.example.co.jpを知らないからjpに聞いてください」

フルサービスリゾルバはjpを管理する権威DNSサーバに対して、ルートDNSへの問い合わせと同じ問い合わせを行う。これを反復問い合わせと呼ぶ。

フルサービスリゾルバ : www.example.co.jpのIPアドレスを教えて」

www.example.co.jpjpのゾーンでもないため、jpもIPアドレスを知らない。そこでjpの権威DNSサーバは、下位のco.jpを管理する権威DNSサーバのIPアドレスを回答する。

DNSサーバ(jp) : 「私はwww.example.co.jpを知らないからco.jpに聞いてください」

フルサービスリゾルバはco.jpを管理する権威DNSサーバのIPアドレスに再度、反復問い合わせを行う。

フルサービスリゾルバ : www.example.co.jpのIPアドレスを教えて」

しかし、co.jpを管理する権威DNSサーバのゾーンにもwww.example.co.jpは含まれていないため、さらに下位のexample.co.jpの権威DNSサーバのIPアドレスが回答される。

DNSサーバ(co.jp) : 「私はwww.example.co.jpを知らないからexample.co.jpに聞いてください」

フルサービスリゾルバは、example.co.jpを管理する権威DNSサーバに対して、再度問い合わせを行う。

フルサービスリゾルバ : www.example.co.jpのIPアドレスを教えて」

www.example.co.jpexample.co.jpを管理する権威DNSサーバのゾーン範囲内になるため、ここでようやくwww.example.co.jpに紐づくIPアドレスが回答される。

フルサービスリゾルバは、リゾルバに対してwww.example.co.jpに紐づくIPアドレスを回答して名前解決が終了する。

DNSサーバ(example.co.jp) : www.example.co.jpのIPアドレスは198.51.100.1です」

これらの流れの中で権威DNSサーバは自身のゾーン内のドメインに紐づくIPアドレスのみではなく、下位の権威DNSサーバのIPアドレスも保持していて、ゾーン同士が連携しているように見える点がポイント。

DNS_resolve.png

コンテンツDNSサーバ = 権威サーバ
キャッシュDNSサーバ = フルサービスリゾルバ

リソースレコード

DNSはIPアドレスとドメイン名を変換する役割を持つが、実態としては複数のサーバによって構成される分散型のシステムであり大量のドメイン名・IPアドレス情報を管理する分散型データベースとみなすこともできる。

DNSサーバには権威DNSサーバとフルサービスリゾルバの2種類があり、権威DNSサーバはフルサービスリゾルバからの問い合わせを自身の管理する情報から回答する。

このとき、それぞれの権威DNSサーバで管理されている情報はリソースレコードと呼ばれる。リソースレコードは、DNSサーバの設定ファイル(ゾーンファイル)などに記載される。リソースレコードにはいくつかの種類がある。

Aレコード

Address Record
ホスト名に対応するIPv4アドレス。
例えば、

www IN A 198.51.100.0

というレコードがあるとすると、wwwというホストがIPv4アドレス198.51.100.0を持っていることを示す。

AAAAレコード

IPv6 Address Record
ホスト名に対応するIPv6アドレス。

CNAMEレコード

Canonical Name Record
ホスト名にエイリアス(別名)を指定することで、1つのホスト名に複数のドメイン名を紐づける。(canonical=標準的、正規の)
例えば、www.example.comexample.comのCNAMEとして設定されると、example.comへの問い合わせはwww.example.comへの問い合わせと同じ扱いということになる。

MXレコード

Mail Exchanger Record
メール送信において、宛先メールアドレスのドメインと紐づくメールサーバおよび優先度を指定する。
例えば、example.comのMXレコードがmail.example.comである場合、これはexample.comのメールサーバがmail.example.comであることを示す。

NSレコード

Name Server Record
そのドメインから見た、下位のドメインの権威サーバ。
example.comのNSレコードが、ns1.otherdns.comns2.otherdns.comの場合、example.comの下位にはns1.otherdns.comns2.otherdns.comという権威サーバがいることを示している。

PTRレコード

Pointer Record
逆引きルックアップのために使用される。IPアドレスからホスト名への逆引き情報を提供する。

SOAレコード

Start Of Authority Record
そのDNSサーバが管理する領域(ゾーン)に関する情報。

DNSラウンドロビン

複数のDNSサーバが同じドメイン名を共有し、各DNSサーバに対して負荷を分散するための仕組み。

例えば1台のDNSサーバのAレコードに対して、XとYの2台分のDNSサーバのIPアドレスを設定しておくと、1回目の問い合わせはXに、2回目の問い合わせはYに、といった具合に、処理を分散させることができる。

ロードバランサーなどの負荷分散装置を使用せずに、容易に負荷分散が実現できる反面、問い合わせを割り振る際に、割り振り先の処理能力(スペック)や、負荷状況を考慮することはできない。

仮想ホスト

1台のサーバで仮想的に複数のドメイン名を運用すること。サーバソフトウェアの機能として提供され、主にメールサーバ、Webサーバで利用される。

1台のサーバで運用されるドメイン名に、異なるホスト名をつけることを仮想ホストと言う事もある。

IPアドレスベースの仮想ホスト

ドメインごとにIPアドレスを設定する方式。1台のサーバが複数のIPアドレスを持つことになる。

ドメイン名ベースの仮想ホスト

1つのIPアドレスに複数のドメイン名、ホスト名を割り当てることで、1台のサーバがそれぞれのドメインに紐づく複数のサービスを提供する。

参考

ネスペの基礎力 -プラス20点の午後対策 (情報処理技術者試験)
ストーリーで学ぶネットワークの基本
ネットワークスペシャリスト試験に出るところだけを厳選! 左門至峰による ネスペ教科書 改訂第2版

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1