DNS基礎
DNS概要
DNS (Domain Name System) は、インターネット上で人間に読みやすいドメイン名とコンピュータが理解できるIPアドレスを相互変換するための階層的かつ分散的なデータベースシステム
IPアドレス
IPアドレスは、インターネット上の各デバイスやサーバーを一意に識別するための32ビット(IPv4)または128ビット(IPv6)の数値アドレスで、ネットワーク通信における「住所」の役割を果たす
ドメイン名とは
インターネット上のリソースやサービスを特定するための、人間が理解しやすい文字列形式のアドレス
コンピューターは数値のIPアドレス(例:192.0.2.1)で通信しますが、人間にとってこれらの数字を記憶することは困難なため、ドメイン名は、この問題を解決するために作られた
ドメイン名の役割
- 記憶の容易さ:
example.comは192.0.2.1のようにユーザーが記憶しやすい名前を選択 - ブランドアイデンティティ: 組織やサービスの識別に使用して整合性が取りやすい
- 柔軟性: IPアドレスが変更されてもドメイン名は同じまま
- SEO効果: 検索エンジン最適化への影響
- 階層的構造: インターネット全体の組織化されたアドレッシング
- 多言語対応: 国際化ドメイン名(IDN)の検討
ドメイン名の制限事項・購入ポイント
- 長さ: 全体で253文字以内、各ラベルは63文字以内
- 文字: 英数字とハイフン(先頭末尾以外)
- 予約語: 特定の文字列は使用不可
- ドメイン名は「購入」するものではなく、一定期間の使用権を取得
- レジストラ(登録業者)を通じて登録手続きを行う
- 通常1年単位で契約し、更新が必要
ドメイン・サブドメイン例
-
mozilla.org- Mozilla組織のメインサイト -
google.com- Googleのメインサイト -
github.com- GitHubプラットフォーム -
developer.mozilla.org- Mozilla開発者向けドキュメント -
support.mozilla.org- Mozillaサポートページ -
mail.google.com- Gmailサービス -
docs.github.com- GitHub文書
ドメインの構造
ドメイン名は、ドット(.)で区切られた複数のラベルで構成され、右から左に読む
ドメイン名 = ホスト名 + ドメイン + ルートドメイン
www.example.com.
│ │ │ └── (.)ルートドメイン(省略されがちだが、存在する)
│ │ └── トップレベルドメイン(TLD)
│ └── セカンドレベルドメイン(SLD)
└── ホスト名
省略されるため忘れがちですが、ドメイン名の末尾には必ず「.」ルートドメインが存在
ホスト名が最後に付随されるドメイン名もある
最上位にルートドメイン(.)が存在し、その直下に各階層ごとにドメインが階層構造にある

引用: https://lpi.or.jp/lpic_all/linux/network/network07.shtml
ルートサーバではjpやcomなど、一番上のドメイン名のDNSサーバーがインターネット上のどの位置にあるか(つまり、どのIPアドレスなのか)を管理
ルートドメインの直下にあるドメイン群はTLD(トップレベルドメイン),その次がSLD(セカンドドメイン)と続く
各要素の詳細
汎用トップレベルドメイン(Generic TLD)
- .com - 商業用(最も一般的)
- .org - 組織・非営利団体
- .net - ネットワーク関連
- .info - 情報サイト
- .biz - ビジネス用
- .name - 個人用
国別トップレベルドメイン(Country Code TLD)
- .jp - 日本
- .us - アメリカ合衆国
- .uk - イギリス
- .fr - フランス
- .de - ドイツ
- .cn - 中国
制限付きTLD・新しいgTLD(New Generic TLD)
- .gov - 政府機関専用
- .edu - 教育機関専用
- .mil - 軍事関連専用
- .tech - 技術関連
- .shop - ショッピング
- .blog - ブログ
- .app - アプリケーション
セカンドレベルドメイン(SLD)
- 組織名やサービス名を表す部分
- 登録者が選択できる部分
- ブランディングの重要な要素
DNS名前解決プロセス
クライアント(例:Webブラウザ)が、特定のドメイン名(例:example.com)にアクセス
- クライアントのデバイスでキャッシュがないかチェック
- ローカルブラウザのキャッシュをチェック
- ローカルOSのDNSキャッシュを確認
- クライアントがDNSリゾルバーにリクエスト
- クライアントは設定されたDNSリゾルバーにドメイン名の問い合わせ
- DNSリゾルバーは自身のキャッシュを確認し情報がある場合は、そのIPアドレスをクライアントに返し、情報がない場合は次に進む
- DNSリゾルバーがルートサーバーにリクエスト
- DNSリゾルバーは、ルートネームサーバーに問い合わせを行い、対象のTLD(例:.com)のネームサーバー情報(アドレス情報など)を取得
- DNSリゾルバーがTLDサーバーにリクエスト
- 取得したTLDネームサーバー(例:.comのネームサーバー)に問い合わせを行い、対象のセカンドレベルドメイン(例:example.com)のネームサーバー情報を取得
- 権威ネームサーバーでIPアドレスを取得
- DNSリゾルバーは、取得したセカンドレベルドメインのネームサーバー(例:example.comのネームサーバー)に問い合わせを行い、ドメイン名に対応するIPアドレスを取得
- 結果をクライアントに返却
- DNSリゾルバーは、取得したIPアドレスをクライアントに返す
- クライアントは、取得したIPアドレスに対して接続を開始し、Webサーバーからコンテンツを取得して表示
名前解決に必要なサーバー
- DNSリカーシブリゾルバー
- ルートネームサーバー
- TLDネームサーバー
- 権威ネームサーバー
DNSの名前解決の一連は以下の流れ

