DNSとは? 名前からIPアドレスを調べるしくみ
DNSは、「www.example.com」のような名前から、通信に使う番号(IPアドレス)を調べるしくみです。世界中のサーバが名前の区切りごとに分担し、「次はあちらへ」という案内をたどって答えを見つけます。調べた答えは決まった時間だけ覚えておくので、ふだんは一瞬で済みます。
この記事でわかること
- 名前と番号の両方が必要な理由と、ドメイン名の読み方
- 名前から番号を調べるまでの流れ(リゾルバ・ルート・TLD・権威DNSサーバ)
- キャッシュとTTL、設定の変更がすぐ伝わらない理由
- DNSとプライバシー、攻撃と守り、DNSが原因の大きな障害
前提知識: 特にありません。「IPアドレスとは?」を読んでいると、より読みやすくなります。
身近なところでは
Webサイトを開くとき、私たちは「www.example.com」のような名前を入力するか、リンクをタップします。メールの宛先も、「@」の後ろに名前がついた形です。数字の番号を入力することは、まずありません。
一方で、「DNSの設定を変えたのに、前のサイトが出る」「DNSの障害で大手のサービスが止まった」という話も耳にします。名前の裏で、何が起きているのでしょうか。
なぜ名前と番号の2つがあるのか
インターネットでは、データを小さなかたまり(パケット)に分けて送ります。パケットの宛先に書けるのは、IPアドレスという番号だけです。番号のしくみは「IPアドレスとは?」で説明しています。
しかし「203.0.113.10」のような数字は、人には覚えにくいものです。また、サイトが別のサーバに引っ越すと、番号は変わります。名前を窓口にしておけば、番号が変わっても、利用者は同じ名前でつながれます。
そこで、名前と番号の対応を調べるしくみが作られました。これをDNS(ドメインネームシステム)と呼びます。今の形の基本は、1987年に決められました。
DNSの前は、全部の名前と番号の対応表を1つのファイルにまとめ、各コンピュータが写していました。コンピュータが増えると、更新が追いつかなくなりました。DNSは、この表を分けて、持ち主ごとに管理するしくみです。
ドメイン名は右から読む
「www.example.com」のように、点で区切った名前をドメイン名と呼びます。ドメイン名は、右へ行くほど大きな区切りを表します。日本の住所を「県・市・町・番地」と大きい順に書くのとは、逆の向きです。ただし住所と違い、ドメイン名は場所を表しません。
いちばん右の「com」や「jp」のような区切りを、トップレベルドメイン(TLD)と呼びます。「com」はもともと会社向け、「jp」は日本向けの区切りです。その左の「example」は、組織や個人が申し込んで使う部分です。いちばん左の「www」は、持ち主が自由につける名前で、ここではWebサーバを指します。
日本でよく見る「example.co.jp」では、「co」(日本の会社向け)が2段目になり、組織の名前はその左に来ます。
実は、ドメイン名のいちばん右には、ふだん省略される点があります。正式には「www.example.com.」と書き、最後の点がすべての名前の出発点を表します。この出発点をルートと呼びます。名前の全体は、ルートを根元にして枝分かれする、1本の木の形をしています。
名前から番号を調べる流れ
名前から番号を調べることを、「名前解決」と呼びます。名前解決には、役割の違う3種類の担当が関わります。
1つ目は、スマホやパソコンの中にいる担当です。OSに組み込まれた小さなしくみで、決まった相手に「この名前の番号は?」と聞くだけです。自分では調べ回りません。これをスタブリゾルバと呼びます。聞く相手は、Wi-FiにつないだときにDHCPで自動的に知らされるのがふつうです。
2つ目は、その問い合わせを受けて、代わりに調べ回るサーバです。多くはプロバイダや会社が用意し、誰でも使える公開のものもあります。このサーバを、フルサービスリゾルバ、またはキャッシュDNSサーバと呼びます。以下、短く「リゾルバ」と書きます。
3つ目は、答えの元を持っているサーバです。example.com の名前と番号の対応は、その持ち主が用意したサーバに書かれています。このように、その区切りについて正式な答えを持つサーバを、権威DNSサーバと呼びます。
リゾルバは、まずルートを受け持つサーバに聞きます。これをルートサーバと呼びます。ルートサーバは答えを知りませんが、「comのことなら、comのサーバへ」と案内します。comのサーバ(TLDのサーバ)は、「example.comなら、このサーバへ」と案内します。最後にexample.comの権威DNSサーバが、「203.0.113.10です」と答えます。
どのサーバも、自分の区切りの中のことと、1つ下の区切りの案内先だけを知っています。だから、世界中の名前を1か所で抱える必要がありません。
答えを覚えておく: キャッシュとTTL
毎回ルートから順に聞いていたら、時間がかかり、ルートサーバにも問い合わせが集中します。そこでリゾルバは、一度得た答えをしばらく覚えておきます。この「一時的に覚えておくこと」や、その置き場所をキャッシュと呼びます。スマホやブラウザも、小さなキャッシュを持っています。
覚えておく時間は、ドメインの持ち主が決め、答えに添えて返します。この時間をTTL(Time To Live)と呼び、秒で表します。例えばTTLが3600なら、1時間は覚えた答えを使い、その後に聞き直します。
「comのサーバはどこか」という案内も同じように覚えるので、ルートサーバに聞く回数はわずかです。よく使われる名前なら、リゾルバのキャッシュだけで答えが出ます。
このしくみには、裏返しの面もあります。サーバの引っ越しで番号を変えても、世界中のリゾルバは、TTLが切れるまで古い答えを使います。「DNSの変更が浸透するまで待つ」と言われるのはこのためです。実際は、何かが世界に順に広がるのではなく、各地のキャッシュが切れるのを待っているのです。そこで、引っ越しの前にTTLを短くしておくのが、よくある備えです。
ルートサーバは13台しかない?
ルートサーバには、aからmまでの13の名前がついています。運用しているのは12の組織で、米国のVerisign社がAとJを受け持っています。Mは、日本のWIDEプロジェクトが運用しています。
ただし、「世界に13台しかない」わけではありません。それぞれの名前の裏には、世界各地に置かれた多くの複製があります。運用組織が共同で公開するroot-servers.orgによると、2026年時点で約2,000か所あります。
各地の複製は、同じ番号を一斉に名乗っています。途中のルータは、その番号宛てのパケットを、経路の上でいちばん近い複製へ届けます。この届け方をエニーキャストと呼びます。1か所が故障したり攻撃を受けたりしても、ほかの場所が答え続けられます。
DNSに登録されている情報: 主なレコード
権威DNSサーバには、名前ごとに「どんな種類の情報か」をつけた行が登録されています。この1行1行をレコードと呼びます。
| 種類 | 中身 | 例 |
|---|---|---|
| A | 名前に対応するIPv4の番号 | www.example.com → 203.0.113.10 |
| AAAA | 名前に対応するIPv6の番号 | www.example.com → 2001:db8::10 |
| CNAME | 別名。「この名前は、あの名前と同じ」 | shop.example.com → 外部のサービスの名前 |
| MX | その名前宛てのメールを受け取るサーバ | example.com → mail.example.com |
| TXT | 自由な文字列。メールの送り主の確認などに使う | メールを送ってよいサーバの宣言 |
| NS | その区切りを受け持つ権威DNSサーバ | example.com → ns1.example.com |
IPv6の番号は、IPv4の4倍の長さ(128ビット)です。違いは「IPv4とIPv6の違い」の表で見られます。
CNAMEは、配信をCDN(各地のサーバから配信を代行するサービス)などに任せるときに使います。相手の名前の別名にしておけば、相手が番号を変えても、自分の設定は直さずに済みます。
メールを送るサーバは、宛先の「@」の後ろの名前のMXレコードを調べて、届け先を探します。
DNSとプライバシー
昔からの方式のDNSの問い合わせは、暗号化されずに送られます。そのため、同じWi-Fiにいる人や途中の通信事業者は、どの名前を調べたかを読み取れます。
「HTTPSとは?」で見たとおり、HTTPSで中身を守っても、どのサイトを見ようとしたかは、ここから分かります。
そこで、DNSの問い合わせそのものを暗号化する方式が作られました。HTTPSと同じTLSで包んで送る方式をDNS over TLS(DoT)と呼び、2016年に規格になりました。HTTPSの通信として送る方式をDNS over HTTPS(DoH)と呼び、2018年に規格になりました。どちらも、多くのブラウザやOSで使えます。
ただし、暗号化されるのは、自分の機器とリゾルバの間だけです。リゾルバ自身は、どの名前が調べられたかを知っています。リゾルバから権威DNSサーバへの問い合わせも、多くはまだ暗号化されていません。どのリゾルバを使うかは、「問い合わせの記録を誰に預けるか」を選ぶことでもあります。
DNSをねらう攻撃と、その守り
偽の答えを覚えさせる: キャッシュポイズニング
リゾルバに偽の答えを覚えさせる攻撃を、DNSキャッシュポイズニングと呼びます。成功すると、利用者が正しい名前を入力しても、偽のサーバに案内されます。偽の答えが覚えられている間は、そのリゾルバを使う全員が影響を受けます。
リゾルバは、問い合わせにつけた番号(ID)と同じ番号の答えを、本物と見なします。このIDは16ビットで、65,536通りしかありません。攻撃者は、本物の答えより先に、IDを当て推量した偽の答えを大量に送りつけます。
2008年、研究者のダン・カミンスキーは、この攻撃をずっと成功させやすくする方法を見つけました。存在しない名前を次々に問い合わせさせて、何度でも挑戦できるようにする方法です。同年7月8日、米国の対策機関CERT/CCが公表し、多くのDNSソフトが同時に修正されました。修正の中心は、ポート番号も毎回ばらばらにして、当てるべき組み合わせを増やすことでした。
答えに署名をつける: DNSSEC
より根本的な対策が、DNSSECです。ドメインの持ち主が、レコードに電子的なはんこ(デジタル署名)をつけます。リゾルバは、ルートから順に署名をたどり、答えが本物で、途中で書き換えられていないかを確かめます。ルートには、2010年7月から署名がつけられています。
ただし、DNSSECには、できないこともあります。答えを暗号化しないので、どの名前を調べたかは隠せません(それはDoHやDoTの役目です)。署名をつけていないドメインや、署名を確かめないリゾルバでは効きません。大量の通信で相手を止める攻撃(DDoS)も防げません。
もう1つの守りが、HTTPSです。偽のサーバに案内されても、そのサーバは、ふつうその名前の正しい証明書を持っていません。そのためブラウザが警告を出します。警告が出たら、先へ進まないことが大切です。
DNSが止まると: 2021年のFacebookの障害
2021年10月4日、Facebook・Instagram・WhatsAppが6時間以上つながらなくなりました。以下は、運営会社(今のMeta社)が翌日に公開した説明の要約です。
きっかけは、社内の回線の保守作業でした。回線の空き具合を調べるつもりで出したコマンドが、世界中のデータセンターをつなぐ回線を、すべて切ってしまいました。こうした誤りを止めるはずの点検の道具にも、不具合がありました。
同社の権威DNSサーバは、データセンターと連絡が取れないと、接続に問題があると判断するように作られていました。そのときは、「この番号へはこちらへ」という道案内を、インターネットに出すのをやめます。この道案内を交換する決まりをBGPと呼びます。結果として、DNSサーバ自体は動いていたのに、外からたどり着けなくなりました。
世界中のリゾルバは、facebook.com などの番号を調べられなくなりました。サービスのサーバが動いていても、番号が分からなければ、利用者はつながれません。社内の道具も同じネットワークに頼っていたため、技術者がデータセンターへ出向いて復旧させました。Metaは、攻撃によるものではないとしています。
自分で試してみる
名前解決は、パソコンで実際に見られます。Windowsのコマンドプロンプトや、Macのターミナルで「nslookup example.com」と入力します。番号と、答えたリゾルバが表示されます。
Macなどで「dig +trace example.com」と入力すると、ルートから順にたどる様子も見られます。どちらも調べるだけで、設定は変わりません。
よくある誤解
誤解: DNSは、世界のどこかにある1台の大きなサーバ
実際は、名前の区切りごとに、たくさんのサーバが分担しています。ルートだけでも13の名前があり、約2,000か所で動いています(2026年)。それぞれのドメインの答えは、その持ち主の権威DNSサーバが持っています。スマホの設定に出てくる「DNSサーバ」は、このうち自分が問い合わせるリゾルバのことです。
誤解: DNSサーバを変えると、インターネットが速くなる
実際は、変わるのは名前を調べる時間だけです。これはつながる前の最初の一歩で、多くはキャッシュからすぐ答えが出ます。動画やファイルを受け取る速さは変わりません。
逆に遅くなることもあります。大きなサービスの中には、リゾルバの場所を手がかりに、近いサーバの番号を返すものがあるからです。遠いリゾルバを使うと、遠いサーバに案内されることがあります。今のリゾルバが遅いなら、変えて改善することはあります。
誤解: HTTPSなら、どのサイトを見ているかも隠れる
実際は、HTTPSが隠すのはページの中身やURLの後半などです。昔からの方式のDNSの問い合わせは暗号化されないので、調べた名前は途中から読み取れます。DoHやDoTを使っても、リゾルバには分かります。相手のIPアドレスや、HTTPSの準備で送るサイトの名前(SNI)から分かることもあります。
数字で見る
| 項目 | 数字 | 時点・出典 |
|---|---|---|
| ルートサーバの名前と運用組織 | 13(a〜m)と12 | IANA、root-servers.org |
| ルートサーバの稼働中の拠点 | 約2,000か所 | 2026年、root-servers.org |
| TLDの数 | 1,000を超える | 2026年、IANAの一覧 |
| Facebookなどがつながらなかった時間 | 6時間以上 | 2021年10月4日、外部の観測(ThousandEyes) |
もっと詳しく学ぶ
- 違いを表で見る: TCPとUDPの違い(DNSの問い合わせが主にUDPを使う理由)
- 経路の案内のしくみ: OSPFとBGPの違い(Facebookの障害で出てきたBGPの位置づけ)
- 止まりにくくする計算: 稼働率の計算ツール(サーバを複数置くと止まりにくくなる計算)
- 次の一歩の用語: URL(ドメイン名を含む、Webページの場所の書き方)
- 名前を調べた後の流れ: 「インターネットはどうやってデータを届けるの?」