ネットワーク管理者による Chrome の非公開プリフェッチ プロキシ

Chrome では、ユーザーのページの読み込み時間を短縮するために、Google 検索結果ページやその他の参加ウェブサイトのリンクをユーザーがクリックする前にプリフェッチする場合があります。この機能については、技術的な観点でこちらの記事で詳しく説明しています。

この機能は、プリフェッチが必要なウェブサイトからユーザーの IP アドレスを隠す CONNECT プロキシを利用しています。そうすると、その性質上、接続の確立はネットワーク管理者の視点から見えなくなります。

それと同時に、ネットワーク管理者によるコンテンツのフィルタリングが必要になることも認識しています。そこで、プリフェッチされたリンクをユーザーがクリックした場合にネットワーク管理者が引き続き操作できるメカニズムを設計しました。

コンテンツ フィルタリング

Chrome では、ユーザーのプライバシーを保護するため、リンクのプリフェッチ時に確認可能な DNS ルックアップは実行されません。ユーザーがプリフェッチしたリンクに移動すると、ページリソースはローカル キャッシュから取得されます。その際、監視可能な DNS ルックアップは行われません。副作用として、ユーザーがプリフェッチしたリンクに移動すると、コンテンツ フィルタリングが意図したとおりに動作しないことがあります。

ネットワーク管理者がこれらのプリフェッチされたナビゲーションのコンテンツをフィルタできるように、ユーザーがプリフェッチされたリンクをクリックした際に DNS ルックアップを発行するよう Chrome に指示するシグナリング メカニズムを設計しました。この DNS ルックアップは、プリフェッチが実行されなかった場合と同じ方法で同時に行われるため、管理者はコンテンツを同じ期間でフィルタできます。Chrome は、2 回目の DNS ルックアップが成功するまで、キャッシュからプリフェッチされたリソースの読み込みを一時停止します。失敗した場合、Chrome はプリフェッチされたリソースを使用せず、通常どおりにページを読み込みます。なお、DNS ルックアップの完了を Chrome が待つことになるため、ユーザーのパフォーマンスが低下します。

シグナリング メカニズムの詳細

ページのプリロードを無効にしていないユーザーについては、Chrome の起動時またはネットワーク インターフェースの変更時に dns-tunnel-check.googlezip.net の DNS ルックアップが非同期で発行されます。

dns-tunnel-check.googlezip.net チェックの結果は次のとおりです。

  • レスポンスが NXDOMAIN または SERVFAIL の場合、または NOERROR レスポンス コードが返されても A レコードも AAAA レコードも含まれていない場合、Chrome はネットワーク管理者がプリフェッチ ページへのナビゲーションを確認する必要があることを認識します(プリフライト モードをご覧ください)。
  • レスポンスがその他の値の場合、Chrome はプリフェッチされたリソースを直接使用し、ユーザーがプリフェッチされたページに移動しても、追加の DNS ルックアップは実行しません。

このチェックの結果は Chrome を再起動するまで、またはネットワーク インターフェースが変更されるまで保持されます。これにより、dns-tunnel-check.googlezip.net の新しい DNS ルックアップが行われ、結果が変わる可能性があります。

プリフライト モード

このモードでは、プライベート プリフェッチ プロキシ経由でプリフェッチされたページに移動する前に、Chrome は関連ドメインの DNS ルックアップを発行し、レスポンスが返されるまで待ちます。

  • レスポンスが空でない IP アドレスのセットで構成されている場合、Chrome はプリフェッチされたリソースを使用してナビゲーションを続行します。
  • レスポンスが REFUSED(推奨)または NXDOMAIN の場合、Chrome はナビゲーションを続行せず、代わりに関連する DNS エラーのページが表示されます。