VPNに接続すると、先ほどまで応答していた開発用VMが沈黙します。明白な物語はひとりでに書かれ、トンネルがルートを奪ってゲストの通信が社内ネットワークへ送られ、修正は静的ルートの追加かアダプターのブリッジモードへの切り替えだ、と言われます。その話が正しいこともあります。しかし通常の原因ではなく、それを最初に信じて動くと別の何かが壊れがちです。

host-onlyネットワークは、ホストが所有しゲストと共有するソフトウェア上のネットワークで、物理的な接続とは独立しています。VPNクライアント自身のインターフェースはそのネットワークを変えないため、触る前に四つの層のどれが実際に失敗したのかを突き止めてください。

ルートは通常ローカルのまま

ルーティングテーブルの最初のページではなくカーネルに尋ねます。Linuxではip route get 192.168.56.10が、実際に使われるルート、インターフェース、送信元アドレスを正確に報告し、これは既定ルートを読んで推測するのとは別の答えです。出力がhost-onlyインターフェースを示すなら、その経路にトンネルはまったく関与していません。

本当に壊しうるのは二つだけで、どちらもVPNではなくアドレスの問題です。host-onlyのプレフィックスと重なるリモートサブネットはより具体的なルートを勝たせ、より低いメトリックで広いルートを入れるVPNクライアントはそのプレフィックスを引きはがせます。どちらも同じコマンドに現れ、出力に名前が出るインターフェースがトンネルになり、修正はそのアドレス設計の持ち主の仕事です。

ルート選択とパケットの受け入れは別の判断

ここが思考モデルが通常見落とす部分です。完全なローカルルートがあっても、VPNクライアントはパケットを拒否できます。多くのクライアントは、トンネルの外でどの宛先を許可するかを決めるローカルネットワークアクセスポリシーを適用しており、接続されたサブネットがその一覧を自動で更新するわけではありません。

そのため、アプリケーション側から見るとルーティングの問題とまったく同じに見え、クライアント側から見るとまったく違って見えます。ip route getが正しいインターフェースを示しているのに接続がタイムアウトするなら、ルートの編集をやめ、代わりにクライアントの文書化されたローカルアクセスの挙動を読んでください。ローカルサブネットの許可リストを公開するクライアントもあれば、トンネル以外をすべて遮断するもの、キルスイッチが有効なときだけ遮断するものもあります。

この区別が重要になるのは、修正が互換でないからです。ルートを足してもフィルターは満たせませんし、一台のゲストに届くためにフィルターを切るのは、症状から連想されるよりずっと大きな判断です。

ゲストが「いいえ」と言う三つの方法

インターネットを閲覧できるゲストは、目的のサービスについて何も証明していません。リスナーがゲスト内部で127.0.0.1に束縛されている場合、経路がどれほど良くてもホストからの要求は届きません。ゲスト内でss -ltnを使って確認し、ポートだけでなくローカルアドレスの列を見てください。

次はゲスト自身のファイアウォールです。制限の強い既定値を持つ開発用イメージは、ホストのパケットを受け取ってサービスの境界で落とすことがあり、それはルーティングのブラックホールとまったく同じに見えるタイムアウトを生みます。最後にサービス自身の設定があり、特定のホスト名に束縛されたWebアプリや、クライアントアドレスの許可リストは、すべてのパケットが届いてもhost-onlyサブネットからの要求を拒否します。

VMのネットワークモードを変える前に、この三つを順に確認してください。どれもゲストの接続を作り直すより小さな変更で、どれにも明確なテストがあります。

ブリッジとは何か、その代償は何か

アダプターをブリッジモードにすることは、host-only経路の修理ではありません。ゲストを別のネットワーク、通常は物理LANに置くという判断であり、そこでは同じ場所にいる他のすべてから見えるようになります。それが望みどおりのこともあります。しかし元の構成がしていたことではありません。

ゲストが本当にそのLANの対等な一員である必要があり、露出が承認されている場合に使ってください。一つのサービスが応答しなくなったからといって使うのは、その変更が開発を安全にしていた隔離からゲストを出してしまうことがあるため避けてください。

承認された修正のあとは、ホストからゲストへの新しい要求、トンネル経由で必要な社内リソース、トンネルを切った状態での意図した拒否の挙動という決まった順序で試します。最後が成り立たなくなったなら、修正は問題を通り越しています。

VirtualBoxのhost-onlyネットワークの節は、ホスト側のソフトウェアインターフェースとブリッジ接続との違いを説明しており、二つのモードが互換だと決めつける前に読む価値のある資料です。

関連記事