こんにちは、かつコーチです。
「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