it

DNSの仕組みとは?名前解決の流れをわかりやすく解説!(リゾルバ・権威サーバー・キャッシュなど)

当サイトでは記事内に広告を含みます

Webサイトを閲覧するとき、私たちはドメイン名を入力するだけで目的のページにたどり着けます。

しかしその裏側では、DNSという仕組みが複数のサーバーと連携しながら高速に動作しています。

この記事では、DNSの仕組みと名前解決の流れについて、リゾルバ・権威サーバー・キャッシュといったキーワードを交えながらわかりやすく解説していきます。

ネットワークの基礎をしっかりと固めたい方にとって、必ず押さえておきたい内容です。

DNSの仕組みとはドメイン名をIPアドレスに変換する階層型の名前解決システムのこと

それではまず、DNSの基本的な仕組みと全体像について解説していきます。

DNS(Domain Name System)とは、人間が理解しやすいドメイン名をコンピューターが通信に使うIPアドレスに変換する、階層型の分散データベースシステムのことです。

「example.com」のようなドメイン名をブラウザに入力すると、DNSが自動的にそのドメインに対応するIPアドレスを探し出し、目的のサーバーへの接続を導きます。

この変換処理のことを「名前解決」と呼び、インターネット通信の出発点となる重要なプロセスです。

DNSは「インターネットの電話帳」とよく例えられます。

電話帳が名前から電話番号を調べるように、DNSはドメイン名からIPアドレスを調べる役割を担っています。

世界中に分散した複数のDNSサーバーが協調して動作することで、膨大な数のドメインを効率よく管理しています。

DNSが誕生した背景

インターネットの前身であるARPANETの時代、ネットワーク上のすべてのホスト情報は「hostsファイル」という1つのテキストファイルで管理されていました。

接続台数が少ない時代はこの方式でも対応できましたが、インターネットの爆発的な拡大とともに管理が追いつかなくなりました。

この問題を解決するために、1983年にポール・モカペトリスによってDNSが設計・導入されました。

分散管理と階層構造の採用により、世界規模のドメイン管理が現実のものとなったのです。

DNSの階層構造とドメイン名の仕組み

ドメイン名は右から左に向かって階層が深くなる構造になっています。

例:「www.example.com」の階層構造

「.」(ルート)→「com」(トップレベルドメイン)→「example」(セカンドレベルドメイン)→「www」(サブドメイン)

この階層ごとに管理するDNSサーバーが分かれており、それぞれが担当範囲の情報を保持しています。

この階層構造によって、世界中の膨大なドメインを分散管理することが可能になっています。

DNSを構成する主なサーバーの種類

DNSの名前解決には複数の種類のサーバーが関わっています。

サーバーの種類 役割
スタブリゾルバ クライアントOS内に組み込まれ、フルサービスリゾルバに問い合わせる
フルサービスリゾルバ(キャッシュDNSサーバー) クライアントの代わりに再帰的に問い合わせを行い、結果をキャッシュする
ルートDNSサーバー DNSの頂点に位置し、TLDサーバーの情報を管理する
TLDサーバー 「.com」「.jp」などのトップレベルドメインを管理する
権威DNSサーバー 対象ドメインのゾーン情報を保持し、確定的な回答を返す

これらのサーバーが連携することで、どのようなドメインでも正確に名前解決できる仕組みが成り立っています。

名前解決の具体的な流れをステップで理解する

続いては、実際の名前解決がどのような手順で行われるかを確認していきます。

具体的なステップを追うことで、DNSの仕組み全体がより明確に理解できます。

名前解決の全体的なステップ

ブラウザにURLを入力してからWebページが表示されるまでの名前解決の流れは、以下のとおりです。

①ブラウザがOSのスタブリゾルバにドメイン名を渡す

②スタブリゾルバがローカルキャッシュを確認し、なければフルサービスリゾルバに問い合わせる

③フルサービスリゾルバがキャッシュを確認し、なければルートDNSサーバーに問い合わせる

④ルートDNSサーバーがTLDサーバーのNSレコードを返す

⑤フルサービスリゾルバがTLDサーバーに問い合わせ、権威DNSサーバーのNSレコードを受け取る

⑥フルサービスリゾルバが権威DNSサーバーに問い合わせ、AレコードからIPアドレスを取得する

⑦IPアドレスをスタブリゾルバ経由でブラウザに返す

⑧ブラウザが取得したIPアドレスのサーバーにHTTPリクエストを送信する

この一連のプロセスが通常数十ミリ秒から数百ミリ秒という短時間で完了します。

再帰的問い合わせと反復的問い合わせの違い

名前解決における問い合わせ方式には「再帰的問い合わせ」と「反復的問い合わせ」の2種類があります。

再帰的問い合わせとは、クライアントがフルサービスリゾルバに最終的なIPアドレスを求める問い合わせ方式です。

フルサービスリゾルバはクライアントに代わって各サーバーへの問い合わせをすべて肩代わりし、最終結果だけをクライアントに返します。

