Windows Sandbox の通信は既定ではホストの VPN に従わない
サンドボックスは既定のスイッチ上の仮想アダプター経由でネットワークに到達する。トンネルがそこを覆うかどうかはクライアントの性質であり、内側で確認する必要がある。
Windows Sandbox を起動し、その中でブラウザーを開くと、ホストが一分前まで VPN に接続していたにもかかわらず、ページは通常の接続から読み込まれる。壊れているものは何もない。サンドボックスはホストの既定のスイッチに接続された仮想ネットワークアダプターを受け取り、ホストのトンネルがその経路を覆うかどうかは VPN クライアントの性質であり、Windows の性質ではない。
サンドボックスが実際に受け取るもの
サンドボックスは独自のネットワークアダプターを持つ軽量な仮想マシンである。そのアダプターはホストの Hyper-V の既定のスイッチ経由で接続し、スイッチはサンドボックスの通信をマシンから出る前にホストの仮想 Ethernet インターフェイスへ変換する。この点が、これについて人が報告するほぼすべての症状を説明する。
つまりサンドボックスはデスクトップ上のプロセスではない。ホストがパケットを転送する別個のネットワーク端点であり、ホストのファイアウォールと VPN クライアントはそれぞれ独自の方法でその転送を見る。ブラウザープロセス向けに書かれた規則は、仮想スイッチから来た変換済みフレームに自動的に一致するわけではない。
一つに見える二つの要件
プライベートなリソースに到達することと、サンドボックスのすべての要求をトンネル経由に強制することは別の目標である。前者にはサンドボックスの端点で機能するルートと名前解決が必要になる。後者には再接続や障害に耐える強制が必要になる。どちらも他方から導かれず、一方を満たす確認は他方について何も語らない。
公開アドレスの確認は二つの問いのどちらにも完全には答えない。サンドボックスの内側から VPN の出口が見えることは、一部の通信がトンネルを使ったことを示す。プライベート名が解決されるかどうか、トンネルが落ちている間に始まった要求がどうなるかについては何も語らない。
二つの要件は異なる設計につながり、ブラウザーで検証できるのは片方だけなので、何かを試す前にどちらが必要かを書き出しておく。
サンドボックスの内側から確認する
意味のある観察はホストからではなく、サンドボックス自身のセッションからしか得られない。そこで PowerShell を開き、アダプター、名前解決、ドキュメント用アドレスへの経路を見る:
ipconfig /all Resolve-DnsName files.corp.example Test-NetConnection 198.51.100.7 -Port 443 Get-NetRoute -DestinationPrefix 0.0.0.0/0
アダプターの一覧はサンドボックスに与えられたアドレスとゲートウェイを示す。ホストと異なるゲートウェイは既定のスイッチでは正常なので、ゲートウェイではなく出口を比べる。解決のテストはプライベート名に応答があるかどうかを示し、split-horizon の設定がホストと食い違うのはたいていここである。ルートの行はサンドボックスがどちらのゲートウェイを既定ルートの所有者と見なすかを示す。
トンネルを接続した状態と切断した状態で、同じ三つの確認を繰り返す。その二つの状態で変わらない結果は、公開確認がどのアドレスを示したとしても、トンネルがサンドボックスの経路にまったく入っていない証拠である。
サンドボックスがネットワークを必要としないときは無効にする
オフラインの検査では、カスタム構成ファイルでネットワークを完全に取り除ける。設定は構成ドキュメント内の一つの要素である:
<Configuration> <Networking>Disable</Networking> </Configuration>
サンドボックスの構成リファレンス はこの要素を文書化し、ネットワークを有効にすると信頼していないアプリケーションに内部ネットワークが露出しうると警告している。その警告こそが、既定を受け入れるのではなく明示的に設定する理由そのものである。
ただしスイッチは VPN インターフェイスを選ばない。ネットワークがあるかどうかという二値の判断であり、サンドボックスを特定のトンネルに結び付ける手段ではない。出口を名指しする要件は、出口があるかどうかだけを決めるスイッチでは満たせない。
何かを許可する前に境界を設計する
要件が厳格な分離なら、それを強制できる仮想マシンのネットワーク設計を選び、転送トラフィックや仮想マシンのトラフィックには VPN 製品のサポート対象ポリシーを使う。ホストクライアントの挙動を推測するのは設計ではなく、一度の成功した確認は実装ではない。
テストを通すために、信頼できないサンドボックスに社内 VPN プロファイルや秘密の資格情報を渡してはならない。それは確立しようとしていた境界を緑の結果と引き換えにし、資格情報はテストより長く生き残る。
展開ノートにネットワークモード、観察した出口、再接続の挙動を記録する。クライアントの更新で転送トラフィックの扱いが変わったとき、そのノートこそが要件が本当は満たされていなかったことを教えてくれる。