DNSの仕組み:ドメイン名解決の完全ガイド
· 12分で読めます
目次
DNSとは?
ドメインネームシステム(DNS)は、しばしば「インターネットの電話帳」と呼ばれます。google.comのような人間にわかりやすいドメイン名を、142.250.80.46のような機械が読み取れるIPアドレスに変換します。DNSがなければ、ウェブサイトを訪問するために長い数字の文字列を記憶する必要があります。これは、数十億のウェブサイトが存在する現在では非現実的な作業です。
DNSは、世界中の数百万台のサーバーにまたがる分散型の階層的データベースとして動作します。この分散アーキテクチャにより、単一障害点がシステム全体をダウンさせることがなく、複数のレベルでキャッシュを活用することでクエリが迅速に解決されます。
ウェブページを開いたり、メールを送信したり、動画をストリーミングしたりするたびに、DNSは舞台裏で動作し、リクエストを正しいサーバーにルーティングします。DNSの仕組みを理解することは、ウェブ開発者、システム管理者、そしてインターネット接続の問題をトラブルシューティングしたい人にとって不可欠です。
🛠️ 自分で試してみましょう:DNS検索ツールを使用して、リアルタイムのDNS解決を実際に確認できます。
ウェブサイトにとってDNSが重要な理由
DNSのパフォーマンスは、ウェブサイトの速度と可用性に直接影響します。遅いDNSプロバイダーは、ページの読み込みごとに数百ミリ秒を追加し、ユーザーをイライラさせ、検索エンジンのランキングを損なう可能性があります。Googleはページ速度をランキング要因と見なしており、DNS解決時間はその方程式の一部です。
パフォーマンスを超えて、DNS設定はメール配信性、サブドメインルーティング、CDN統合、セキュリティに影響します。誤って設定されたDNSレコードは、ウェブサイトを完全に壊したり、DNSスプーフィングやキャッシュポイズニングなどの攻撃にさらしたりする可能性があります。
DNS解決プロセス
ブラウザにドメイン名を入力すると、ミリ秒単位で魅力的な一連の検索が発生します。DNSクエリがデバイスから回答まで移動する方法は次のとおりです:
ステップ1:ブラウザキャッシュ
ブラウザは、最近解決されたIPアドレスを自身のキャッシュで最初に確認します。Chrome、Firefox、Safariなどの最新のブラウザは、繰り返しの訪問を高速化するために独自のDNSキャッシュを維持しています。ドメインが最近アクセスされ、TTL(Time To Live)が期限切れになっていない場合、ブラウザはキャッシュされたIPアドレスをすぐに使用します。
Chromeではchrome://net-internals/#dnsにアクセスすることで、ブラウザのDNSキャッシュを表示できます。これにより、キャッシュされたすべてのDNSエントリとその有効期限が表示されます。
ステップ2:オペレーティングシステムキャッシュ
ブラウザキャッシュがミスした場合、OSはDNSキャッシュとhostsファイルを確認します。LinuxとmacOSでは、これは/etc/hostsです。Windowsでは、C:\Windows\System32\drivers\etc\hostsです。hostsファイルを使用すると、DNSを完全にオーバーライドする手動のIPからドメインへのマッピングが可能になります。
システム管理者は、ローカル開発、不要なドメインのブロック、またはカスタム内部ネットワークマッピングの作成のためにhostsファイルをよく使用します。
ステップ3:再帰リゾルバ
クエリは、設定されたDNSリゾルバに送信されます。通常、ISPまたはGoogleの8.8.8.8やCloudflareの1.1.1.1などのパブリックDNSサービスによって提供されます。再帰リゾルバは、権威ある回答を追跡する重労働を行います。
このリゾルバは仲介者として機能し、ユーザーに代わって複数のクエリを実行し、将来のリクエストを高速化するために結果をキャッシュします。ほとんどのユーザーは再帰リゾルバと直接やり取りすることはありません。ネットワークに接続すると、DHCPを介して自動的に設定されます。
ステップ4:ルートネームサーバー
再帰リゾルバが回答をキャッシュしていない場合、13のルートネームサーバークラスター(AからMまでラベル付けされている)のいずれかに接続します。これらのサーバーは特定のドメインのIPアドレスを知りませんが、どのTLD(トップレベルドメイン)サーバーに尋ねるべきかを知っています。
たとえば、example.comを検索している場合、ルートサーバーは.com TLDサーバーのアドレスで応答します。「13サーバー」と呼ばれていますが、実際にはエニーキャストルーティングを使用して世界中に分散された数百台の物理サーバーがあります。
ステップ5:TLDネームサーバー
次に、リゾルバは適切なTLDサーバー(.com、.org、.netなど)にクエリを実行します。TLDサーバーは、特定のドメインの権威ネームサーバーで応答します。これらは、example.comのDNSレコードを実際にホストしているサーバーです。
TLDサーバーは、レジストリオペレーターによって管理されています。.comと.netの場合、それはVerisignです。各TLDには、さまざまな組織によって維持される独自のネームサーバーセットがあります。
ステップ6:権威ネームサーバー
最後に、リゾルバはドメインの権威ネームサーバーにクエリを実行します。このサーバーには実際のDNSレコードがあり、IPアドレスで応答します。リゾルバはこの回答をキャッシュし、デバイスに返します。
権威ネームサーバーは通常、ドメインレジストラまたはDNSホスティングサービスによって提供されます。人気のあるオプションには、Cloudflare、AWS Route 53、Google Cloud DNS、GoDaddyやNamecheapなどの従来のレジストラが含まれます。
プロのヒント:DNS伝播チェッカーを使用して、DNS変更がグローバルネームサーバー全体に広がったことを確認します。DNSの更新が完全に伝播するには24〜48時間かかる場合があります。
再帰クエリと反復クエリ
DNSクエリには2つのタイプがあります。再帰クエリは、リゾルバが最終的な回答またはエラーを返す必要があることを意味します。他の場所を参照することはできません。反復クエリでは、サーバーが別のサーバーへの参照を返すことができます。
デバイスはリゾルバに再帰クエリを実行し、リゾルバはルート、TLD、権威サーバーに反復クエリを実行します。この分業により、システムが効率的でスケーラブルに保たれます。
DNS階層構造の理解
DNSは逆ツリー構造として編成されており、ルートが上部にあり、個々のドメインが下に分岐しています。この階層により、DNSの分散性が可能になり、さまざまな組織が名前空間のさまざまな部分を管理できるようになります。
ルートゾーン
階層の最上部にはルートゾーンがあり、ドット(.)で表されます。example.comと入力すると、完全なドメイン名は実際には末尾にドットが付いたexample.com.です。ほとんどのシステムは、便宜上この末尾のドットを非表示にします。
ルートゾーンはICANN(Internet Corporation for Assigned Names and Numbers)によって管理されており、すべてのTLDサーバーへのポインタが含まれています。ルートゾーンファイルは約2MBで、比較的まれに変更されます。
トップレベルドメイン(TLD)
TLDは、ドメイン名の末尾にある拡張子です。いくつかのカテゴリに分類されます:
- 汎用TLD(gTLD):
.com、.org、.net、.info、.biz - 国コードTLD(ccTLD):
.uk、.de、.jp、.ca - スポンサー付きTLD:
.gov、.edu、.mil(制限付き使用) - 新しいgTLD:
.app、.dev、.blog、.tech(2013年以降に導入)
各TLDには、TLDゾーンファイルを維持し、TLDネームサーバーを運用する責任を負う独自のレジストリオペレーターがあります。一部のTLDには特定の要件があります。たとえば、.eduは認定された教育機関に制限されています。
第2レベルドメインとサブドメイン
第2レベルドメインは、登録するものです。example.comのexampleのようなものです。このドメインを完全に制御でき、その下に無制限のサブドメインを作成できます。
blog.example.comやapi.example.comなどのサブドメインを使用すると、サービスを整理し、トラフィックを異なる方法でルーティングできます。各サブドメインには、異なるサーバーまたはサービスを指す独自のDNSレコードを設定できます。
DNSレコードタイプの解説
DNSレコードは、権威ネームサーバーに保存されている命令です。さまざまなレコードタイプがさまざまな目的を果たし、ドメインをIPアドレスに指定することから、メールの設定やドメイン所有権の検証まで行います。
| レコードタイプ | 目的 | 例 |
|---|---|---|
A |
ドメインをIPv4アドレスにマッピング | example.com → 192.0.2.1 |
AAAA |
ドメインをIPv6アドレスにマッピング | example.com → 2001:db8::1 |
CNAME |
別のドメインへのエイリアスを作成 | www.example.com → example.com |
MX |
メールサーバーを指定 | example.com → mail.example.com(優先度10) |
TXT |
テキストデータを保存(SPF、DKIM、検証) | v=spf1 include:_spf.google.com ~all |
NS |
サブドメインをネームサーバーに委任 | example.com → ns1.example.com |
SOA |
権威の開始(ゾーンメタデータ) | シリアル番号、更新間隔を含む |
PTR |
逆DNS検索(IPからドメイン) | 192.0.2.1 → example.com |
SRV |
サービスの場所(ポートと優先度) | _sip._tcp.example.com |
CAA |
認証局の承認 | 0 issue "letsencrypt.org" |
AレコードとAAAAレコード
これらは最も基本的なDNSレコードです。Aレコードは、ドメインをIPv4アドレス(192.0.2.1など)にマッピングし、AAAAレコードはIPv6アドレス(2001:db8::1など)にマッピングします。
同じドメインに複数のAレコードを設定でき、これにより簡単な負荷分散が可能になります。DNSリゾルバは通常、すべてのIPアドレスを返し、クライアントが1つ(多くの場合最初のもの)を選択します。一部のDNSプロバイダーは、ユーザーの場所に基づいて異なるIPを返す地理的ルーティングを提供しています。
CNAMEレコード
CNAME(正規名)は、あるドメインから別のドメインへのエイリアスを作成します。たとえば、CNAMEを使用してwww.example.comをexample.comに指定できます。誰かがCNAMEを検索すると、DNSはチェーンをたどって最終的なAレコードに到達します。
重要な制限:ルートドメイン(apexまたはネイキッドドメインとも呼ばれる)でCNAMEを使用することはできません。これは、CNAMEレコードがその名前の唯一のレコードである必要があるためですが、ルートドメインにはNSレコードとSOAレコードが必要です。一部のDNSプロバイダーは、CloudflareのCNAMEフラット化やAWS Route 53のALIASレコードなど、これを回避するための独自のソリューションを提供しています。
MXレコード
メール交換(MX)レコードは、ドメインのメールをどこに配信するかをメールサーバーに伝えます。各MXレコードには優先度値があります。数値が小さいほど優先度が高くなります。プライマリメールサーバーが利用できない場合、送信者は次の優先度レベルを試します。
Google Workspaceの例MX設定:
example.com. MX 1 aspmx.l.google.com.
example.com. MX 5 alt1.aspmx.l.google.com.
example.com. MX 5 alt2.aspmx.l.google.com.
example.com. MX 10 alt3.aspmx.l.google.com.
example.com. MX 10 alt4.aspmx.l.google.com.
TXTレコード
TXTレコードは任意のテキストデータを保存し、メール認証とドメイン検証に不可欠になっています。一般的な用途には次のものがあります:
- SPF(Sender Policy Framework):メールスプーフィングを防ぐために承認されたメールサーバーをリスト
- DKIM(DomainKeys Identified Mail):メール認証のための暗号署名
- DMARC(Domain-based Message Authentication):認証失敗の処理に関するポリシー
- ドメイン検証:Googleなどのサービスへの所有権の証明