DNSの名前解決とは、人が読みやすいドメイン名を、通信に必要なIPアドレスへ変換する仕組みのことです。
たとえば、私たちはWebサイトにアクセスするときに example.com のようなドメイン名を使いますが、コンピュータやネットワーク機器は、そのままでは通信できません。
実際の通信では、192.0.2.1 や 2001:db8::1 のようなIPアドレスが必要になります。
このとき、ドメイン名とIPアドレスを結び付ける役割を担っているのがDNSです。
DNSはインターネットを支える非常に重要な仕組みのひとつであり、Webサイトの表示、メールの送受信、各種オンラインサービスの利用など、さまざまな場面で使われています。
DNSは Domain Name System の略です。
よく「インターネットの電話帳」とたとえられますが、実際には単なる一覧表ではありません。
DNSは、階層構造を持った分散型の仕組みです。
世界中に分散して配置されたDNSサーバーが連携しながら、必要な情報を探し出して返しています。
この仕組みがあることで、私たちは覚えにくいIPアドレスではなく、
google.comexample.jpopenai.comのようなわかりやすいドメイン名でサービスにアクセスできます。
名前解決とは、ドメイン名に対応するIPアドレスなどの情報を調べる処理を指します。
たとえば、ユーザーがブラウザで www.example.com にアクセスするとき、コンピュータは最終的にその名前に対応するIPアドレスを知る必要があります。
この「名前から通信先を調べる一連の流れ」がDNSの名前解決です。
通常、IPv4アドレスを調べる場合は Aレコード、IPv6アドレスを調べる場合は AAAAレコード が使われます。
DNSの名前解決を理解するには、まず関係する役割を整理するとわかりやすくなります。
スタブリゾルバは、PCやスマートフォンなどの端末側で動作する、DNS問い合わせの入口です。
ブラウザやアプリは、通常この仕組みを通じて名前解決を行います。
再帰リゾルバは、利用者の代わりにDNS情報を探しに行くサーバーです。
一般には、契約しているプロバイダのDNSサーバーや、公開DNSサービス、社内DNSサーバーなどがこれにあたります。
ルートネームサーバーは、DNS階層の最上位に位置するサーバーです。
目的のドメインについて、まずどのトップレベルドメインへ進めばよいかを案内します。
TLDはトップレベルドメインのことで、.com や .jp などが該当します。
TLDサーバーは、そのドメインをどの権威DNSサーバーが管理しているかを示します。
権威DNSサーバーは、そのドメインに関する正式なDNS情報を持つサーバーです。
最終的に、www.example.com のAレコードやMXレコードなどの答えを返す役割を担います。
ここでは、ユーザーが www.example.com にアクセスする場合を例に、名前解決の流れを見ていきます。
まず、ブラウザやOSは、すぐに使える情報がないかを確認します。
環境によって順序は異なりますが、一般的には次のようなものが参照されます。
ここで答えが見つかれば、外部のDNSサーバーへ問い合わせる必要はありません。
ローカルに情報がなければ、端末は設定されているDNSサーバー、つまり再帰リゾルバへ問い合わせます。
このとき利用者側は通常、「最終的な答えを調べて返してください」という形で依頼します。
再帰リゾルバに必要な情報のキャッシュがなければ、まずルートネームサーバーへ問い合わせます。
ルートネームサーバーは、通常、www.example.com の最終的なIPアドレスを返すのではなく、.com ならどのTLDサーバーを参照すべきかという情報を返します。
次に再帰リゾルバは、.com のTLDサーバーへ問い合わせます。
するとTLDサーバーは、example.com を管理している権威DNSサーバーがどこかという情報を返します。
再帰リゾルバは、案内された権威DNSサーバーへ問い合わせます。
ここで初めて、たとえばwww.example.com のAレコードは 192.0.2.10というような正式な答えが返されます。
再帰リゾルバは取得した結果を利用者の端末へ返します。
同時に、その情報を一定時間キャッシュすることが一般的です。
そのため、同じ問い合わせが繰り返された場合、次回はより速く応答できるようになります。
DNSの名前解決は、おおまかに次の流れで行われます。
端末 → 再帰リゾルバ → ルートネームサーバー → TLDサーバー → 権威DNSサーバー → 再帰リゾルバ → 端末
利用者から見ると1回の問い合わせに見えても、実際には裏側で複数のサーバーをたどって答えが見つけられています。
DNSでは、問い合わせの考え方として「再帰」と「反復的な解決」を区別して理解するとわかりやすくなります。
再帰問い合わせとは、「最終的な答えを調べて返してください」という形の問い合わせです。
一般的に、端末から再帰リゾルバへの問い合わせはこの形式です。
一方、再帰リゾルバは、必要に応じてルート、TLD、権威DNSサーバーを順番にたどりながら情報を集めます。
この過程では、途中のサーバーから「次に参照すべきサーバー」の情報を受け取り、最終回答に近づいていきます。
このような流れを、反復的な解決として説明することがあります。
DNSは階層構造になっています。
たとえば www.example.com は、概念的には次のように分けられます。
. ルートcom トップレベルドメインexample 第2レベルドメインwww ホスト名DNSはこの階層に沿って、上位から下位へと必要な情報をたどっていく仕組みです。
DNSではさまざまな種類のレコードが使われます。代表的なものを見てみましょう。
ドメイン名をIPv4アドレスに対応させるレコードです。
例:www.example.com -> 192.0.2.10
ドメイン名をIPv6アドレスに対応させるレコードです。
ある名前を、別の正規名の別名として扱うためのレコードです。
たとえば www.example.com を example.com に向けるといった使い方があります。
メールの配送先となるメールサーバーを示すレコードです。
そのゾーンを管理している権威DNSサーバーを示すレコードです。
任意のテキスト情報を設定するレコードです。
SPF、DKIM、DMARCなど、メール認証関連でもよく利用されます。
ゾーンの基本情報を持つ重要なレコードです。
シリアル番号や更新間隔など、ゾーン管理に必要な情報が含まれます。
IPアドレスからドメイン名を調べる逆引きに使われるレコードです。
DNSでは、毎回ルートから順番に情報をたどっていては効率が悪くなります。
そのため、再帰リゾルバやOSなどは、取得したDNS情報を一定時間保存して再利用します。これがキャッシュです。
TTLは Time To Live の略で、「この情報をどれくらいの時間キャッシュしてよいか」を示す値です。
たとえばTTLが300であれば、通常は300秒間、その情報を再利用できます。
キャッシュには次のような利点があります。
一方で、DNSレコードを変更しても、すぐにすべての利用者へ反映されるとは限りません。
キャッシュが残っている間は、古い情報が参照されることがあります。
このため、サーバー移転やメール設定変更の際には、TTLとキャッシュの影響を考慮することが重要です。
ドメイン名からIPアドレスを調べることを正引きといいます。
一般的なWebアクセスで行われるのはこちらです。
IPアドレスからドメイン名を調べることを逆引きといいます。
逆引きにはPTRレコードが使われ、メールサーバーの信頼性確認やログ解析などで利用されます。
権威DNSサーバーは、そのゾーンに対して正式な回答権限を持つサーバーです。
キャッシュされたコピー情報を返す再帰リゾルバとは異なり、そのドメインに関する正式な情報源として機能します。
たとえば、自社ドメインのDNSをクラウドサービスやDNSホスティングサービスで管理している場合、そのサービス上の権威DNSサーバーが正式な回答元になります。
DNSでは、管理の単位をゾーンと呼びます。
たとえば example.com のゾーンには、
wwwmailblogなどの情報が含まれます。
なお、ドメイン名とゾーンは似ていますが、必ずしも同じ意味ではありません。
管理の委任が行われれば、sub.example.com を別ゾーンとして切り出して管理することも可能です。
DNSでは、下位ドメインの管理を別の権威DNSサーバーへ任せることができます。
これを委任といいます。
たとえば、
example.com は本体側で管理するshop.example.com は別システムや別チームで管理するといった運用も可能です。
この場合、親ゾーン側でNSレコードを設定し、子ゾーンの権威DNSサーバーを示します。
DNSでIPアドレスがわかったあと、実際の通信が始まります。
たとえばWebサイトにアクセスする場合は、一般的に次のような流れになります。
つまりDNSは、インターネット通信の入口として重要な役割を果たしています。
DNSの名前解決がうまくいかない原因としては、次のようなものがあります。
DNSSECは、DNS応答が改ざんされていないかを検証しやすくするための仕組みです。
通常のDNSだけでは、返ってきた情報が本当に正しいものかを十分に確認できない場合があります。
そこでDNSSECでは、DNSデータに電子署名を付けることで、
を検証できるようにします。
ただし、DNSSECはDNS通信そのものを暗号化する仕組みではありません。
主な目的は、応答内容の完全性と正当性を確認することにあります。
近年では、DNS問い合わせ自体を暗号化して保護する仕組みも広く使われるようになっています。
DoHは DNS over HTTPS の略です。
HTTPS通信の中でDNS問い合わせを行う方式です。
DoTは DNS over TLS の略です。
TLSを使ってDNS問い合わせを暗号化する方式です。
従来の通常DNS問い合わせは暗号化されないことが多く、経路上で内容を見られる可能性がありました。
DoHやDoTは、この問い合わせ内容を保護し、プライバシーや安全性を高めるために使われます。
なお、DNSSECとDoH/DoTは役割が異なります。
DNSSECは応答内容の正当性確認、DoH/DoTは問い合わせ経路の保護に重点があると考えると理解しやすくなります。
たとえば www.example.com にアクセスする場合の流れを簡単に表すと、次のようになります。
「www.example.com のIPアドレスを知りたい」
「.com はどこへ問い合わせればよいですか」
「.com のTLDサーバーはこちらです」
「example.com はどの権威DNSサーバーが管理していますか」
「example.com の権威DNSサーバーはこちらです」
「www.example.com のAレコードを教えてください」
「192.0.2.10 です」
「答えは 192.0.2.10 です」
DNSは技術者だけのものではなく、Web担当者にとっても非常に重要です。
サーバー移転やCDN導入、メール設定変更の際は、TTLやキャッシュの影響を考慮する必要があります。
サブドメイン設定、外部サービス連携、広告計測やLP運用などでDNS設定を触る場面は少なくありません。
SPF、DKIM、DMARCの設定不備は、メール到達率やなりすまし対策に影響します。
ネームサーバー変更は、単純なレコード修正よりも影響範囲が広く、慎重な確認が必要です。
Webサーバーそのものではなく、DNS設定やキャッシュが原因で接続できなくなるケースもあります。
実際には、DNSは世界中に分散した階層型の仕組みです。
基本的な役割はその通りですが、実際にはメール配送、認証、委任、負荷分散などにも関わっています。
TTLや各種キャッシュの影響により、反映まで時間がかかることがあります。
両者は役割が異なります。
権威DNSは正式な情報を持つ側、再帰リゾルバは情報を探して利用者へ返す側です。
DNSの名前解決とは、ドメイン名に対応するIPアドレスなどの情報を、階層化された分散型の仕組みの中で探し出す処理です。
大まかな流れとしては、
という形になります。
DNSは普段あまり意識されにくい仕組みですが、Webサイトの表示やメールの送受信を支える非常に重要な基盤です。
名前解決の流れを理解しておくと、DNS設定変更時のトラブルや、サイトが表示されない原因の切り分けにも役立ちます。
以上、DNSの名前解決の仕組みについてでした。
最後までお読みいただき、ありがとうございました。