「DNSってよく聞くけれど、結局何をしているの?」「ドメインとIPアドレスは何が違うの?」「DNS設定画面を開いたらAやCNAME、MXなど知らない言葉ばかり……」。
Webサイトやサーバーについて勉強し始めると、避けて通れないのがDNSです。
しかし、専門用語が多いため、初心者にとっては仕組みをイメージしにくい分野でもあります。
そこでこの記事では、DNSを初めて学ぶ人でも理解出来る様に、ドメイン名とIPアドレスの関係、名前解決の仕組み、DNSサーバーの種類、DNSレコード、実際の設定方法まで順番に解説します。
難しい言葉は出来るだけかみ砕いて説明するので、「DNSがなんとなく怖い」という人も、まずは全体像から理解していきましょう。

DNSとは?初心者向けに一言で説明
DNSはドメイン名とIPアドレスをつなぐ仕組み
DNSとは「Domain Name System(ドメイン・ネーム・システム)」の略です。
名前だけを見ると難しそうですが、まずは**「インターネット上の名前を手掛かりに、必要な情報を調べる仕組み」**と考えて下さい。
例えば、私達がWebサイトを見る時は、「example.jp」の様なドメイン名を使います。
しかし、コンピューター同士がインターネット上で通信する時には、IPアドレスなどの情報が必要です。
そこでDNSが活躍します。
DNSを使えば、「このドメイン名のWebサイトは、どのIPアドレスにつながっているのか」といった情報を調べられます。JPRSでもDNSについて、ドメイン名とIPアドレスを対応付ける仕組みとして説明しています。
イメージとしては、スマートフォンの連絡先に少し似ています。
友達に電話する時、「090……」と電話番号を全て覚えていなくても、「田中さん」という名前を選べば電話出来ますよね。
DNSも似た様に、人間が覚え易いドメイン名と、コンピューターが通信する時に使う情報を結び付けています。
ただし、「DNS=ドメイン名をIPアドレスに変換するだけの物」と覚えるのは少し不十分です。
DNSには、Webサイトの接続先だけでなく、メールをどのサーバーへ送るのか、そのドメインをどのDNSサーバーが管理しているのか、といった情報も登録出来ます。
つまりDNSは、インターネット上で目的のサービスを見つけるための大きな案内システムの様な存在です。
初心者の内は、
「DNSは、ドメイン名を使って必要な接続先などの情報を調べる仕組み」
と覚えておけば大丈夫です。
この基本が分かれば、この後登場する「名前解決」「DNSサーバー」「DNSレコード」といった言葉も理解し易くなります。
DNSがなければインターネットはどうなる?
DNSは、普段インターネットを使っているだけでは、ほとんど意識する事がありません。
しかし実際には、Webサイトを見たりメールを送ったりする時に、とても重要な役割を持っています。
例えば、あなたがブラウザに「www.example.jp」と入力したとしましょう。
人間にとっては分かり易い名前ですが、コンピューターはその名前だけを見て、どのWebサーバーへ接続すればいいのかを判断出来ません。
そこでDNSを使って、
「www.example.jpの接続先はどこですか?」
と調べます。
DNSから必要な情報が返ってくる事で、ブラウザは目的のサーバーへ接続出来る様になります。
JPNICも、DNSを使ってドメイン名から対応するIPアドレスを調べる仕組みを説明しています。
DNSはメールでも使われています。
例えば「○○@example.jp」というメールアドレスへメールを送る場合、送信側は「example.jp宛てのメールをどのメールサーバーへ届ければ良いのか」を知る必要があります。
その情報をDNSに登録するために使われるのが、後ほど紹介する「MXレコード」です。
この様にDNSは、Webサイトだけに使われている仕組みではありません。
Webサイトを見る、メールを送る、さまざまなインターネットサービスへ接続する。
その裏側で、DNSが必要な情報を案内しています。
では、「世界中のドメイン情報を1台の巨大なDNSサーバーが持っているの?」と思うかもしれません。
実際はそうではありません。
DNSは世界中にある多くのサーバーが、担当する範囲を分けながら動いています。
この「みんなで分担する仕組み」があるからこそ、世界中に膨大な数のドメイン名があっても管理出来るのです。
ドメイン名とIPアドレスの違い
ドメイン名は人間が覚え易い名前
DNSを理解するためには、まず「ドメイン名」と「IPアドレス」の違いを知っておきましょう。
ドメイン名とは、インターネット上のWebサイトやサービスなどを見つけ易くするための名前です。
例えば、
www.example.jp
の様な文字列がドメイン名の例です。
私達人間にとっては、意味のある英単語や会社名などが入ったドメイン名の方が覚え易いですよね。
数字がずらっと並んだ情報を毎回覚えるより、「example.jp」と覚える方がずっと簡単です。
ドメイン名には、もう一つ重要な特徴があります。
それは階層になっている事です。
たとえば「www.example.jp」を右から見てみましょう。
右端に「jp」があり、その左に「example」、さらにその左に「www」があります。
DNSでは、この様に「.(ドット)」で区切りながら名前を階層的に管理しています。
DNSの基本仕様を説明するRFC 1034でも、ドメイン名の空間は木の様な階層構造として設計されています。
学校に例えるなら、
「学校→2年生→A組」
の様な物です。
いきなり全校生徒を一つの名簿で管理するのではなく、大きなグループから小さなグループへ分けて管理すれば、誰がどこにいるのか整理し易くなります。
DNSも同じ様に、世界中のドメイン名を階層に分けて管理しています。
ここで覚えておきたいのは、ドメイン名その物がWebサイトでは無いという事です。
ドメイン名は、Webサイトやメールなどのサービスに使える「名前」です。
そして、その名前から接続先などの情報を調べる仕組みがDNSです。
IPアドレスはコンピューターが通信する時に使う情報
ドメイン名が人間にとって分かり易い名前なら、IPアドレスはコンピューター同士が通信する時に相手を識別するために使う情報です。
IPアドレスには、大きく分けてIPv4とIPv6があります。
例えばIPv4アドレスでは、
192.0.2.1
のように数字を「.」で区切って表します。
一方、IPv6はもっと長く、
2001:db8::1
の様な形で表されます。
DNSでは、ドメイン名とIPv4アドレスを結び付ける時に「Aレコード」、IPv6アドレスを結び付けるときに「AAAAレコード」を利用出来ます。
Amazon Route 53の公式資料でも、AはIPv4、AAAAはIPv6を扱うDNSレコードとして説明されています。
ここで、
「ドメイン名とIPアドレスはどちらも住所なの?」
と疑問に思うかもしれません。
初心者向けの記事では両方とも「住所」に例えられる事がありますが、全く同じ物ではありません。
分かり易く考えるなら、
ドメイン名はお店の名前、IPアドレスは通信する時に接続先を見付けるための情報
と考えると良いでしょう。
例えば友達から、
「駅前の○○カフェで待ち合わせね」
と言われれば、お店の名前を使って場所を探せます。
インターネットでも、人間は「example.jp」の様な分かり易い名前を使い、裏側ではDNSを使って通信に必要な情報を調べています。
大切なのは、
「ドメイン名とIPアドレスは別のものだが、DNSによって関係付けられている」
と理解する事です。
この違いが分かると、「DNSで名前解決する」という言葉の意味もぐっと理解し易くなります。
DNSの「名前解決」とは?
名前解決の流れを初心者向けに解説
DNSについて調べると、良く「名前解決」という言葉が出てきます。
難しそうに見えますが、意味はシンプルです。
JPNICでは、DNSを使ってドメイン名から対応するIPアドレスを取り出すことを「名前解決」と説明しています。
例えばブラウザで、
www.example.jp
にアクセスするとしましょう。
まず、パソコンやスマートフォンはDNSへ「www.example.jpについて教えて下さい」と問い合わせます。
すると、その問い合わせを受けたDNS側が、必要な情報を探します。
既に答えを覚えていれば、その情報をすぐ返します。
答えを持っていない場合は、他のDNSサーバーへ問い合わせながら、目的の情報を探していきます。
ここでポイントになるのが、DNSが階層構造になっている事です。
簡単にすると、
「まず大きな案内所に聞く」
「次に、もっと詳しい担当者を教えてもらう」
「最後に、そのドメインについて正式な情報を持つDNSサーバーへたどり着く」
という流れです。
JPNICの解説でも、名前解決ではルートサーバーから順番に問い合わせ先をたどり、目的のドメイン名に対応する情報を見付ける流れが紹介されています。
学校で「田中先生はどこにいますか?」と聞く場面を想像してみて下さい。
受付で聞くと、「職員室で聞いて下さい」と言われます。
職員室で聞くと、「今日は2年A組にいます」と教えてくれます。
この様に、知っている人を順番にたどって目的の情報にたどり着くイメージです。
DNSでは、この作業が非常に短い時間で行われています。
その結果、私たちは普段、複雑な仕組みを意識する事なく、ドメイン名を入力するだけでWebサイトを見る事が出来るのです。
DNSキャッシュで名前解決を速くする
DNSでは、毎回全く同じ問い合わせを最初から繰り返している訳ではありません。
一度調べた情報を一定時間保存しておく「キャッシュ」という仕組みがあります。
例えば、あるDNSサーバーが「www.example.jp」のIPアドレスを調べたとします。
少し後に、また同じ情報を聞かれたとしましょう。
毎回他のDNSサーバーへ問い合わせるより、先ほど調べた答えを使った方が速いですよね。
そこでDNSでは、一度取得した情報をしばらく保存して再利用します。
JPRSも、キャッシュDNSサーバーは名前解決で得た情報を内部に保存し、同じ問い合わせを何度も繰り返さなくて済む様にしていると説明しています。
この仕組みによって、名前解決を速くしたり、DNSサーバーへの問い合わせ回数を減らしたり出来ます。
ただし、ずっと同じ情報を保存し続ける訳ではありません。
そこで使われるのが**TTL(Time To Live)**です。
TTLとは簡単に言うと、
「このDNS情報を後何秒、キャッシュとして使って良いか」
を表す数字です。
例えばTTLが3600秒なら、DNSリゾルバーはその情報を一定条件の元で1時間キャッシュ出来ます。
AWSの公式資料でも、TTLはDNSリゾルバーが問い合わせ結果をどれくらいキャッシュ出来るかを秒単位で決める値と説明されています。
キャッシュは便利ですが、DNS設定を変更した時には少し注意が必要です。
例えばWebサイトのIPアドレスを新しい物へ変更しても、古い情報がキャッシュに残っている間は、以前のIPアドレスへ接続される事があります。
「DNS設定を変更したのに、まだ古いサイトが表示される」
という現象の一因が、このキャッシュです。
つまりDNSキャッシュは、普段は表示を速くしてくれる便利な仕組みですが、設定を変更する時には確認が必要な仕組みでもあります。
DNSサーバーにはどんな種類がある?
キャッシュDNSサーバーと権威DNSサーバーの違い
「DNSサーバー」と聞くと、全て同じ仕事をしている様に感じるかもしれません。
しかし、DNSサーバーにはそれぞれ役割があります。
初心者が最初に覚えておきたいのは、キャッシュDNSサーバーと権威DNSサーバーです。
まずキャッシュDNSサーバーです。
キャッシュDNSサーバーは、利用者の代わりにDNSの情報を探してくれるサーバーです。
例えばあなたのパソコンから、
「www.example.jpのIPアドレスを知りたい」
という問い合わせが届くと、キャッシュDNSサーバーはまず、自分が答えを覚えているか確認します。
キャッシュに答えがあれば、その情報を返します。
無ければ、他のDNSサーバーへ問い合わせて答えを探します。
JPRSでは、この様な役割を持つ物を「フルサービスリゾルバー(キャッシュDNSサーバー)」として説明しています。
一方の権威DNSサーバーは、そのドメインについて正式な情報を持っているDNSサーバーです。
例えばexample.jpを管理する権威DNSサーバーには、
「www.example.jpのAレコードはこれです」
といった情報が登録されています。
JPRSによると、権威DNSサーバーは自分が管理しているゾーンの情報を持ち他のサーバーへ聞かなくてもその情報を答えられるサーバーです。
身近な例えにすると、
キャッシュDNSサーバー=調べてくれる案内係
権威DNSサーバー=正式な情報を持っている担当者
と考えると分かり易いでしょう。
DNS設定を理解する時は、この2つを混同しない事が大切です。
ルート・TLD・各ドメインのDNSサーバー
DNSの名前解決では、必要に応じていくつかの段階をたどって情報を探します。
その仕組みを理解するために覚えておきたいのが、
「ルート」
「TLD」
「各ドメイン」
という階層です。
例えば「www.example.jp」というドメイン名を考えてみましょう。
DNSの一番上には「ルート」と呼ばれる階層があります。
ルートDNSサーバーに聞けば、「www.example.jpのIPアドレスはこれです」と、すぐに最終回答が返ってくるとは限りません。
代わりに、
「.jpについてはこちらに聞いてください」
という様に、次に問い合わせる場所を案内してくれます。
次に登場するのが、.jpや.comなどを担当するTLDのDNSサーバーです。
TLDとは「Top Level Domain」の略で、ドメイン名の一番右側にある部分です。
.jpを担当するDNSサーバーに問い合わせると、今度は「example.jpについてはこちらのDNSサーバーに聞いて下さい」というように、更に詳しい問い合わせ先が分かります。
そして最後に、example.jpについて正式な情報を持っている権威DNSサーバーへ問い合わせます。
JPNICのDNS解説でも、ルートから下の階層へ問い合わせ先をたどりながら名前解決する流れが紹介されています。
イメージとしては、
「総合案内で聞く→担当部署を教えてもらう→担当者に聞く」
という流れです。
このように、世界中のドメイン情報を1か所に集めるのではなく、担当を分けて管理している事がDNSの大きな特徴です。
初心者が覚えておきたいDNSレコードの種類
A・AAAA・CNAMEレコードとは?
DNSの設定画面を開くと、
「A」
「AAAA」
「CNAME」
といった文字が並んでいる事があります。
初めて見ると、「何の暗号?」と思うかもしれません。
これらはDNSレコードの種類を表しています。
DNSレコードとは簡単にいうと、DNSに登録しておく情報の種類です。
まず覚えたいのがAレコードです。
Aレコードは、ドメイン名にIPv4アドレスを設定する時に使います。
例えば、
www.example.jp → 192.0.2.1
という関係をDNSに登録する時に利用出来ます。
次にAAAAレコードです。
役割はAレコードに似ていますが、こちらはIPv6アドレスを設定する時に使います。
AWSの公式資料でも、AはIPv4アドレス、AAAAはIPv6アドレスを扱うレコードとして案内されています。
そしてCNAMEレコードは、ある名前を別のドメイン名やホスト名へ結び付ける時に使います。
例えば、
shop.example.jp → service.example.net
の様に設定します。
AWSもCNAMEについて、現在のレコード名に対するDNS問い合わせを別のドメイン名やサブドメインへ対応付けるレコードと説明しています。
初心者なら、
A=IPv4
AAAA=IPv6
CNAME=別の名前を指定する
と覚えておけば十分です。
実際にレンタルサーバーやクラウドサービスを使うと、
「AレコードにこのIPアドレスを設定してください」
「CNAMEにこの文字列を設定してください」
と案内される事があります。
その時は自己流で入力せず、利用しているサービスの公式マニュアルに書かれた値を確認して設定しましょう。
MX・TXT・NS・SOAレコードとは?
DNSには、Webサイトの接続先だけでなく、様々な情報を登録出来ます。
ここではAレコードなどと一緒に良く見かける、MX・TXT・NS・SOAについて簡単に紹介します。
まずMXレコードです。
MXは主に、そのドメイン宛てのメールをどのメールサーバーへ届けるのかを示すために使います。
例えば「user@example.jp」宛てにメールを送る場合、送信側はDNSのMXレコードなどを使って、example.jpのメールを受け取るサーバーを調べます。
次にTXTレコードです。
TXTレコードは、その名前の通り文字列を登録出来るレコードです。
メールのなりすまし対策や、外部サービスで「このドメインを本当に管理している人か」を確認する時などにも使われます。
NSレコードは、そのドメインやゾーンについて、どのDNSサーバーが権威を持っているのかを示すために使われます。
そしてSOAレコードは、そのDNSゾーンを管理する上で必要になる基本的な情報を持つレコードです。
これらはDNSサービスを普通に利用しているだけなら、自分で細かく設定しない事もあります。
初心者の段階で全ての意味や書き方を丸暗記する必要はありません。
AWS Route 53でも、A・AAAA・CNAME・MX・NS・TXTなど複数種類のDNSレコードが扱われています。
まずは、
「DNSには目的毎に違う種類の情報を登録出来る」
という事を理解しておきましょう。
そうすれば、DNS設定画面で「MX」「TXT」などを見ても、「これは何かの設定項目なんだな」と落ち着いて調べられる様になります。
DNSの設定方法を初心者向けに解説
Webサイトを公開する時のDNS設定
独自ドメインでWebサイトを公開する時には、取得したドメイン名とWebサーバーを正しく結び付ける必要があります。
ここでDNS設定が登場します。
例えば「example.jp」というドメインを取得し、Webサーバー会社から、
「Aレコードに192.0.2.1を設定して下さい」
と案内されたとしましょう。
この場合、利用しているDNSサービスの管理画面を開き、Aレコードを追加します。
設定画面では、主に「名前」「レコードタイプ」「値」「TTL」といった項目が表示されます。
例えば、
名前にはwww
レコードタイプにはA
値には192.0.2.1
という様に設定します。
するとDNSに、
「www.example.jpのIPv4アドレスを聞かれたら、192.0.2.1と答える」
という情報を登録出来ます。
AWS Route 53などのDNSサービスでも、レコード名・種類・値などを指定してDNSレコードを作成する仕組みになっています。
ただし、ここで初心者が注意したい事があります。
それが**「どのDNSサービスが自分のドメインを管理しているのか」**です。
たとえば、A社でドメインを取得して、B社のDNSサービスを利用している場合があります。
このとき、実際にはB社側のDNSへレコードを設定する必要があるのに、A社の別の設定画面を変更しても期待した結果にならない事があります。
そのためDNS設定をする時は、
「現在、このドメインのDNSをどこで管理しているのか」
を確認する事が大切です。
設定画面の形はサービスによって違いますが、考え方は同じです。
「この名前について問い合わせが来た時、どの情報を返すのかをDNSへ登録する」
これがDNS設定の基本です。
DNS設定を変更する時に注意したいTTL
DNS設定画面を見ると、「TTL」という項目が表示される事があります。
初めて見ると難しそうですが、考え方はそれほど複雑ではありません。
TTLは「Time To Live」の略です。
簡単に言うと、
「そのDNS情報をキャッシュにどのくらい保存して良いか」
を決める時間です。
通常は秒数で設定します。
例えばTTLが3600秒なら、DNSリゾルバーは取得した情報を一定条件の元で最大1時間キャッシュ出来ます。
AWSの公式資料でも、TTLはDNSリゾルバーがレコードをどれだけ長くキャッシュ出来るかを決める秒数として説明されています。
では、「短い方がいつもいいの?」と思うかもしれません。
そうとは限りません。
TTLが長ければ、同じDNS情報を何度も問い合わせなくて済むため、問い合わせ回数を減らせます。
一方、DNS設定を変更した場合には、古い情報がキャッシュに長く残る可能性があります。
反対にTTLを短くすると、新しい情報を取りに行く機会は増えますが、DNSへの問い合わせも増え易くなります。
そのため、Webサーバーの引っ越しなど大きな変更を行う場合には、事前にTTLを短くしておく方法があります。
JPRSもDNSサーバーの移行について、作業開始前にTTLを短く出来れば切り替えに必要な時間を短く出来ると説明しています。
ただし、変更する直前にTTLを短くすれば、すぐに全て解決する訳ではありません。
既に古いTTLでキャッシュされた情報は、その有効期間が終わるまで残る事があるからです。
TTLはただの数字ではありません。
DNS設定を変更する時の切り替わり方にも関係する大切な設定
と覚えておきましょう。
DNS設定が反映されない時の原因と確認方法
「DNSの反映に時間が掛かる」とはどういう意味?
DNS設定を変更した後、
「反映まで時間が掛かります」
「DNSが浸透するまで待ちましょう」
と言われた経験がある人もいるでしょう。
この言い方だけを聞くと、
「新しいDNS情報が世界中へ少しずつ配られている」
ように感じるかもしれません。
しかし、DNSを理解するうえでは、キャッシュが残っている可能性を考える事が大切です。
例えば、WebサイトのIPアドレスを、
192.0.2.1
から
192.0.2.100
へ変更したとしましょう。
権威DNSサーバーの情報が新しくなっていても、別のキャッシュDNSサーバーが古い192.0.2.1という情報を保存している事があります。
そのキャッシュが有効な間は、古いIPアドレスが利用される場合があります。
JPRSもDNSサーバー移行の解説で、キャッシュDNSサーバーに残った古い情報は、それぞれに設定されたTTLの時間が経過した後に消えていく仕組みを説明しています。
そのため、
「自分のスマートフォンでは新しいサイトが表示された」
「でも友達のパソコンでは古いサイトが表示される」
という事も起こり得ます。
利用しているDNSリゾルバーや、いつ情報を取得したかが違えば、持っているキャッシュの状態も違うからです。
ここで覚えておきたいのは、
「DNS設定を保存した=世界中ですぐ同じ結果になる」とは限らない
という事です。
DNS変更後に古い情報が見えても、すぐに「設定に失敗した」と決めつける必要はありません。
まずは設定内容が正しいか、TTLはどのくらいか、古いキャッシュが残っている可能性は無いかを順番に確認しましょう。
DNSトラブルが起きた時に確認したいポイント
DNSを設定したのにWebサイトが表示されないと、不安になって何度も設定を書き換えたくなるかもしれません。
しかし、DNSトラブルでは適当に設定を変えるより、原因を一つずつ確認する事が大切です。
まず確認したいのがネームサーバーです。
自分がDNSレコードを設定したサービスが、本当にそのドメインのDNSを管理しているのかを確認しましょう。
別のネームサーバーが指定されている場合、せっかくAレコードを設定しても、その設定が問い合わせに使われない事があります。
次に確認したいのがホスト名とDNSレコードの種類です。
たとえば「www.example.jp」を設定したいのに、「example.jp」だけを設定していると、期待した結果にならない事があります。
また、Aレコードに設定するべき場所へCNAMEを設定するなど、レコードの種類を間違えていないかも確認しましょう。
さらに、入力した値も重要です。
IPアドレスやホスト名をコピーするときに余計な文字が入っていないか、サービス会社から指定された値と同じかを確認します。
そして忘れてはいけないのが、TTLとキャッシュです。
設定が正しくても、以前の情報がキャッシュされていれば、すぐに新しい結果にならない事があります。
JPRSも、DNSサーバーの移行時にはTTLとキャッシュを考えながら新旧のDNS環境を適切に運用する事が重要だと説明しています。
DNSでトラブルが起きたら、頭の中で次の様に順番に整理すると分かり易くなります。
「問い合わせ先のDNSは合っている?」
「設定した名前は合っている?」
「レコードの種類は合っている?」
「入力した値は合っている?」
「古いキャッシュが残っていない?」
「Webサーバー側の設定は終わっている?」
DNSという言葉だけを見ると難しく感じますが、問題を一つずつ分けて確認すれば原因を探し易くなります。
大切なのは、分からないまま何度も設定を変更しない事です。
まずDNSの仕組みを理解し、「今どの段階で問題が起きているのか」を順番に確認していけば、初心者でもDNSトラブルに対応し易くなります。
コメント