インターネットを利用するとき、私たちは「google.com」や「amazon.co.jp」のようなドメイン名を入力しますが、実際の通信はIPアドレスを使って行われています。
このドメイン名をIPアドレスに変換する仕組みが「名前解決」であり、その名前解決を担う重要なコンポーネントが「リゾルバ」です。
「リゾルバって何をしているの?」「スタブリゾルバとフルサービスリゾルバの違いは?」と疑問に感じている方のために、本記事ではDNSの名前解決とリゾルバの仕組みを丁寧にわかりやすく解説します。
リゾルバとはDNS名前解決を担う重要なソフトウェアコンポーネントである
それではまず、リゾルバの基本的な定義と役割について解説していきます。
リゾルバ(Resolver)とは、DNS(Domain Name System)においてドメイン名をIPアドレスに変換する「名前解決」の処理を行うソフトウェアまたはシステムコンポーネントのことです。
「resolve(解決する)」という英語が語源であり、名前(ドメイン)を解決(IPアドレスに変換)する役割を担っています。
私たちがウェブブラウザにURLを入力すると、まずリゾルバがそのドメイン名に対応するIPアドレスを調べ、その結果を使って目的のサーバーに接続するという流れになっています。
リゾルバはインターネット通信の最初の入り口とも言える存在です。
リゾルバの性能や設定が、ウェブサイトの表示速度やセキュリティに直接影響することも覚えておきましょう。
DNSの名前解決の仕組みと流れ
続いては、DNSの名前解決がどのような仕組みと流れで行われるのかを確認していきます。
名前解決のプロセスには複数のコンポーネントが関与しており、その連携によって素早いIPアドレス取得が実現されています。
DNSの階層構造とゾーン
DNSはツリー型の階層構造を持ち、最上位にルートドメイン(.)があり、その下にTLD(トップレベルドメイン)、さらにその下に各組織のドメインが続きます。
この階層構造によって、世界中の膨大な数のドメイン名を効率的に管理できるようになっています。
各階層に対応するDNSサーバーが「権威サーバー(Authoritative Server)」として機能し、自分が担当するゾーンの情報を保持しています。
名前解決の具体的な流れ
ブラウザに「example.com」と入力した際の名前解決の流れは以下のようになります。
1. ブラウザのキャッシュを確認
2. OSのキャッシュ(hostsファイル)を確認
3. スタブリゾルバがフルサービスリゾルバ(DNSサーバー)に問い合わせ
4. フルサービスリゾルバがルートサーバーに問い合わせ
5. ルートサーバーからTLD(.com)サーバーの情報を受け取る
6. TLDサーバーからexample.comの権威サーバーの情報を受け取る
7. 権威サーバーからIPアドレスを取得
8. フルサービスリゾルバがIPアドレスをスタブリゾルバに返す
この一連のプロセスは通常数十ミリ秒〜数百ミリ秒で完了します。
キャッシュが有効な場合は、途中のステップが省略されてさらに高速に処理されます。
TTL(Time To Live)とキャッシュの役割
DNS応答には必ずTTL(Time To Live)という値が付与されており、その時間の間はキャッシュを使い回すことができます。
TTLが短いほどDNS情報の鮮度が高くなりますが、リゾルバへの問い合わせ頻度が増えるというトレードオフがあります。
一般的にTTLは数百秒〜数千秒程度に設定されることが多いです。
リゾルバの種類と特徴
続いては、リゾルバの主要な種類と、それぞれの特徴を確認していきます。
リゾルバは大きく「スタブリゾルバ」と「フルサービスリゾルバ」の2種類に分類されます。
スタブリゾルバの特徴
スタブリゾルバとは、クライアント(PCやスマートフォン)のOS内部に組み込まれたシンプルなリゾルバです。
スタブリゾルバ自身はルートサーバーへの問い合わせ機能を持たず、設定されたフルサービスリゾルバ(DNSサーバー)に名前解決の依頼を転送するだけという特徴があります。
Windowsの場合は「DNS Client サービス」、Linuxの場合は「/etc/resolv.conf」に設定されたDNSサーバーがその役割を果たします。
フルサービスリゾルバの特徴
フルサービスリゾルバとは、スタブリゾルバからの依頼を受けて、ルートサーバーから順番に再帰的に問い合わせを行い、最終的なIPアドレスを取得するリゾルバです。
「フルリゾルバ」や「キャッシュサーバー」とも呼ばれます。
ISP(インターネットサービスプロバイダ)や企業のネットワーク、Google(8.8.8.8)やCloudflare(1.1.1.1)などのパブリックDNSサービスがフルサービスリゾルバとして機能しています。
| 種類 | 場所 | 役割 | 再帰問い合わせ |
|---|---|---|---|
| スタブリゾルバ | クライアントOS内 | フルサービスリゾルバへ転送 | なし |
| フルサービスリゾルバ | DNSサーバー(ISP等) | 再帰的名前解決・キャッシュ | あり |
| 権威サーバー | ドメイン管理者側 | 自ゾーンの情報提供 | なし |
パブリックDNSリゾルバの代表例
パブリックDNSリゾルバとして有名なものには以下があります。
Google Public DNS(8.8.8.8、8.8.4.4)は世界で最も広く使われているパブリックDNSのひとつです。
Cloudflare(1.1.1.1)はプライバシー保護を重視したDNSとして注目されており、高速なレスポンスタイムが特徴です。
Quad9(9.9.9.9)はセキュリティに特化したパブリックDNSであり、悪意のあるドメインへのアクセスをブロックする機能を持っています。
リゾルバに関するセキュリティの注意点
続いては、リゾルバに関連するセキュリティの注意点について確認していきます。
DNSキャッシュポイズニングとは
DNSキャッシュポイズニングとは、フルサービスリゾルバのキャッシュに偽の情報を注入し、利用者を悪意のあるサーバーに誘導する攻撃手法です。
DNSSEC(DNS Security Extensions)は、DNSの応答データに電子署名を付加することで、キャッシュポイズニング攻撃への対策として有効です。
オープンリゾルバのリスク
誰でも利用可能な状態のフルサービスリゾルバを「オープンリゾルバ」と呼び、DDoS攻撃(DNSアンプ攻撃)の踏み台として悪用されるリスクがあります。
自社でDNSサーバーを運用する場合は、アクセス制限を適切に設定してオープンリゾルバにならないよう注意が必要です。
DNS over HTTPS(DoH)とDNS over TLS(DoT)
従来のDNS通信はUDPポート53を使った平文通信であり、通信内容が盗聴・改ざんされるリスクがありました。
DNS over HTTPS(DoH)やDNS over TLS(DoT)は、DNS通信を暗号化するプロトコルであり、プライバシー保護とセキュリティ強化に役立ちます。
近年はChrome・Firefox・Windowsなど主要なOSやブラウザでもDoHのサポートが進んでいます。
まとめ
本記事では、リゾルバの意味・役割・種類、そしてDNSの名前解決の仕組みについて解説しました。
リゾルバはドメイン名をIPアドレスに変換する名前解決の中核を担う重要なコンポーネントです。
スタブリゾルバはクライアント側に存在し、フルサービスリゾルバに問い合わせを委任します。
フルサービスリゾルバは再帰問い合わせとキャッシュ機能を持ち、効率的な名前解決を実現します。
セキュリティ面ではDNSSECやDoH・DoTの活用によって、より安全なDNS通信環境を構築することが重要です。