代表的な面接トピック

総合面接:なぜユーザーが依然として古いDNSアドレスを解決してしまうのか?

一般普通
Offer.cc 編集チーム公開日 更新日

質問

ドメインのAレコードを新しいサービスに変更しましたが、一部のユーザーが依然として古いアドレスにアクセスしています。DNSクエリのパス、TTLがロールアウトに与える影響、古いキャッシュ層を特定する方法、およびカットオーバーのリスクを低減する方法を説明してください。

プロンプトと適用範囲

この一般的な技術面接の質問では、ネットワークの基礎とトラブルシューティング能力がテストされます。重要なのは、更新された権威レコードと、再帰リゾルバーまたはクライアントが保持している古い応答を切り分けて考えることです。

面接官がテストしていること

  • スタブリゾルバー、再帰リゾルバー、権威サーバーの役割を説明できるか。
  • TTL、ネガティブキャッシュ、独立したレコードタイプについて正しく論理立てて説明できるか。
  • 複数の場所やリゾルバーからのクエリを使用して、キャッシュまたは委譲の問題を特定できるか。
  • 単にユーザーにキャッシュをクリアするよう指示するのではなく、ロールバック可能なDNSカットオーバーを計画できるか。

確認すべき明確化のための質問

変更対象がA、AAAA、CNAME、またはNS委譲のいずれであるか、両方のエンドポイントが正常であるか、問題がグローバルなものか特定のプロバイダー・地域・ネットワークに限定されているか、古いTTLおよびSOAネガティブキャッシュのパラメーター、DNSSECの状態、アプリケーションが結果を固定(ピン留め)しているか、またはコネクションプールを使用しているかを確認します。

30秒で答える要約

まず権威サーバーに問い合わせ、次にいくつかのパブリックリゾルバーや影響を受けているネットワークからの応答と残存TTLを比較します。権威サーバーが正しく、再帰リゾルバーが古い場合は、キャッシュまたはアップストリームのTTLが原因です。権威サーバー間で不整合がある場合は、委譲、ゾーンの公開、および自動化の仕組みを調査します。カットオーバー前にはTTLを下げて古いTTLの期間分待機し、両方のエンドポイントを正常な状態に保ち、トラフィックを監視した上で、古いエンドポイントを廃止します。

段階的な詳細解説

1. 実際のクエリパスを描く

アプリケーションは通常、ブラウザやOSのスタブリゾルバーにアクセスし、スタブリゾルバーは再帰リゾルバーに問い合わせます。再帰リゾルバーは、キャッシュが最新であればキャッシュされた応答を返し、そうでなければルートサーバー、TLDサーバー、権威サーバーを順にたどります。権威サーバーはゾーンのレコードを保持します。各層が独自のキャッシュと更新タイミングを持つ場合があります。

2. TTLとネガティブキャッシュによる時間の関係を説明する

TTLを長くするとキャッシュヒット率が向上しクエリ負荷が減りますが、変更の反映は遅れます。既存のキャッシュされた応答は、通常、古いTTLがゼロになるまで残ります。ネガティブ応答もSOA関連のパラメーターに従ってキャッシュされるため、新しく作成された名前がまだ存在しないように見えることがあります。単一の伝播時間を約束するのではなく、レコードタイプおよびリゾルバーごとに残存TTLを測定します。

3. 調査を再現可能にする

権威サーバーに問い合わせて、一貫した委譲を確認します。次に、複数の再帰リゾルバー、地域、ネットワーク経由で同じ名前、タイプ、フラグをクエリし、応答、TTL、レスポンスコード、時刻を記録します。「権威は正しいが再帰は古い」「権威に不整合がある」「特定のクライアントのみ古い」というパターンは、それぞれキャッシュ、公開/委譲、ローカル層を示しています。

4. DNS以外の古いアドレス要因を除外する

HTTPプロキシ、CDN、アプリケーション設定、コネクションプール、サービスディスカバリ、またはhostsファイルによって、DNSが正しくなった後も古いアドレスが使われ続けることがあります。実際の宛先IP、TLS証明書、レスポンスヘッダー、ロードバランサーのログを確認し、障害がルーティングやアプリケーションのキャッシュではなく名前解決にあることを証明します。

5. 安全なカットオーバーを計画する

変更前にTTLをビジネス上許容できる値まで下げ、以前のTTLウィンドウが経過するのを待ちます。古いエンドポイントと新しいエンドポイントの両方を同時に利用可能な状態にしておきます。変更後は、地域やリゾルバーごとに応答の分布、エラー、実際のトラフィックを監視します。リスクウィンドウが閉じるまで古いエンドポイントを維持し、DNSのロールバックもキャッシュの期限切れを待つ必要があるため、アプリケーションレベルの縮退やデュアルサービスを準備します。

優れた回答例

まず権威レコードと委譲を検証し、次に複数の再帰リゾルバーおよび影響を受けているネットワークに問い合わせて、応答と残存TTLを記録します。権威サーバーが更新されているのに再帰応答が古い場合はキャッシュの期限切れ待ちを意味し、権威サーバー間で不整合がある場合はゾーンの公開、NS、または自動化の問題を意味します。少数の異常なデバイスのみの場合は、ローカルキャッシュ、hosts、プロキシ、またはコネクションプールの状態が原因です。TTLは古い応答が使用可能な期間を制御し、ネガティブキャッシュは新しい名前に影響を与えるため、固定の伝播時間を約束することはありません。カットオーバー前にTTLを下げ、両方のエンドポイントをアクティブに保ち、実際のトラフィックとエラーを監視し、リスクウィンドウが過ぎた後にのみ古いエンドポイントを廃止します。

よくある間違い

  • DNSの伝播は常に数分で完了すると主張する。
  • 1台のノートPCのキャッシュをクリアしただけで、それをグローバルな証拠として扱う。
  • パブリックDNSプロバイダーを1つしか照会しない。
  • Aレコードを更新する一方で、AAAA、CNAME、NS、またはDNSSECを忘れる。
  • 権威レコードを変更した直後に古いサービスを停止する。
  • CDN、プロキシ、またはhostsファイルが古いアドレスを提供しているのにDNSのせいにする。

フォローアップの質問と回答

なぜ新しいレコードが依然としてNXDOMAINを返すのですか?

アップストリームのリゾルバーがSOA関連のパラメーターに基づいてネガティブ応答をキャッシュしている可能性があります。権威レコードが存在することを確認し、ネガティブキャッシュの有効期限が切れるのを待ちます。

TTLを下げた後も古い応答が返されるのはなぜですか?

TTLの引き下げは新しく取得されたキャッシュエントリに適用され、既存のエントリは依然として古いTTLをカウントダウンします。また、正しいレコード、ゾーン、権威サーバーが変更されたかも確認してください。

すべてのユーザーにDNSを強制的に更新させることはできますか?

できません。再帰リゾルバーとクライアントは管理下にありません。事前のTTL変更、デュアルエンドポイント、アプリケーションルーティング、および監視によってリスクを軽減します。

IPv6が原因であるかどうかをどのように検出しますか?

AとAAAAを個別にクエリしてテストし、クライアントが実際に使用しているアドレスファミリーを記録します。AAAAが依然として古いエンドポイントを指している場合は、それを個別に修正します。

公開情報ソース

関連する質問