プロンプトと範囲
あるチームが、利用可能な場合にHTTP/3を優先しつつ、クライアントが代替ホスト、ポート、プロトコル、TLSヒントを発見できるように、DNSでサービスバインディングデータを公開したいと考えています。SVCBおよびHTTPSレコード、優先度、AliasMode、キャッシュ、セキュリティ境界について説明してください。RFC 9460はSVCBとそのHTTPバリアントを定義していますが、DNSのヒントは証明書の検証、HTTPセマンティクス、または認可を代替するものではありません。
面接官が評価するポイント
- HTTPSがHTTP固有のSVCBバリアントであることを理解しているか。
- AliasModeとServiceMode、およびそれぞれの優先度ルールを区別できるか。
alpn、port、およびアドレスヒントが接続ヒントであることを理解しているか。- DNSSEC、DoH/DoT、および通常のDNSの信頼境界を説明できるか。
- TTL、フォールバック、モニタリング、および失効処理を設計できるか。
最初に確認すべき明確化事項
クライアントとリゾルバのバージョン、目的がエイリアス設定なのかプロトコル選択なのか、DNSSECおよび暗号化DNSの導入状況、HTTP/3のフォールバック要件、ならびに証明書と可用性の目標を確認します。特に指定がない場合は、一部のリゾルバがHTTPSレコードを解釈できないと想定します。
30秒の回答フレームワーク
HTTPSレコードをHTTPサービスディスカバリとして扱います。優先度0のAliasModeは別の名前を指し、追加のルックアップが必要になります。ゼロ以外のServiceModeレコードはサービスを記述します。alpnとportは接続の選択に役立ちますが、認可を付与したりTLS検証を置き換えたりするものではありません。ルックアップの失敗時やサポートされていないプロトコルの場合は、A/AAAA、デフォルトポート、およびサポートされているプロトコルにフォールバックし、TTLとモニタリングによってロールアウトを制御します。
ステップバイステップの詳細解説
1. レコードタイプの区別
SVCBは汎用的なサービスバインディングレコードであり、HTTPSはそのHTTP向けバリアントです。どちらも優先度、ターゲット名、キーと値のパラメータを保持します。これらはプロキシレイヤーを作成するものではなく、HTTPは引き続きRFC 9110のセマンティクスに従います。
2. AliasModeとServiceModeの説明
AliasModeは優先度0を使用して現在の名前をターゲット名のエイリアスにするため、クライアントはターゲットをクエリする必要があります。ServiceModeはゼロ以外の優先度を使用してサービスを記述します。クライアントは優先度の低いものから順に試行しますが、サポートされていない候補はスキップします。
3. ヒントを過信せずに読み取る
alpnはh2またはh3を広報でき、portは非デフォルトポートを広報でき、アドレスヒントは追加のルックアップを削減できます。ヒントは古くなったりブロックされたりする可能性があるため、クライアントは依然としてA/AAAAを解決し、QUIC/TLSを完了し、ネゴシエートされたプロトコルを確認します。
4. フォールバックの設計
エラーバジェット内で、利用可能な最も優先度の低いサービスを試行し、接続エラーやタイムアウトが発生した場合は次の候補を試行します。HTTPSルックアップが失敗した場合は、従来のA/AAAAおよびデフォルトのHTTPSポートを使用します。未知のキーが認可ポリシーになってはなりません。
5. キャッシュと変更の管理
TTLは、再帰リゾルバとクライアントがヒントを保持する期間を制御します。段階的なTTLとレコードの変更を行う前に、新しいホストまたはポートの準備を整えてください。権威レコードを削除しても、キャッシュされた回答が即座に削除されるわけではありません。緊急インシデントには、サーバー側でのブロックや証明書制御が必要です。
6. DNSとTLSのセキュリティの説明
DNSSECはレコードの完全性を認証し、DoH/DoTはクエリトランスポートを保護します。どちらもTLS ID検証に代わるものではありません。RFC 9460は、DNSヒントの信頼性を平文のHTTP 307シグナルと同等以下に制限しています。クライアントは引き続き証明書、SNI、ALPN、およびTLSバージョンを検証し、カバーされていないクロスオリジンのターゲットを認可することはできません。
7. 検証とロールバック
古いクライアント、AliasModeチェーン、複数の優先度、未知のキー、古いキャッシュ、DNSSEC障害、利用不可能なh3、証明書の不一致、IPv4/IPv6専用ネットワークをテストします。ハンドシェイク時間、プロトコルの成功率、フォールバック、エラー、プライバシーシグナルを監視します。古いレコードを復元してTTLを待つことでロールバックします。IDの緊急時にはサーバー側のブロックを使用します。
高品質な回答例
私はHTTPSレコードをサービスディスカバリのヒントとして位置付けます。AliasModeはクライアントにターゲット名をクエリさせ、ServiceModeは優先度順に候補をリストします。alpn、port、およびアドレスヒントは選択を支援しますが、アクセス権を付与するものではありません。h3が失敗した場合は、バジェット内でh2または従来のA/AAAAパスにフォールバックし、DNSクエリが失敗したときでも古いパスを利用可能にしておきます。
DNSSECはレコードの完全性を保護し、DoH/DoTはクエリトランスポートを保護しますが、証明書、SNI、ALPN、およびTLSバージョンのチェックは独立したままです。TTLを意識したロールアウトを使用し、プロトコルの成功率、フォールバック、証明書エラー、キャッシュの挙動を監視します。古いリゾルバ、未知のキー、AliasMode、DNSSEC障害、およびIPv6専用ネットワークをテストします。緊急のID問題に対しては、サーバー側のブロックと証明書制御が必要であり、DNSキャッシュの期限切れを待つだけでは不十分です。
よくある間違い
- HTTPSをCNAMEやリダイレクトの代替として扱う。
- AliasMode、ServiceMode、および優先度を混同する。
- アドレスヒントを権威あるものとして扱い、A/AAAAをスキップする。
alpn=h3がQUIC/TLSネゴシエーションをバイパスすると想定する。- 完全性保護のない通常のDNSを信頼できると呼ぶ。
- 権威レコードを削除した後のキャッシュされた回答を無視する。
- 検証可能な証明書でカバーされていないターゲットを指す。
フォローアップの質問と回答
フォローアップ1:なぜAliasModeは別のルックアップを必要とするのですか?
名前レベルのエイリアスのみを表現し、最終的なサービスパラメータを持たないため、クライアントはServiceModeデータを取得するためにターゲットをクエリする必要があります。
フォローアップ2:HTTPSレコードはCDNホストの証明書をバイパスできますか?
いいえ。クライアントは接続名に対する証明書とTLS構成を引き続き検証します。CDNは検証可能な証明書を提示しなければなりません。
フォローアップ3:DNSSECとDoH/DoTの違いは何ですか?
DNSSECはレコードの送信元と完全性を検証します。DoH/DoTはクエリトランスポートのプライバシーを保護します。どちらもTLS ID検証の代わりにはなりません。
フォローアップ4:漏洩したターゲットはどのように失効させますか?
まずサーバー側でそれをブロックするか証明書を失効させ、その後にレコードを更新してTTLを短縮します。キャッシュされた回答は即座には消えません。