ネットワークの基礎知識

【ネットワークの基礎知識】DNSと名前解決の仕組み: IPアドレスとの関連性を理解する

インターネット上でWebサイトにアクセスする際、私たちは「example.com」のようなドメイン名を使って目的のページへたどり着きます。

しかし、実際に通信が行われる裏側では、コンピュータ同士が「192.0.2.1」のようなIPアドレスを使ってやり取りをしています。

このような人間が覚えやすいドメイン名と、コンピュータが認識するIPアドレスの橋渡しを行うのが、DNS(Domain Name System)です。

DNS(Domain Name System)
数字のIPアドレスでは扱いにくいので、文字を代用できる仕組みが開発されました。
IPアドレス関連の知識として知っておきましょう。

この記事では、DNSと名前解決の仕組みについて、IPアドレスとの関連性を中心に、実務で役立つ観点からわかりやすく解説していきます。

ネットワークの基礎知識

🔴 ネットワークの基礎知識
📌  ゼロから理解する、実務に活かせるネットワーク思考
├─【ネットワークの基礎知識】基本的な概念とネットワークの重要性
├─【ネットワークの基礎知識】IPアドレスとサブネット: 実務で活かせるネットワーク技術の基本
├─【ネットワークの基礎知識】MACアドレスとブロードキャスト: 通信の基礎と活用法
├─【ネットワークの基礎知識】ポート番号とトランスポート層の基本: TCP/UDPの使い分け
├─【ネットワークの基礎知識】DNSと名前解決の仕組み: IPアドレスとの関連性を理解する
├─【ネットワークの基礎知識】ルーティングの基礎: デフォルトゲートウェイと経路選択のしくみ
├─【ネットワークの基礎知識】ネットワーク機器の役割と構造: ルータ・スイッチ・ハブの違い
├─【ネットワークの基礎知識】NATとプライベートIPアドレスの活用: グローバルIPとの変換技術
├─【ネットワークの基礎知識】ARPとICMPの基本操作: ネットワーク診断コマンドを使いこなす
├─【ネットワークの基礎知識】無線LANと有線LANの違い: 物理層における通信手段の選択
├─【ネットワークの基礎知識】帯域とレイテンシの理解: ネットワーク性能を支える基礎用語
└─【ネットワークの基礎知識】ネットワーク分離とVLANの概念: セキュリティと構成の最適化

DNSの役割と名前解決の必要性

インターネットや社内ネットワークにおいて、ユーザーがWebサイトやサービスにアクセスする際に、必ず利用している仕組みの一つがDNS(Domain Name System)です。

DNSは人間が扱いやすい「名前」と、機械が処理する「IPアドレス」とをつなぐ、いわば翻訳システムのような役割を果たしています。

このセクションでは、DNSが果たす根本的な役割と、なぜ名前解決という仕組みがネットワークにおいて不可欠なのかを、順を追って解説します。

ドメイン名とIPアドレスの対応関係

インターネット上のすべての機器は、ユニークなIPアドレスによって識別されています。

たとえば、あるWebサーバが「192.0.2.1」というIPアドレスを持っていたとしましょう。

しかし、私たちがWebブラウザでアクセスする際、「http://192.0.2.1/」と入力するのは現実的ではありません。

そこで登場するのが「ドメイン名」です。

ドメイン名は「example.com」や「google.co.jp」のような文字列で構成され、人間にとって覚えやすく、扱いやすい形式です。

DNSは、このようなドメイン名を、その実体であるIPアドレスへ変換(名前解決)する役割を担っています。

DNSがない場合、すべての通信先をIPアドレスで覚えておかなければならず、ネットワークの運用は非常に非効率なものになってしまいます。

名前解決が必要な理由と仕組みの概要

名前解決とは、ユーザーが入力したドメイン名をDNSを介して対応するIPアドレスへと変換する一連の処理を指します。

この仕組みがあることで、私たちはWebブラウザやメールソフトでドメイン名を入力するだけで目的の通信先にたどり着くことができます。