引用: https://www.cloudflare.com/ja-jp/learning/dns/what-is-dns/
1. DNSリカーシブリゾルバー
クライアントからのドメイン名解決のリクエストを受け取り、ドメイン名に対応するIPアドレスを取得するために、DNS階層を横断してクエリを行うサーバー
通常インターネットサービスプロバイダ(ISP)や企業ネットワーク内のDNSサーバによって提供
リカーシブリゾルバの主な機能は以下の通り
- クライアントからのDNSリクエストを受け取る
- 自身のキャッシュを確認し、以前に解決したドメイン名の情報があれば、キャッシュからIPアドレスを返す
- キャッシュに情報がない場合ルートネームサーバから始めて、TLDネームサーバ、ドメインのネームサーバと順に問い合わせを行い、最終的にドメイン名に対応するIPアドレスを取得
- 取得したIPアドレスをクライアントに返す
2. ルートサーバー
DNSルートサーバは、インターネットで利用されるDNSにおいて、ツリー構造の起点となるサー
バー
ルートゾーンには、com、org、jp、arpaなどのトップレベルドメイン(TLD)の参照情報が書かれており、具体的にそれぞれのTLDを受け持つDNSサーバがどんな名前であるか、どのようなIPアドレスを持っているか、といった情報が記載
DNSクライアントはその情報を元にして、次に問い合わせるべきDNSサーバを把握
3. TLDネームサーバー
TLDネームサーバーは、特定のトップレベルドメイン(.com、.org、.jpなど)のDNS情報を管理し、その下位のセカンドレベルドメインの権威ネームサーバ情報を提供するサーバー群です。
TLDネームサーバは、各トップレベルドメイン(例:.com、.org、.net、.jp など)に関連付けられており、そのドメイン内のセカンドレベルドメイン(例:example.com)のネームサーバ情報を提供
4. 権威ネームサーバ
特定のドメインに関する最終的な権威あるDNS情報を管理し、そのドメインのDNSレコード(A、AAAA、MXなど)を提供するネームサーバー
DNSの階層構造の名前解決を全てたどり完全なドメインを管理するネームサーバで、階層構造の一番下に位置します。
DNSのキャッシング
クライアントからのリクエストに対する迅速な名前解決のため、いくつかのキャッシングが存在
DNSには、大きく分けて下記の二種類のキャッシングが存在
DNSサーバー自身のキャッシュ
過去のDNS情報をキャッシュに保存しておくことで、同じ問い合わせに対しては、上位(権威のある)のDNS に問い合わせを行う必要なく、キャッシュ保存された情報から回答できる
- キャッシュサーバー
- 特定のドメインを管理せず、キャッシュによる回答のみ専用に行うDNSサーバー
- ゾーンサーバー
- ドメイン(ゾーン)を管理するサーバー
ブラウザのDNSキャッシュ
最新のWebブラウザ(chrome等)では、デフォルトでDNSレコードを一定時間キャッシュする
DNSレコードの要求が行われると、最初にチェックする場所はブラウザのキャッシュになる
DNSのゾーンについて
DNSデータを管理する単位ないしは範囲のことであり、ドメイン名とIPアドレスの対応関係を管理するための重要な概念
ゾーンはドメイン管理権限が与えられた組織や個人が、ドメインのDNS情報(ドメイン名、サブドメイン名、IPアドレスなど)を管理するために使用
DNSゾーンの管理は、ドメイン登録業者やDNSホスティングサービスにより行われるため
ドメイン所有者は、サービスを通じて、自分のドメインに関連するDNS情報を更新したり、新しいサブドメインを追加できる
構成
- ゾーンの起点となるドメイン名
- ドメイン名に関連するサブドメイン名
- ドメイン名とサブドメイン名に関連するリソースレコード
- リソースレコードには、AレコードやAAAAレコード、CNAMEレコードなどがある
- SOA(Start of Authority)レコード
- ゾーンの権威情報を示すレコードで、ゾーンの管理者情報やゾーンファイルのシリアル番号、リフレッシュ間隔、再試行間隔、キャッシュの有効期限など
- NS(Name Server)レコード
- ゾーンを管理するネームサーバの情報を示すレコード
DNSレコード
DNSレコードは、ドメイン名とIPアドレスの対応関係を示す情報を含むデータのことで、DNSレコードは権威ネームサーバによって管理
各ドメイン名には、ドメイン名を管理する権威ネームサーバが割り当てられるため、
ドメイン名に対応するIPアドレスを取得するためには、ドメイン名を管理する権威ネームサーバに問い合わせる必要がある
権威ネームサーバは、ドメイン名とIPアドレスの対応情報を管理するサーバー
権威ネームサーバは、ドメイン名をクライアントから受け取り、関連付けられた情報(ドメイン名に対応するIPアドレスや、メールサーバ(MXレコード)など)を提供
DNSレコードの種類
| レコード名 | 説明 |
|---|---|
| A | IPv4アドレスにマッピングを保持するレコード |
| AAAA | IPv6アドレスにマッピングを保有するレコード |
| CNAME | ドメイン・サブドメインを別ドメインに転送するがIPアドレスは提供しない 別名(エイリアス)設定 |
| MX | メールサーバーにメールを送信 |
| NS | DNSエントリのネームサーバーを格納 |
| SOA | ドメインに関するゾーンの権威情報を格納 |
| TXT | 管理者がレコードにテキスト情報(SPF、DKIM、検証用)を登録できる |
| SRV | サービス固有の情報を指定 |
| PTR | リバースルックアップ(逆引き)で逆引き(IPからドメイン名)を提供 |
| CAA | SSL証明書発行権限 |
| DNSKEY | DNSSEC公開鍵 |
| DS | DNSSEC委任署名者 |
| DNSレコードとは? | Cloudflare |
セキュリティ
脅威
- DNSハイジャック: ドメイン設定の不正変更
- キャッシュポイズニング: 偽の情報でキャッシュを汚染
- DNSスプーフィング: 偽のIPアドレスに誘導
- DDoS攻撃: DNSサーバーへの大量アクセス
- タイポスクワッティング: 類似ドメインでの詐欺
対策
DNSSEC(DNS Security Extensions)
- 目的: DNS応答の真正性と完全性を保証
- 仕組み: デジタル署名による検証
- 利点: 中間者攻撃やキャッシュポイズニングを防止
- 課題: 設定の複雑さと管理コスト
DNS over HTTPS(DoH)/DNS over TLS(DoT)
- DoH: HTTPS経由でDNSクエリを暗号化
- DoT: 専用ポート(853)でTLS暗号化
- 利点: プライバシー保護とセキュリティ向上
- 対応: Chrome、Firefox、Safariで対応済み
レジストラレベルのセキュリティ
- レジストラロック: ドメイン移管の制限
- 2FA: 多要素認証の有効化
- 通知設定: 変更時のアラート設定
- WHOIS保護: 個人情報の非公開化
補足情報
国際化ドメイン名(IDN)
- 定義: ASCII以外の文字を使用したドメイン名
- 技術: Punycode形式でエンコード
- 例: 日本語.jp → xn--wgv71a119e.jp
- 利点: 各国語での直感的なドメイン名
- 課題: フィッシング攻撃への悪用、技術的複雑さ
パフォーマンス最適化
- Anycast: 複数の地理的場所からサービス提供
- DNS負荷分散: 複数のIPアドレスでトラフィック分散
- CDN統合: コンテンツ配信ネットワークとの連携
- キャッシュ戦略: 適切なTTL設定
TTL(Time To Live)
- 定義: DNSレコードのキャッシュ有効期限
- 影響: 変更の反映速度とサーバー負荷のバランス
- 設定: 通常300秒(5分)から86400秒(24時間)
- 戦略: 変更予定時は短く、安定時は長く設定
参考資料
公式ドキュメント・標準
- RFC 1035 - Domain Implementation and Specification
- RFC 3490 - Internationalizing Domain Names in Applications
- RFC 8484 - DNS over HTTPS
技術解説・学習資料
Cloudflare技術資料
- How DNS Works | Cloudflare
- What is a Domain Name? | Cloudflare
- DNSSEC とは | Cloudflare
- DNSレコードとは? | Cloudflare
実践的ツール
- DNS Checker - 世界各地からのDNS確認
- MX Toolbox - DNS診断ツール
- WHOIS Lookup - ドメイン情報確認
Discussion