DNSとは何か?
ブラウザにアドレスを入力するたびに、ほとんどの人が気づかないことが裏側で起きています。コンピュータは「google.com」がどこにあるかを知りません。142.250.74.46のような数字の羅列であるIPアドレスしか理解できないのです。DNSはその翻訳を行うシステムです。これがなければ、ウェブを閲覧するだけで何十ものIPアドレスを暗記しなければなりません。
世界規模の分散型ディレクトリ
DNSはDomain Name System(ドメインネームシステム)の略です。人間が読めるドメイン名と、機械が読めるIPアドレスを対応させる階層的なシステムです。「wikipedia.org」と入力すると、ブラウザがページを読み込み始める前に、対応するIPアドレスを見つけるためのDNSクエリが数十ミリ秒以内に即座に送信されます。
DNSが注目すべきなのはそのスケールです。世界中の何千ものサーバーで1日に何十億ものクエリを処理しながら、単一障害点がありません。インターネットで最も重要でありながら、最も目に見えないインフラのひとつです。
DNS解決の仕組み
URLを入力したときに実際に何が起きるかを説明します。
まず、デバイスがローカルキャッシュを確認します。最近そのサイトを訪れていれば、回答がすでに保存されている可能性があります。そうでない場合、クエリはDNSリゾルバーに送られます。通常、NTT、ソフトバンク、KDDIなどのプロバイダが提供するリゾルバー、またはGoogle(8.8.8.8)やCloudflare(1.1.1.1)のようなサードパーティサービスです。
リゾルバーにキャッシュされた回答がない場合、ルートサーバーに問い合わせます。世界には13のルートサーバークラスターがあり、ICANN、Verisign、WIDE Projectなどの組織が運営しています。ルートサーバーは「.com」「.jp」「.org」などのTLDサーバー(トップレベルドメイン)を示します。そのTLDサーバーが、サイトの実際のDNSレコードを保持するドメインの権威ネームサーバーを指示します。
この一連の処理は通常20〜120ミリ秒かかります。回答は各ステップでキャッシュされ、将来のクエリを高速化します。
DNSレコードの種類
ドメインは単一のIPアドレスに解決されるだけではありません。用途に応じて複数の種類のレコードを持つことができます。
- A:ドメイン名をIPv4アドレスに対応させる(例:example.comを93.184.216.34に)
- AAAA:IPv6の場合も同様
- CNAME:別のドメイン名を指すエイリアス(www.example.comをexample.comに)
- MX:ドメインのメールサーバーを示す。このレコードがないとメールが届かない
- TXT:フリーテキスト。ドメイン確認(Google Search Console、SPF、DKIM)などに使用
- NS:ドメインに対して権威を持つDNSサーバーを示す
- TTL:Time To Live(生存時間)。回答をキャッシュできる時間を秒単位で表す
DNSが問題を起こすとき
表示されないサイトが必ずしもダウンしているとは限りません。DNSの問題であることが多いです。最もよくある原因を挙げます。
- ホスティング移行後にTTLが高すぎる:古いIPアドレスが何時間もキャッシュに残り、場合によっては24〜48時間続くことも
- プロバイダのリゾルバーが遅いまたは障害中:1.1.1.1(Cloudflare)や8.8.8.8(Google)に変更するとすぐに解決することが多い
- DNSスプーフィング(DNSキャッシュポイズニング):攻撃者がDNS回答を操作し、偽サイトに誘導する。これがDNSSECが開発された理由
WindowsでDNS問題を診断するには、nslookup example.comコマンドで現在のリゾルバーの回答を確認できます。LinuxとmacOSではdig example.comがより詳細で、応答時間と問い合わせたサーバーも表示されます。
DNSとプライバシー
デフォルトでは、DNSクエリはネットワーク上を平文で送信されます。プロバイダや、デバイスとリゾルバーの間にいる誰もが、あなたがどのサイトを訪れているかを確認できます。ほとんどの人が気づいていない重大なプライバシーの漏洩です。
これらのクエリを暗号化するプロトコルが2つあります。DNS over HTTPS(DoH)とDNS over TLS(DoT)です。どちらもDNSクエリを暗号化された接続でラップします。Firefoxは2019年からデフォルトでDoHを有効にしており、Windows 11はDoTをネイティブでサポートしています。Cloudflare(1.1.1.1)、NextDNS、Quad9はいずれも両プロトコルに対応したリゾルバーを提供しています。
DNSリゾルバーを1.1.1.1(Cloudflare)または9.9.9.9(Quad9)に変更することは、ブラウジングの速度とプライバシーの両方を改善するために行える最も簡単な変更のひとつです。2分で完了し、費用もかかりません。