DNS解説:ドメイン名解決の仕組み
· 12分で読めます
ウェブサイトにアクセスしたり、メールを送信したり、アプリを使用したりするたびに、ドメインネームシステム(DNS)が舞台裏で人間が読めるドメイン名を機械が読めるIPアドレスに変換しています。これはインターネットの最も重要でありながら目に見えないインフラストラクチャの1つであり、しばしば「インターネットの電話帳」と呼ばれています。
DNSを理解することは、ネットワークエンジニアだけのものではありません。アプリケーションをデプロイする開発者、オンラインプレゼンスを管理するビジネスオーナー、またはインターネットの仕組みに興味がある方など、DNS の基礎を知ることで、問題のトラブルシューティング、パフォーマンスの向上、インフラストラクチャに関する情報に基づいた意思決定が可能になります。
このガイドでは、解決プロセスからセキュリティの考慮事項まで、DNSについて知っておくべきすべてのことを、今日から使える実用的な例とともに解説します。
目次
DNSとは何か、なぜ重要なのか?
DNS(ドメインネームシステム)は、ドメイン名をIPアドレスにマッピングする分散データベースです。これがなければ、ブラウザにexample.comと入力する代わりに、93.184.216.34のような文字列を記憶する必要があります。
DNSは、巨大で分散化された連絡先リストと考えてください。ウェブサイトをリクエストすると、世界中のDNSサーバーが協力してそのドメインの正しいIPアドレスを見つけます。これは、ディレクトリで電話番号を調べるのと似ています。
しかし、DNSは単純な名前からIPへの変換以上のことを行います。以下も処理します:
- メールルーティング - メッセージを正しいメールサーバーに転送するMXレコードを通じて
- 負荷分散 - 複数のサーバーにトラフィックを分散することによって
- サービスディスカバリー - 特定のサービスを見つける必要があるアプリケーション向け
- セキュリティ検証 - SPF、DKIM、DMARCなどのレコードを通じて
- コンテンツ配信 - ドメインをCDNエンドポイントに向けることによって
DNSシステムは、世界中で1日あたり4000億以上のクエリを処理しています。1つの誤って設定されたDNSレコードが、ウェブサイト全体やメールシステムをダウンさせる可能性があるため、オンラインインフラストラクチャを管理する人にとってDNSの知識は不可欠です。
クイックヒント: 当社のDNS検索ツールを使用して、任意のドメインのすべてのDNSレコードを即座に確認し、DNS解決がリアルタイムでどのように機能するかを確認できます。
DNS解決の仕組み:ステップバイステップ
ブラウザにexample.comと入力してEnterキーを押すと、ミリ秒単位で複雑な検索チェーンが発生します。完全なプロセスは次のとおりです:
DNS解決チェーン
- ブラウザキャッシュチェック: ブラウザはまず、最近このドメインを検索したかどうかを確認するために、独自のDNSキャッシュをチェックします。最新のブラウザは、TTL(Time To Live)値で指定された期間、DNSレコードをキャッシュします。
- オペレーティングシステムキャッシュ: ブラウザキャッシュにない場合、OSはDNSキャッシュをチェックします。LinuxおよびMacシステムでは、手動オーバーライド用の
/etc/hostsファイルのチェックも含まれます。 - 再帰リゾルバクエリ: それでも見つからない場合、コンピュータは再帰DNSリゾルバにクエリを送信します。通常、ISPのDNSサーバーまたはCloudflare(1.1.1.1)やGoogle(8.8.8.8)などのパブリックリゾルバです。
- リゾルバキャッシュチェック: 再帰リゾルバは独自のキャッシュをチェックします。最近の回答がある場合は、すぐに返します。これが、人気のあるウェブサイトへの後続の訪問がほぼ瞬時である理由です。
- ルートネームサーバークエリ: キャッシュされていないクエリの場合、リゾルバは13のルートネームサーバークラスターの1つに尋ねることから、DNS階層の最上位から開始します:「.comドメインを処理するのは誰ですか?」ルートサーバーは.com TLD(トップレベルドメイン)ネームサーバーのアドレスで応答します。
- TLDネームサーバークエリ: 次に、リゾルバは.com TLDネームサーバーに尋ねます:「example.comの権威は誰ですか?」TLDサーバーは、その特定のドメインの権威ネームサーバーで応答します。
- 権威ネームサーバークエリ: 最後に、リゾルバは権威ネームサーバーに尋ねます:「example.comのAレコードは何ですか?」権威サーバーはIPアドレスで応答します。
- 応答とキャッシング: リゾルバはこの結果をTTL値に従ってキャッシュし、IPアドレスをコンピュータに返します。コンピュータもこれをキャッシュします。これで、ブラウザはそのIPアドレスのウェブサーバーに接続できます。
この再帰解決プロセス全体は、キャッシュされていないクエリの場合、通常20〜120ミリ秒かかります。キャッシュされたクエリは1ミリ秒未満で解決されるため、頻繁に訪問するサイトのブラウジングは瞬時に感じられます。
プロのヒント: コマンドラインツールを使用して、このプロセスを実際に確認できます。Linux/Macでdig +trace example.comを実行するか、当社のDNS伝播チェッカーを使用して、DNSレコードがさまざまなグローバルロケーションでどのように表示されるかを確認してください。
反復クエリと再帰クエリ
DNSは2種類のクエリを使用します:
- 再帰クエリ: コンピュータはリゾルバにすべての作業を行い、最終的な回答を返すように依頼します。リゾルバはすべての中間検索を処理します。
- 反復クエリ: リゾルバはチェーン内の各ネームサーバーに尋ね、各ネームサーバーは回答または次にクエリするネームサーバーへの参照のいずれかで応答します。
ほとんどのクライアントからリゾルバへの通信は、簡単にするために再帰クエリを使用し、リゾルバからネームサーバーへの通信は、効率と制御のために反復クエリを使用します。
DNS階層の理解
DNSは、ルートから始まり、ますます具体的なレベルに分岐する階層ツリー構造として編成されています。この分散アーキテクチャにより、DNSは数十億のドメインにスケーラブルになります。
DNSの4つのレベル
1. ルートレベル(.)
ルートレベルはDNS階層の最上位にあります。13のルートネームサーバーID(AからMまでラベル付け)がありますが、それぞれは実際にはエニーキャストルーティングを使用してグローバルに分散された数百のサーバーのクラスターです。これらのサーバーは、すべてのTLDネームサーバーを見つける場所を知っています。
2. トップレベルドメイン(TLD)
TLDは、ドメイン名の末尾に表示される拡張子です。いくつかのカテゴリに分類されます:
- 汎用TLD(gTLD): .com、.org、.net、.info、.biz
- 国コードTLD(ccTLD): .uk、.de、.jp、.ca、.au
- スポンサー付きTLD: .gov、.edu、.mil(使用制限あり)
- 新しいgTLD: .app、.dev、.tech、.io、.ai(2013年以降導入)
3. セカンドレベルドメイン(SLD)
これはドメイン名のメイン部分、つまり登録する部分です。example.comでは、「example」がセカンドレベルドメインです。このレベルでDNSレコードを完全に制御できます。
4. サブドメイン
サブドメインは、ドメインに追加するプレフィックスです:blog.example.com、shop.example.com、api.example.com。無制限のサブドメインを作成し、異なるサーバーやサービスに向けることができます。
委任と権限
DNS階層の各レベルは、その下のレベルに権限を委任します。ルートはTLDに委任し、TLDはドメイン所有者に委任し、ドメイン所有者はサブドメインを他のネームサーバーに委任できます。この委任は、NS(ネームサーバー)レコードを使用して記録されます。
ドメインを登録すると、どのネームサーバーがドメインに対して権威があるかを指定します。これらのネームサーバーは、ドメインとそのサブドメインに関するすべてのクエリに応答します。
DNSレコードタイプの解説
DNSレコードは、ドメインに関する情報を提供する権威ネームサーバーに保存された指示です。各レコードタイプは特定の目的を果たします。遭遇する最も重要なものは次のとおりです:
| レコードタイプ | 目的 | 値の例 | 一般的な用途 |
|---|---|---|---|
| A | ドメインをIPv4アドレスにマッピング | 93.184.216.34 |
ドメインをウェブサーバーに向ける |
| AAAA | ドメインをIPv6アドレスにマッピング | 2606:2800:220:1:248:1893:25c8:1946 |
IPv6接続 |
| CNAME | 別のドメインへのエイリアス | www.example.com → example.com |
サブドメインのリダイレクト |
| MX | ドメインのメールサーバー | 10 mail.example.com |
メール配信ルーティング |
| TXT | 検証用のテキストデータ | v=spf1 include:_spf.google.com ~all |
SPF、DKIM、ドメイン検証 |
| NS | 権威ネームサーバー | ns1.cloudflare.com |
DNS権限の委任 |
| SOA | ゾーン権限情報 | プライマリNS、管理者メール、シリアル番号 | ゾーン管理メタデータ |
| SRV | サービスロケーション(ポート+ホスト) | _sip._tcp 10 5 5060 sip.example.com |
サービスディスカバリー |
| CAA | 認証局の承認 | 0 issue "letsencrypt.org" |
SSL/TLSセキュリティ |
| PTR | 逆引きDNS(IP → ドメイン) | 34.216.184.93.in-addr.arpa |
メールレピュテーション、ログ記録 |
詳細:重要なレコードタイプ
AおよびAAAAレコード
これらは最も基本的なDNSレコードです。AレコードはIPv4アドレス(従来の形式)にマッピングし、AAAAレコードはIPv6アドレス(新しい拡張形式)にマッピングします。ほとんどのドメインは、すべてのネットワークでの互換性を確保するために両方を持つ必要があります。
同じドメインに複数のAレコードを持つことができ、これにより単純なラウンドロビン負荷分散が可能になります。DNSリゾルバはIPアドレスをローテーションし、複数のサーバーにトラフィックを分散します。
CNAMEレコード
CNAME(正規名)レコードはエイリアスを作成します。構成を複製せずに複数のサブドメインを同じ宛先に向けるのに最適です。ただし、CNAMEレコードには重要な制限があります:
- DNS仕様の要件により、ルートドメイン(example.com)では使用できません
- 同じ名前の他のレコードタイプと共存できません
- 追加のDNS検索を追加し、解決時間をわずかに増加させます
当社のCNAME検索ツールを使用して、CNAMEチェーンをトレースし、エイリアスが正しく構成されていることを確認してください。
MXレコード
MX(メール交換)レコードは、ドメインのメールをどこに配信するかをメールサーバーに伝えます。各MXレコードには優先度番号が含まれています。数値が小さいほど優先度が高くなります。これにより、プライマリサーバーが利用できない場合にメールを受信するバックアップメールサーバーを設定できます。
MX構成の例:
example.com. MX 10 mail1.example.com.
example.com. MX 20 mail2.example.com.
example.com. MX 30 mail3.example.com.
当社のMX検索ツールでメールサーバー構成を確認し、メール配信が正しく機能することを確認してください。
TXTレコード
TXTレコードは任意のテキストデータを保存し、メールセキュリティとドメイン検証に不可欠になっています。一般的な用途には次のものがあります:
- SPF(Sender Policy Framework): ドメインに代わってメールを送信できるメールサーバーをリストします
- DKIM(DomainKeys Identified Mail): メールの暗号化認証を提供します
- DMARC: SPFまたはDKIMチェックに失敗したメールの処理方法を指定します
- ドメイン検証: Google WorkspaceやMicrosoft 365などのサービスへのドメイン所有権を証明します
- サイト検証: 検索エンジンやその他のプラットフォームの所有権を確認します
プロのヒント: TXTレコードには文字列あたり255文字の制限がありますが、同じレコード内で長い値を複数の文字列に分割できます。ほとんどのDNSプロバイダーはこれを自動的に処理します。
TTLとキャッシング戦略
TTL(Time To Live)は、リゾルバとクライアントによってDNSレコードがキャッシュされる期間を決定する重要なDNS概念です。秒単位で測定され、パフォーマンスと柔軟性の両方に直接影響します。
TTL値の理解
権威ネームサーバーがDNSクエリに応答すると、各レコードにTTL値が含まれます。これはリゾルバに次のように伝えます:「再度チェックする前に、この回答をX秒間キャッシュできます。」
| TTL値 | 期間 | 使用例 | 長所 | 短所 |
|---|---|---|---|---|
| 60 | 1分 | アクティブな移行、フェイルオーバーテスト | 変更が迅速に伝播 | ネームサーバーへのクエリ負荷が高い |
| 300 | 5分 | 動的DNS、負荷分散 | 合理的なバランス | 中程度のクエリ負荷 |