DNS (ドメインネームシステム)

プロトコル & 標準
人間が読める形式のドメイン名をコンピューターが通信に使用する IP アドレスに変換するインターネットの階層的なネーミングシステム。
← 用語集に戻る

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レコードがまだ設定されていないことがあるためです。

この知識を実践する

DomScan の API を使用してドメインの可用性、状態などを確認します。