名前解決は、以下のような流れで行われます。ユーザーがWebブラウザでURLを入力する(例:https://www.pmi-sfbac.org/)。

DNSリゾルバ(OSやネットワーク機器に搭載)が、名前解決のための問い合わせを行う。問い合わせは、まずローカルキャッシュを確認し、なければ指定のDNSサーバ(通常はISPや社内で指定)へ問い合わせる。

DNSサーバが階層的に他のDNSサーバへ問い合わせを行い、最終的なIPアドレスを取得する。 取得したIPアドレスがリゾルバに返され、通信が開始される。

この処理は非常に高速に行われており、ユーザーがURLを入力してからページが表示されるまでの間に、名前解決も完了しています。

DNSの存在がネットワークに与える影響

DNSは単なる便利な変換機能ではなく、ネットワーク通信全体の信頼性や性能にも大きく関わっています。

DNSの応答が遅延すれば、当然Webページの表示も遅くなり、ユーザー体験に悪影響を及ぼします。

また、誤った名前解決が行われれば、意図しないサーバに接続されてしまい、セキュリティ上のリスクも発生します。

さらに、DNSは内部ネットワークでも積極的に活用されており、社内サーバへの接続やマイクロサービス間の通信、クラスタ構成における名前解決など、運用管理上も重要な役割を果たしています。

そのため、DNSサーバの設計や冗長構成、キャッシュの管理などは、ネットワーク設計における重要な検討項目の一つです。

DNSの仕組みを正しく理解することで、トラブル発生時の原因切り分けや対応もスムーズに行えるようになります。

DNSの仕組みと通信の流れ

インターネットでドメイン名を入力すると、裏側ではDNSによる複雑な通信が行われています。

名前解決の仕組みを理解するには、DNSがどのようにIPアドレスを見つけ出すのか、そしてそれに関与するコンポーネント同士がどう連携しているのかを正しく把握する必要があります。

このセクションでは、DNSの構成要素や通信パターン、キャッシュ処理の詳細まで解説していきます。

DNSリゾルバがIPアドレスを見つけるまでの流れ

DNS(Domain Name System)とは、わたしたちが使う「www.pmi-sfbac.org」のようなドメイン名を、実際に通信するためのIPアドレスに変換する仕組みです。

その中で「DNSリゾルバ」は、最初の問い合わせ役となる存在で、ユーザーの代わりに複数のネームサーバを巡ってIPアドレスを見つけてきます。

下図は、実際の問い合わせの流れを具体例付きで説明したものです。

① ルートネームサーバへの問い合わせ

DNSリゾルバはまず、インターネット上に13存在する「ルートネームサーバ」に対して、「Beエンジニアのサイト(www.pmi-sfbac.org)のIPアドレスを知りたい」と問い合わせます。

するとルートネームサーバは「それは『.org』に聞いてくれ」と教えてくれます。

② トップレベルドメイン(TLD)サーバへの問い合わせ

次にリゾルバは、「.org」を管理しているTLDネームサーバへ問い合わせます。

この段階で「pmi-sfbac.org」の権威ネームサーバの情報が返されます。

③ セカンドレベルドメイン(SLD)の権威ネームサーバへ

orgのネームサーバが教えてくれた「pmi-sfbac.org」用のネームサーバに問い合わせることで、ようやく「www」のIPアドレスがわかります。

ここで得られたIPアドレスが、Webサイトへのアクセスに使われます。

④ キャッシュの役割

この一連の問い合わせは毎回行われるわけではなく、途中の情報は「DNSキャッシュ」に保存されます。

そのため、一度解決した情報はしばらくの間、問い合わせなしで再利用できます。

DNSリゾルバとネームサーバの関係

DNSの通信に関与する代表的なコンポーネントは「DNSリゾルバ」と「ネームサーバ」です。

リゾルバはクライアント側(通常はOSやネットワーク機器)に組み込まれており、ドメイン名の名前解決を開始する役割を担います。ユーザーがブラウザで「https://www.pmi-sfbac.org」を入力すると、まずこのリゾルバが動作を開始します。

一方、ネームサーバはドメイン名とIPアドレスの対応表(DNSレコード)を保持しており、リゾルバの問い合わせに対して回答を返す役目を果たします。

ネームサーバには階層構造があり、主に以下のように分かれています。

  • ルートネームサーバ
  • TLD(Top-Level Domain)ネームサーバ
  • 権威ネームサーバ(ゾーン情報を保持)

この階層構造に沿って、リゾルバは上位のネームサーバから順番に問い合わせを行い、最終的なIPアドレスを取得します。

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

DNSの問い合わせ方法には、「再帰的問い合わせ(Recursive Query)」と「反復的問い合わせ(Iterative Query)」の2種類が存在します。

それぞれ役割が異なり、リゾルバとネームサーバの関係性に応じて使い分けられています。

  • 再帰的問い合わせ
    これは、リゾルバがネームサーバに対して「最終的なIPアドレスを返してください」と丸投げする形式です。ネームサーバ側は、必要であれば他のネームサーバに問い合わせを転送し、最終的な情報を取得してリゾルバに返します。
  • 反復的問い合わせ
    こちらは、ネームサーバが「私はわかりませんが、次はこちらに聞いてください」と、次に問い合わせるべきネームサーバの情報だけを返す形式です。

リゾルバが一つずつ順番に問い合わせを行う必要があります。

通常、クライアント側のリゾルバはISPや社内のDNSサーバへ再帰的問い合わせを行い、そのDNSサーバが反復的問い合わせを使って情報を集める構成になっています。

DNSキャッシュの仕組みとメリット

DNSによる名前解決は非常に高頻度で発生するため、毎回すべての問い合わせを繰り返していては、ネットワークに大きな負荷がかかります。

そこで導入されているのが「DNSキャッシュ」です。

DNSキャッシュとは、一度名前解決に成功した結果を一定時間メモリに保持し、同じドメイン名の問い合わせが来た際に、再度問い合わせをせずに結果を返す仕組みです。

DNSキャッシュの動き

  1. ユーザーのPCが「pmi-sfbac.org」のIPアドレスを知りたくて問い合わせを出します。
  2. 問い合わせ先は、自分のネットワークが指定しているローカルDNS(リゾルバ)です。
  3. ローカルDNSはまず自分のキャッシュ(赤字のDNSキャッシュ)を確認します。
    • もしキャッシュにあれば、即座にそれを返します(問い合わせ終了)。
    • キャッシュになければ、外部のDNSサーバ(ルート、TLD、権威DNS)に問い合わせを開始します。
  4. IPアドレスが判明したら、その結果をローカルDNSがキャッシュに保存し、クライアントに返します。
  5. 次回以降はキャッシュを使うことで、高速な名前解決が可能になります。

DNSキャッシュは「TTL(Time To Live)」で有効期限が設定されており、一定時間後には削除されます。通常は、リゾルバがキャッシュ機能を内包しているのが一般的です。

このキャッシュは、以下の場所に保持される可能性があります。

キャッシュの保存場所説明
クライアントOSWindowsやmacOSなどのローカル環境で保持されます
ルーターやファイアウォールネットワーク機器が中間的にキャッシュを保持することがあります
ISPや社内のDNSサーバ再帰的問い合わせの応答結果を短期間保存しておきます

このキャッシュにはTTL(Time To Live)と呼ばれる有効期限が設定されており、期限が切れると再度名前解決が行われます。

キャッシュのメリットは次の通りです。

  • ・名前解決のレスポンスが高速になる
  • ・ネームサーバへの負荷が軽減される
  • ・ネットワーク全体のトラフィックが削減される

ただし、キャッシュが残っていることでDNSレコードの更新が即座に反映されないというデメリットもあります。

システム切り替えやドメイン移管時には、TTLの設定値を意識して対応することが求められます。

実務で活かすDNSの知識

DNS(Domain Name System)は、インターネットを支える基盤の一つであり、日常的なシステム運用やネットワーク管理に欠かせない要素です。

DNSの基本原理を理解していても、実務ではそれだけでは不十分です。

トラブル対応、設定確認、コマンド活用といった場面で即時に対応できるよう、具体的な技術や手順を知っておくことが重要です。

この章では、実務で役立つDNSに関するスキルについて、具体例を交えて解説していきます。

DNSサーバの設定と確認方法

社内システムや個人のPCにおいて、DNSサーバの設定はネットワーク接続の安定性や名前解決の速度に直結します。

特に業務システムでは、社内DNSと外部DNSの使い分けが必要です。

通常、OSのネットワーク設定画面からDNSサーバを指定します。静的に指定するケースと、DHCPで自動取得するケースがあります。以下はLinux環境における設定ファイルの一例です。

/etc/resolv.conf nameserver 8.8.8.8 nameserver 8.8.4.4

また、システムのDNS設定がどのようになっているかを確認するには、以下のようなコマンドを使用します。

cat /etc/resolv.conf

Windowsの場合は、コマンドプロンプトで以下のコマンドを使うことで設定状況を確認できます。

ipconfig /all

DNSサーバの設定が誤っていると、名前解決ができずインターネットに接続できない、イントラネットの社内サーバにアクセスできないといった不具合が発生します。

まずは現在のDNS設定を正しく把握し、必要に応じて変更することが重要です。

nslookupやdigコマンドの活用例

名前解決の結果を確認したり、DNSの状態を調査する際には「nslookup」や「dig」といったコマンドが非常に有効です。

どちらもDNSの問い合わせ結果を詳細に表示するツールであり、トラブルシューティングや動作確認に活用されています。

「nslookup」はWindowsでもLinuxでも使用可能なコマンドで、指定したホスト名の名前解決結果を取得できます。

nslookup www.example.com

これにより、対象ドメインがどのIPアドレスに紐付いているかを確認できます。また、DNSサーバを明示的に指定して問い合わせることも可能です。

nslookup www.example.com 8.8.8.8

一方で、「dig」はLinux環境を中心に使われる高度なDNS問い合わせツールで、問い合わせの詳細なステータスや応答時間、TTLなども確認できます。

dig www.example.com

また、特定のDNSレコードタイプだけを調査することも可能です。

dig MX example.com

以下に、コマンドごとの主な用途と特徴をまとめます。

コマンド用途主な特徴
nslookup簡易な名前解決確認どのOSでも利用可能、簡潔な出力
dig詳細なDNS情報取得TTLやステータスを含む詳細情報を表示

日常業務でDNSの状態を確認する際には、まずnslookupで簡易的に状況を把握し、深い分析が必要な場合にはdigで調査を進めるという使い分けが有効です。

DNS障害とそのトラブルシューティング

DNSの不調はネットワーク障害の中でも発見しにくく、かつ影響範囲が広いため、早期発見と適切な切り分けが求められます。

以下に、代表的なDNSトラブルとその確認ポイントを示します。

症状原因の可能性確認・対処方法
WebサイトにアクセスできないDNS設定誤り、名前解決失敗nslookupまたはdigで名前解決を確認
イントラネットに接続できない社内DNSのダウン、DNS経路の問題pingでIP直打ちし通信可否を確認
サーバ移設後にアクセスできないDNSキャッシュが古いTTL確認、クライアントのDNSキャッシュクリア

また、以下のコマンドでDNSキャッシュを削除して、最新の名前解決結果を取得できるようにすることも大切です。

# Windowsの場合
ipconfig /flushdns

# macOSの場合
sudo dscacheutil -flushcache;
sudo killall -HUP mDNSResponder

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

DNSはトラブルが発生してからでは遅く、あらかじめ仕組みや確認手順を理解しておくことがシステム安定運用の鍵になります。

DNSとセキュリティの関係性

DNSはインターネット上の通信において、ドメイン名とIPアドレスの橋渡しをする重要な仕組みです。

しかし、この仕組みが狙われることでセキュリティ上の大きなリスクが生まれます。

特にDNSは、従来の設計ではセキュリティをあまり考慮していないため、攻撃者による悪用がたびたび問題となっています。

本記事では、DNSを取り巻く代表的なセキュリティリスクと、それに対する対策について詳しく解説していきます。

DNSキャッシュポイズニングとは何か

DNSキャッシュポイズニングは、ユーザーが正規のWebサイトにアクセスしようとしたときに、攻撃者が偽の情報をDNSキャッシュに注入することで、偽サイトへ誘導する攻撃手法です。

これは、DNSが名前解決結果を一定期間キャッシュするという性質を悪用したものです。 たとえば、以下のような状況が考えられます。

正常時キャッシュポイズニング時
example.com → 93.184.216.34example.com → 203.0.113.99(偽サーバ)

この攻撃によって、ユーザーは気付かないうちに偽のサイトに誘導され、個人情報や認証情報を盗まれる可能性があります。

しかもDNSキャッシュが生きている間は、すべてのリクエストが偽のIPアドレスに解決され続けます。

防御策としては、DNSサーバの設定を強化し、不審な応答をキャッシュしないようにすることや、信頼できるDNSリゾルバを使用することが推奨されます。

また、DNSSECを導入することで、改ざんの検知が可能になります。

DNSSECによる改ざん防止と信頼性向上

DNSSEC(DNS Security Extensions)は、DNSに署名情報を付加することで、応答データの改ざんを防ぐための仕組みです。

これは、公開鍵暗号方式を利用して、DNSレコードの正当性を確認するものです。

DNSSECが有効になっていると、名前解決の際に得られる応答にデジタル署名が含まれ、それを検証することで、第三者による改ざんが行われていないことを確認できます。

以下に、DNSSECの動作概要を示します。

処理内容
署名付き応答DNSサーバがレコードに署名を付けて応答
検証クライアント側が公開鍵で署名を検証
結果署名が一致すれば正当性が確認される

DNSSECの導入は、DNSサーバの設定やゾーン署名の管理などの作業が発生するため、技術的なハードルはありますが、キャッシュポイズニングや中間者攻撃(MITM)への有効な対策となります。現在では多くのドメインレジストラでDNSSECの対応が進んでおり、導入も比較的容易になっています。

公開DNSの活用とリスク

Google Public DNS(8.8.8.8)、Cloudflare DNS(1.1.1.1)、OpenDNS(208.67.222.222)など、誰でも使える公開DNSが多く提供されています。

これらは高速な名前解決、安定した稼働、そして一部ではフィルタリング機能などを備えており、多くの企業や個人ユーザーに利用されています。

以下に代表的な公開DNSの比較表を示します。

名称プライマリDNS特長
Google Public DNS8.8.8.8高速・高信頼性
Cloudflare DNS1.1.1.1プライバシー重視・ログ最小限
OpenDNS208.67.222.222コンテンツフィルタリング機能あり

ただし、公開DNSを利用する場合には、そのDNSプロバイダにトラフィックが集中するという点も意識しておく必要があります。

特に業務用途や機密情報を扱う通信においては、以下のリスクが存在します。

  • ・第三者によるトラフィック監視の可能性
  • ・サービス提供者側のログ取得方針によるプライバシー懸念
  • ・設定ミスによる社内DNSとの競合や不整合

対策としては、社内ネットワークでは信頼できる内部DNSと外部DNSを適切に使い分ける構成を設計することが推奨されます。

また、DNS over HTTPS(DoH)やDNS over TLS(DoT)など、暗号化されたDNS通信技術を併用することで、より高いセキュリティが実現できます。

DNSはインターネットの根幹を支える仕組みでありながら、セキュリティの観点では多くのリスクを抱えています。

特にDNSキャッシュポイズニングなどの攻撃は、ユーザーに重大な被害をもたらす可能性があります。こうしたリスクに対応するためには、DNSSECの導入や信頼できるDNSサーバの利用が効果的です。

また、公開DNSの活用は便利である一方で、プライバシーやトラフィックの管理面での注意も必要です。

企業や組織、そしてエンジニア個人としても、DNSに関する基本的なリスクと対策を正しく理解し、日々の運用に反映させることが、安定したネットワーク環境の維持につながります。

信頼性と安全性を両立させるために、DNSの仕組みをセキュリティの観点から見直すことが求められます。

まとめ

本記事では、DNS(Domain Name System)がどのようにしてドメイン名とIPアドレスを結びつけているのか、名前解決の流れと仕組みについて解説しました。

DNSリゾルバ、ルートネームサーバ、TLDサーバ、権威DNSなど複数のサーバが連携し、インターネット上の通信が成り立っていることを図解とともに理解していただけたと思います。

また、DNSキャッシュの役割や、キャッシュの保存先、クライアント側の処理との関係についても整理しました。

IPアドレスを直接扱わなくてもドメイン名で通信できるのは、このような複雑な仕組みが裏で支えているからです。DNSの仕組みを理解することで、トラブルシューティングやネットワーク設計時の判断力も格段に向上します。

▶︎ 次は「ルーティングの基礎: デフォルトゲートウェイと経路選択のしくみ」の動作を理解してみましょう。

本サイトにて記載のすべてのスクリプト利用により発生した利用者の損害全てに対し、いかなる責任をも負わないものとし、損害賠償をする一切の義務はないものとします。また、この記事は、実際の案件対応を通じて得た知見をもとに筆者が作成したものであり、全コードと解説は著者本人による設計・検証結果に基づいています。

よく読まれている記事

1

IT入門シリーズ 🟢 STEP 1: ITの基礎を知る(ITとは何か?) 📌 IT初心者が最初に学ぶべき基本知識。ITの概念、ネットワーク、OS、クラウドの仕組みを学ぶ ...

2

「私たちが日々利用しているスマートフォンやインターネット、そしてスーパーコンピュータやクラウドサービス――これらの多くがLinuxの力で動いていることをご存じですか? 無料で使えるだけでなく、高い柔軟 ...

3

この記事は、Linuxについて勉強している初心者の方向けに「Shellスクリプト」について解説します。最後まで読んで頂けましたら、Shellスクリプトはどのような役割を担っているのか?を理解出来るよう ...

-ネットワークの基礎知識