【ネットワーク】DNSとは?ドメイン名をIPアドレスに変換する仕組み

ネットワーク

こんにちは、かつコーチです。

example.comのようなドメイン名を入力するだけでサイトが表示されるけど、実際の通信にはIPアドレスが必要なはず。この変換って誰がやっているんだろう」。
そんな疑問に答えるのがDNSです。
この記事では、DNSの役割や仕組み、digコマンドでの確認方法を初心者向けに解説します。
仕組みを理解すると、独自ドメインを設定したときに起きがちな「反映されない」トラブルにも落ち着いて対応できます。

DNSとは?

電話帳・住所録のような仕組み

DNS(Domain Name System)とは、example.comのような人間が読みやすいドメイン名を、コンピュータが通信に使うIPアドレスに変換する仕組みです。

イメージしやすいように、電話帳に例えてみましょう。
私たちは友人に電話をかけるとき、電話番号を暗記していなくても「名前」で連絡先を探せます。
これは電話帳が「名前」と「電話番号」を紐付けて管理してくれているからです。
DNSも同じように、「ドメイン名」と「IPアドレス」を紐付けて管理する、いわばインターネット版の電話帳・住所録です。

なぜDNSが必要なのか

コンピュータ同士の通信は、以前の記事で解説した通りIPアドレスを使って行われます。
しかし192.0.2.1のような数字の羅列は、人間にとって覚えにくく、間違いやすいものです。
一方でexample.comのような名前は、意味を持っているため覚えやすく、扱いやすい形式です。
DNSがこの変換を裏側で肩代わりしてくれるおかげで、私たちは数字を意識せずにインターネットを使えています。

DNSの基本的な仕組み

名前解決という言葉の意味

ドメイン名をIPアドレスに変換する処理のことを、名前解決と呼びます。
ブラウザにexample.comと入力すると、パソコンは裏側で「example.comのIPアドレスを教えてください」という問い合わせをDNSサーバーに送り、返ってきたIPアドレス宛てに実際の通信を行います。
この一連の流れの詳細は、次の記事「名前解決の流れをたどってみる」で詳しく解説します。

主なDNSレコードの種類

DNSサーバーには、ドメインに関するさまざまな情報がレコードとして登録されています。
代表的なものは次の通りです。

レコード種別役割
Aレコードドメイン名をIPv4アドレスに変換する
AAAAレコードドメイン名をIPv6アドレスに変換する
CNAMEレコードドメイン名の別名(エイリアス)を設定する
MXレコードメールの配送先サーバーを指定する

電話帳に例えるなら、Aレコードは「名前→電話番号」の基本情報、CNAMEレコードは「あだ名→本名」の別名登録のようなものだとイメージすると理解しやすくなります。

digコマンドでDNSレコードを調べる

実際にドメインのDNS情報は、digコマンドで確認できます。

# example.comのAレコード(IPアドレス)を調べる
dig example.com A +short
# example.comのMXレコード(メールサーバー)を調べる
dig example.com MX +short

digコマンドは、電話帳を実際にめくって名前を検索する動作そのものだとイメージすると、何をしているか掴みやすくなります。

よくあるつまずきポイント・エラー対処

ドメインを設定したのにサイトが表示されない

❌Before(つまずいた実例)

独自ドメインを取得し、サーバーのIPアドレスをAレコードに設定した直後、ブラウザでアクセスしても以前のサーバーが表示されたり、真っ白なエラー画面になったりしたことがあります。
設定は正しいはずなのにと焦り、何度も設定画面を確認してしまいました。

✅After(解決方法)

原因は、DNSの変更が世界中のDNSサーバーに行き渡るまでに時間がかかるDNS伝播(プロパゲーション)でした。
反映には数分〜最大72時間ほどかかることがあります。

# 設定したレコードが反映されているかを確認する
dig example.com A +short

コマンドの結果に新しいIPアドレスが表示されていれば、あとは時間の経過とキャッシュのクリアを待つだけで解決します。
焦って設定をいじり直す前に、まずdigで現状を確認する癖をつけると無駄な作業を減らせます。

応用・一歩先の使い方

TTLとキャッシュの関係

各DNSレコードにはTTL(Time To Live)という値が設定されており、「このレコードの情報をどれくらいの時間キャッシュ(一時保存)してよいか」を示しています。
電話帳に例えるなら、「このページの情報は◯日間はそのまま使ってよい」という有効期限のようなものです。
TTLが長いほどDNSサーバーへの問い合わせ回数は減りますが、変更を反映したいときには時間がかかるというトレードオフがあります。

/etc/hostsでDNSを一時的に上書きする

開発中、本番のDNS設定を変えずに動作確認したい場合は、自分のPCの/etc/hostsファイルにドメインとIPアドレスの対応を直接書き込むことで、DNSより先に名前解決を済ませられます。

# /etc/hostsに1行追加する例(要管理者権限)
echo "192.0.2.1 example.com" | sudo tee -a /etc/hosts

これは「自分専用の電話帳メモを電話帳より先にチェックする」ようなイメージで、本番環境に影響を与えずに動作確認できる便利な方法です。

まとめ

この記事のポイント

  • DNSは、人間が読みやすいドメイン名をコンピュータ用のIPアドレスに変換する仕組み
  • 「ドメイン名と電話番号の対応を管理する電話帳・住所録」とイメージすると理解しやすい
  • Aレコード・CNAMEレコード・MXレコードなど、用途ごとに複数のレコード種別がある
  • ドメイン変更後に表示が変わらない場合は、DNS伝播による一時的な遅延を疑いdigで確認する

次に読むべき記事

DNSの全体像がわかったら、次は「名前解決の流れをたどってみる(ブラウザ→DNSサーバー)」で、問い合わせの詳しいステップを確認してみてください。

タグ: ネットワーク, 初心者向け, DNS

タイトルとURLをコピーしました