インターネットを使っていると、同じウェブサイトに何度もアクセスする機会は多いものです。
そのたびにDNSサーバーへ問い合わせが発生していたら、通信の速度や効率に大きな影響が出てしまうでしょう。
そこで活躍するのが、DNSキャッシュという仕組みです。
DNSキャッシュとは何か、どのような役割を持っているのか、TTLや保持期間、リゾルバとの関係など、初めて学ぶ方にもわかりやすいよう、丁寧に解説していきます。
DNSキャッシュとは? 結論からわかりやすく解説
それではまず、DNSキャッシュの基本的な意味と結論からわかりやすく解説していきます。
DNSキャッシュとは、一度取得したDNSの問い合わせ結果(ドメイン名とIPアドレスの対応情報)を、一時的に保存しておく仕組みのことです。
たとえば「example.com」というドメインに対応するIPアドレスを調べた場合、その結果をキャッシュとして手元に保持しておくことで、次回以降は改めてDNSサーバーへ問い合わせることなく、すぐにアクセスできるようになります。
インターネット上でウェブサイトにアクセスするたびに毎回DNSサーバーへ問い合わせを行うと、通信の遅延が発生し、ユーザー体験の低下につながる可能性があるでしょう。
DNSキャッシュはその問題を解消するための重要な仕組みといえます。
DNSキャッシュとは、ドメイン名とIPアドレスの対応情報を一時保存することで、DNS問い合わせを省略し、通信を高速化・効率化するための仕組みです。
DNSとは「Domain Name System」の略であり、人間が読みやすいドメイン名(例:www.google.com)を、コンピュータが理解できるIPアドレス(例:142.250.196.132)へと変換するシステムです。
このDNSの検索結果をキャッシュ(一時保存)することで、毎回の問い合わせコストを削減しているのがDNSキャッシュの役割となります。
OSやブラウザ、ルーター、DNSリゾルバなど、さまざまな場所でキャッシュが行われており、インターネット通信の縁の下の力持ち的な存在といえるでしょう。
DNSキャッシュの仕組みとDNSリゾルバの役割
続いては、DNSキャッシュがどのように機能しているか、そしてDNSリゾルバとの関係を確認していきます。
DNSキャッシュの仕組みを理解するうえで、DNSリゾルバの役割を知ることは欠かせません。
DNSリゾルバとは、ユーザーのDNS問い合わせを受け付け、権威DNSサーバーへの問い合わせを代行するサーバーのことです。
フルサービスリゾルバやキャッシュサーバーとも呼ばれることがあります。
DNS問い合わせの流れ
ユーザーがブラウザでURLを入力したとき、DNSの問い合わせは以下のような流れで行われます。
① ユーザーのPC(スタブリゾルバ)がDNSリゾルバへ問い合わせる
② DNSリゾルバにキャッシュがあれば、すぐにIPアドレスを返す
③ キャッシュがない場合は、ルートDNSサーバー → TLDサーバー → 権威DNSサーバーの順に問い合わせを行う
④ 取得したIPアドレスをユーザーへ返し、同時にキャッシュとして保存する
このように、キャッシュが存在する場合は②で完結するため、問い合わせ時間が大幅に短縮されます。
キャッシュが存在しない場合は③のように複数のサーバーを経由する必要があり、その分だけ時間がかかるでしょう。
キャッシュが保存される場所
DNSキャッシュはひとつの場所だけに保存されるわけではありません。
複数の層でキャッシュが行われており、それぞれの役割があります。
| キャッシュの場所 | 概要 |
|---|---|
| OSのDNSキャッシュ | WindowsやmacOSなどのOSが保持するキャッシュ。ローカル端末に保存される |
| ブラウザのDNSキャッシュ | ChromeやFirefoxなどのブラウザが独自に保持するキャッシュ |
| ルーターのDNSキャッシュ | 家庭や企業のルーターが一時保存するキャッシュ |
| DNSリゾルバのキャッシュ | ISPや企業のDNSサーバーが保持する大規模なキャッシュ |
これらが階層的に機能することで、インターネット全体の名前解決の効率が高まる仕組みになっています。
スタブリゾルバとフルリゾルバの違い
リゾルバには大きく分けて「スタブリゾルバ」と「フルリゾルバ(フルサービスリゾルバ)」の2種類があります。
スタブリゾルバとは、ユーザーのPC側に内蔵された簡易的なリゾルバのことで、DNSリゾルバへ問い合わせを転送する役割を担います。
一方フルリゾルバは、ルートサーバーから権威DNSサーバーまで再帰的に問い合わせを行い、最終的な回答を取得する機能を持っています。
DNSキャッシュが特に重要な役割を果たすのは、このフルリゾルバの段階です。
キャッシュがあれば再帰的な問い合わせを省略できるため、応答速度が劇的に向上するでしょう。
TTL(Time To Live)とDNSキャッシュの保持期間
続いては、DNSキャッシュの保持期間を決める重要な概念であるTTLについて確認していきます。
DNSキャッシュは永遠に保持されるわけではありません。
一定の期間が経過すると破棄される仕組みになっており、その期間を決める値がTTL(Time To Live)です。
TTLとは何か
TTLとは「Time To Live」の略で、日本語では「生存時間」と訳されます。
DNSのコンテキストでは、DNSレコードがキャッシュとして保存される最大時間(秒単位)を意味します。
たとえばTTLが3600と設定されている場合、そのDNSレコードは最大3600秒(1時間)キャッシュとして保持されます。
TTLを過ぎると、キャッシュは無効化され、次回のアクセス時には再度DNSサーバーへ問い合わせが行われる仕組みです。
TTL = 3600(秒)→ 1時間キャッシュが有効
TTL = 86400(秒)→ 24時間(1日)キャッシュが有効
TTL = 300(秒)→ 5分間キャッシュが有効
TTLの設定による影響
TTLの値は、DNSゾーンファイルやDNS管理画面で設定できます。
TTLを長く設定するか、短く設定するかによって、それぞれメリット・デメリットがあります。
| TTLの長さ | メリット | デメリット |
|---|---|---|
| 長い(例:86400秒) | キャッシュが長く有効なため、DNS問い合わせが減り通信が効率的 | IPアドレス変更後も古い情報が長くキャッシュされてしまう |
| 短い(例:300秒) | IPアドレス変更がすぐに反映されやすい | DNS問い合わせが頻繁に発生し、負荷が高まる |
サーバー移転やIPアドレス変更を予定している場合は、事前にTTLを短く設定しておくことが一般的な対策として知られています。
これにより、変更後の新しいIPアドレスへの切り替えをスムーズに進められるでしょう。
DNSキャッシュの保持期間に関するポイント
DNSキャッシュの保持期間はTTLだけで決まるわけではありません。
OSやブラウザがTTLの値に関係なく独自の最大キャッシュ時間を設定していることもあります。
たとえばGoogle ChromeはデフォルトでDNSキャッシュを最大1分間保持するとされており、TTLが短くても即座に反映されないケースがあります。
TTLはDNSレコードがキャッシュとして保持される時間を秒単位で指定する値です。TTLが短いほど変更が早く反映されますが、DNS問い合わせの頻度が増加します。TTLが長いほど効率的ですが、変更後の反映に時間がかかる点に注意が必要です。
DNSキャッシュのメリット・デメリットと注意点
続いては、DNSキャッシュを活用することで得られるメリットと、あわせて知っておくべきデメリット・注意点を確認していきます。
DNSキャッシュの主なメリット
DNSキャッシュを使うことで得られる主なメリットは以下の通りです。
| メリット | 内容 |
|---|---|
| 通信の高速化 | DNSサーバーへの問い合わせを省略できるため、ウェブページの表示速度が向上する |
| DNSサーバーの負荷軽減 | 同じ問い合わせが集中するのを防ぎ、サーバー全体の安定性が高まる |
| ネットワーク帯域の節約 | 問い合わせ回数が減ることで、ネットワーク全体のトラフィックが抑えられる |
特にアクセス数の多いウェブサービスでは、DNSキャッシュが通信の効率化に大きく貢献しています。
DNSキャッシュポイズニングとセキュリティリスク
一方でDNSキャッシュにはセキュリティ上のリスクも存在します。
代表的なものがDNSキャッシュポイズニング(DNS汚染)と呼ばれる攻撃手法です。
これは、DNSキャッシュに偽のIPアドレス情報を意図的に書き込むことで、ユーザーを本物とは異なる不正なサイトへ誘導する攻撃です。
フィッシング詐欺やマルウェア感染につながるケースもあるため、非常に危険な攻撃手法といえるでしょう。
この対策として、DNSSEC(DNS Security Extensions)と呼ばれるDNSの電子署名技術が活用されています。
DNSSECはDNSレスポンスに署名を付与することで、情報が改ざんされていないかを検証できる仕組みです。
DNSキャッシュのクリア(フラッシュ)方法
DNSキャッシュが古い情報を保持したままになっていると、ウェブサイトが正しく表示されないなどのトラブルが起こることがあります。
そのような場合はDNSキャッシュをクリア(フラッシュ)することで解決できる場合があるでしょう。
Windowsの場合:コマンドプロンプトで「ipconfig /flushdns」を実行
Macの場合:ターミナルで「sudo dscacheutil -flushcache」などを実行(バージョンにより異なる)
Chromeの場合:アドレスバーに「chrome://net-internals/#dns」と入力し、Clear host cacheをクリック
DNSキャッシュをクリアすることで、最新のDNS情報が取得され、正しいIPアドレスへのアクセスが可能になります。
サイト移転後やDNS設定変更後に表示が更新されない場合には、まずDNSキャッシュのクリアを試してみるのが有効な対処法です。
まとめ
今回は「DNSキャッシュとは? 意味と仕組みをわかりやすく解説!(TTL・保持期間・リゾルバなど)」というテーマで詳しく解説しました。
DNSキャッシュとは、ドメイン名とIPアドレスの対応情報を一時的に保存し、毎回のDNS問い合わせを省略することで通信を高速化する仕組みです。
DNSリゾルバがキャッシュを活用することで、再帰的な問い合わせを省略でき、ウェブサイトへの接続がスムーズになります。
TTL(Time To Live)はキャッシュの保持期間を秒単位で指定する値であり、TTLの設定はサイト運営においても重要な要素のひとつです。
一方でDNSキャッシュポイズニングのようなセキュリティリスクも存在するため、DNSSECの活用や定期的なキャッシュクリアなどの対策を意識しておくことが大切でしょう。
DNSキャッシュの仕組みを正しく理解することは、ウェブサイト運営やネットワーク管理において非常に役立つ知識です。
ぜひ今回の内容を参考に、DNS周りの理解を深めてみてください。