DNSとは何か?
DNS(ドメインネームシステム)はインターネットの電話帳です。「example.com」のような人間が読めるドメイン名を、コンピューターが互いを見つけて通信するために使う「93.184.216.34」のような機械可読のIPアドレスへ変換します。DNSがなければ、WebサイトにアクセスするたびにIPアドレスを覚えなければなりません。google.comの代わりに142.250.80.46を入力するところを想像してみてください。
DNSの仕組み
ブラウザーにドメイン名を入力すると、複雑ですが非常に高速な処理が行われます。
DNS名前解決のプロセス
1. ローカルキャッシュの確認: ブラウザーとオペレーティングシステムは、まずローカルDNSキャッシュにそのドメインの最近の検索結果があるか確認します。
2. 再帰リゾルバーへの問い合わせ: キャッシュに結果がない場合、問い合わせは再帰DNSリゾルバーに送られます。通常はISP、またはCloudflareの1.1.1.1やGoogleの8.8.8.8などのサービスが運用しています。
3. ルートサーバーへの問い合わせ: リゾルバーはルートネームサーバーに問い合わせ、適切なTLDサーバーへの案内を受けます。
4. TLDサーバーへの問い合わせ: TLDサーバー(たとえば.com)は、そのドメインを担当する権威ネームサーバーを返します。
5. 権威サーバーへの問い合わせ: 最後に、権威ネームサーバーがドメインの実際のIPアドレスを返します。
6. 応答のキャッシュ: 結果はTTL(Time To Live)の値に基づいて複数の階層でキャッシュされます。
この処理全体は通常、数ミリ秒で完了します。
DNSレコードの種類
DNSにはさまざまなレコードが保存され、それぞれ異なる役割を持ちます。
| レコードの種類 | 目的 | 例 |
|---|---|---|
| A | ドメインをIPv4アドレスに対応付ける | example.com → 93.184.216.34 |
| AAAA | ドメインをIPv6アドレスに対応付ける | example.com → 2606:2800:220:1:... |
| CNAME | 別のドメインを指すエイリアス | www.example.com → example.com |
| MX | メールサーバーの指定 | example.com → mail.example.com |
| TXT | テキストデータ(SPF、DKIM、検証) | さまざまな検証文字列 |
| NS | ネームサーバーの委任 | example.com → ns1.provider.com |
DNSの階層
DNSは分散型の階層データベースとして動作します。
. (root)
├── com (TLD)
│ ├── example (SLD)
│ │ ├── www (subdomain)
│ │ └── mail (subdomain)
│ └── google
├── org (TLD)
└── io (TLD)
この階層により、数千の組織が数十億のドメイン名を分散して管理できます。
開発者向けDNS
Web開発ではDNSを理解することが不可欠です。
一般的な開発作業
ドメイン設定: Aレコード、サブドメイン用のCNAME、メール用のMXレコードを設定するには、DNSの知識が必要です。 SSL/TLSの検証: 多くの認証局は、DNSレコード(TXTまたはCNAME)を使ってドメインの所有権を検証します。 CDNの設定: コンテンツ配信ネットワークでは、エッジサーバー経由でトラフィックをルーティングするためにCNAMEレコードが必要になることがあります。 メールの到達性: SPF、DKIM、DMARCレコードはすべて、メール認証に不可欠なDNS TXTレコードです。DNSの伝播
DNSレコードを更新しても、変更はすぐには反映されません。DNSの伝播、つまり変更がグローバルなDNSインフラ全体に広がるまでの時間は、TTL設定とキャッシュの動作により、数分から48時間かかることがあります。
DNSのセキュリティに関する注意点
開発者はDNSに関わるセキュリティ上の影響を理解する必要があります。
DNSスプーフィング: 攻撃者は偽のDNS応答を返して、ユーザーを悪意のあるサイトへ誘導しようとすることがあります。DNSSEC(DNS Security Extensions)は、暗号署名によってこれを防ぐのに役立ちます。 DNSリーク: VPNユーザーは、暗号化トンネルの外へ誤ってDNSクエリを送信し、閲覧活動を知られてしまうことがあります。 DDoS増幅: DNSは要求より大きな応答を返せるため、増幅攻撃に悪用される可能性があります。DNSとドメインの利用可能性
DNSの名前解決状態から、ドメインの利用可能性を推測できる場合があります。DNSレコードが存在しなければ、ドメインが未登録の可能性があります。ただしRDAP/WHOISクエリのほうが信頼性の高い利用可能性情報を提供します。登録済みのドメインでも、DNSレコードがまだ設定されていないことがあるためです。