アダプターの順序がラボのVPN経路を決めない理由
ハイパーバイザーのアダプター1は、ゲストがどの経路を選ぶかを何も教えてくれません。ハードウェア変更のたびにプレフィックス、メトリック、ポリシールールを比較してください。
ハイパーバイザーの一覧でアダプター1が最初にあるのは表示順序にすぎず、ゲストのルーティングテーブルはそれを読みません。経路を決めるのはプレフィックス、メトリック、そしてどちらよりも先に適用されるポリシールールです。そのため、ラボのVMにブリッジアダプターを追加すると、古いNATインターフェースが依然として存在し二番目として表示されたまま、二つ目のデフォルト経路ができることがあります。結果として、設定を何も変えていないのにトンネルを使うときと使わないときがあるVMになります。
三つの条件が経路を決める
三つの条件とは、どのプレフィックスがより具体的か、プレフィックスが同じときにメトリックがどう働くか、そしてハードウェア変更後にゲストがどのルールを適用したかです。どれも一つのコマンドで答えられ、いずれもハイパーバイザーの番号付けとは関係ありません。
最後の点が判断そのものです。VPNエンドポイント自身のアドレスに対してどのプレフィックスが勝つかを言えないなら、あなたにはルーティングポリシーがなく、今日たまたま動いているトポロジーがあるだけです。
条件一:どのプレフィックスが勝つか
10.8.0.0/24への経路は、その内部のアドレスに対してデフォルト経路に勝ちます。メトリックにもアダプターの順序にも関係ありません。だからこそ特定の経路をインストールするVPNクライアントは、メトリックの小さい二つ目のアダプターが現れても動作し続けます。コストが考慮される前に具体性が勝つのです。使用中だと思うテーブルはip route showで、特定の宛先に対してカーネルが実際に返す答えはip route get 203.0.113.9で確認してください。
エンドポイント自身のアドレスが最も重要なテストです。VPNサーバーのアドレスが新しく追加したブリッジアダプター経由で解決されるなら、トンネルが確立しないか、確立しても自身の転送経路を失う可能性があります。トンネルインターフェースが答えだと決めつけず、そのアドレスを個別に問い合わせてください。
条件二:メトリックがすること、しないこと
その役割は多くの人が思うより狭いものです。メトリックは同じプレフィックスへの経路どうしの同着を解消しますが、より広い経路をより具体的な経路に勝たせることはできません。同着では小さい数値が優先され、OSによって数え方が逆になるため、LinuxとWindowsの間でコピーされた助言はしばしば自己矛盾します。
ゲストではip route showが各経路の横にメトリックを表示し、WindowsのGet-NetRouteはInterfaceMetricと経路メトリックを表示します。実際の優先度は単一のフィールドではなく合計になることがあるため、両方を読んでください。デフォルト経路が二つあるなら、それが発見です。ゲストには出口が二つあり、どちらが勝つかはハードウェア変更で変わりうる数値の関数です。
条件三:ゲストが実際に適用したもの
設定と適用済み状態は同じではありません。インターフェース名はどのプラットフォームでもハードウェア変更をまたいで安定せず、名前で一致していた設定が今は何にも適用されていない可能性があります。
意図した状態ではなく、適用済み状態を確認してください。ip -br linkは現在存在するインターフェースを表示し、NetworkManagerを使うホストではnmcli connection showがどのプロファイルがどのデバイスに結び付いているかを表示します。結び付けに失敗したプロファイルはインターフェースをアドレスなしで起動したままにし、これはルーティングの問題に見えて命名の問題です。復元したスナップショットはこれを悪化させます。ゲストの保存状態が、新しいハードウェアにはもう存在しないアダプターの識別子を参照していることがあるからです。
ラボのトポロジーを再現可能に保つ
意図した仮想ネットワーク接続をゲスト設定と一緒に保存し、役割からアダプターへの対応を一覧の位置から推測するのではなく書き留めてください。
通常は四つの役割を名付ければ十分です。プライベートリンク、管理、外部転送、トンネルです。それぞれをファイル上で特定のアダプターと特定のゲストインターフェースに対応させてください。
そのうえで、ハードウェア変更、再起動、スナップショット復元の後に実際のアプリケーションをテストし、そのテストにVPNエンドポイントへの経路を含めてください。ゲートウェイVMが唯一の出口であるべきなら、テストVMに意図しない二つ目のデフォルト経路がないことを確認してください。ブリッジアダプターが追加するのはまさに二つ目のデフォルト経路です。ハイパーバイザーのコンソールからではなくゲストからテストしてください。どちらのインターフェースがどれかについて両者が食い違うことがあるからです。
VirtualBoxのネットワークドキュメントはアダプターのモードとそれぞれが何に接続するかを説明しており、二つ目を追加する前に読む価値があるのはその部分です。各役割をどのアダプターが担うかを特定するラボでは、経路変更を説明できます。ハイパーバイザーの番号付けに頼るラボでは、あらゆる変更が実験になります。