一方、反復的問い合わせとはフルサービスリゾルバがルートサーバー・TLDサーバー・権威サーバーへと順番に問い合わせを繰り返す方式で、各サーバーは「次に聞くべきサーバー」の情報を返すだけという特徴があります。

hostsファイルとDNSの優先順位

名前解決はDNSだけで行われるわけではありません。

OSには「hostsファイル」という名前解決のための設定ファイルが存在しており、通常はhostsファイルがDNSよりも優先して参照されます。

hostsファイルに特定のドメインとIPアドレスの対応が記載されている場合、DNSへの問い合わせは発生しません。

開発環境での動作確認やアクセス制限にhostsファイルが活用される理由はここにあります。

キャッシュの仕組みとDNS高速化の関係

続いては、DNSのキャッシュ機能がどのように名前解決を高速化しているかを確認していきます。

DNSキャッシュとは何か

DNSキャッシュとは、一度解決したドメイン名とIPアドレスの対応情報を一時的に保存しておく仕組みのことです。

キャッシュが存在する間は権威DNSサーバーへの問い合わせが省略され、フルサービスリゾルバやクライアントのキャッシュから直接IPアドレスが返されます。

これによりDNSサーバーへの負荷が大幅に軽減され、名前解決の速度が向上します。

TTLとキャッシュの有効期限

キャッシュの保持期間はDNSレコードに設定されたTTL(Time To Live)という値で制御されます。

キャッシュの種類 保持場所 特徴
クライアントキャッシュ PCやスマートフォンのOS内 最も手前のキャッシュ。TTL内は再問い合わせなし
フルサービスリゾルバのキャッシュ プロバイダや企業のDNSサーバー内 多数のクライアントが共有するキャッシュ
ネガティブキャッシュ リゾルバ内 存在しないドメインへの否定応答もキャッシュする

TTLが長いほどキャッシュが長く保持されて効率的ですが、DNSレコードを変更した際の反映が遅くなるというトレードオフがあります。

TTLは用途と更新頻度に応じて適切な値を設定することが、安定したDNS運用の基本です。

DNSキャッシュのフラッシュ方法

DNSレコードを変更した際に手元の環境で古いキャッシュが残っている場合、強制的にキャッシュをクリアすることができます。

キャッシュのクリア方法(OSごと):

Windows:ipconfig /flushdns

Mac:sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder

Linux(systemd-resolved使用時):sudo systemd-resolve –flush-caches

DNSの変更後に「なぜかアクセスできない」という場合は、まずクライアントのキャッシュをクリアしてみることが問題解決の近道でしょう。

権威DNSサーバーとリゾルバの役割分担

続いては、権威DNSサーバーとリゾルバがどのように役割を分担しているかを確認していきます。

権威DNSサーバーの役割

権威DNSサーバーとは、対象ドメインのゾーン情報を正式に保持し、問い合わせに対して確定的な回答を返すサーバーのことです。

権威DNSサーバーの回答は「Authoritative Answer(権威ある回答)」と呼ばれ、キャッシュからの回答とは区別されます。

ドメインを取得して設定したAレコード・MXレコード・TXTレコードなどは、すべてこの権威DNSサーバーに保存されています。

フルサービスリゾルバ(キャッシュDNSサーバー)の役割

フルサービスリゾルバはクライアントからの問い合わせを受け付け、各DNSサーバーへの問い合わせを代行する役割を担います。

プロバイダが提供するDNSサーバーや、Google(8.8.8.8)・Cloudflare(1.1.1.1)のようなパブリックDNSサーバーがこれにあたります。

パブリックDNSサーバーはプロバイダのDNSよりも高速・高信頼性である場合が多く、手動設定で利用するユーザーも増えています。

フォワーダーの仕組み

企業ネットワークでは、社内のDNSサーバーが直接ルートサーバーに問い合わせるのではなく、特定の上位DNSサーバーに問い合わせを転送する「フォワーダー」という設定が使われることがあります。

フォワーダーを使うことで、セキュリティポリシーに沿った通信経路の制御や、社内専用ドメインの管理と外部ドメインの解決を分離して管理できます。

スプリットDNSと呼ばれる構成では、社内からと社外からのDNS応答を使い分けることで、内部サーバーのIPアドレスを外部から隠蔽することも可能です。

まとめ

この記事では、DNSの仕組み・名前解決の流れ・キャッシュの役割・権威サーバーとリゾルバの役割分担について解説しました。

DNSはドメイン名をIPアドレスに変換する階層型の分散システムであり、スタブリゾルバ・フルサービスリゾルバ・ルートサーバー・TLDサーバー・権威DNSサーバーが連携して名前解決を実現しています。

キャッシュとTTLの仕組みを正しく理解することで、DNS変更時のトラブルを未然に防ぐことができるでしょう。

DNSの仕組みを深く理解することは、ネットワーク設計・サーバー管理・セキュリティ対策のすべての基盤となります。

ぜひ本記事を参考に、DNS全体の仕組みへの理解を深めてみてください。