VPNクライアント2台、経路テーブル1枚:デフォルトルートを取るのはどちらか
VPNクライアント2台が直接ぶつかることはまれで、同じデフォルトルートを上書きし合います。選ばれた経路を確認し、片方がすべての宛先を主張しないようにします。
VPNクライアント二台が同じソケットを奪い合い、明らかな対処は片方をアンインストールすることだ、と思えてしまいます。実際には同じソケットに触れることはほとんどありません。接続のたびにOSの経路テーブルが書き換えられ、フルトンネルのプロファイルがデフォルトルートを主張します。最後に接続した側が勝つのが常で、だから症状がクライアント間を移動するように見えます。
衝突は経路テーブルの中にある
仮想アダプターとデフォルトルートの組み合わせが、フルトンネルによる通信の取り込みです。二台目が自分のデフォルトを登録すると、古い項目は置き換えられるかメトリックで下げられ、すべての宛先が新しいトンネルを通ります。一台目は接続したままで緑のアイコンも表示されるため、インターフェースは生きているのに経路だけが消えます。接続状態と経路状態が分かれていることが、この挙動を分かりにくくします。
クライアントは一枚の共有テーブルの編集者です。どの編集が最後だったかを知れば、ほぼすべての症状を説明できます。
現在の経路を所有しているトンネルを読む
接続済みと報告するクライアントを信じるのではなく、実際の判断を確認します。特定の宛先をどのインターフェースが運ぶのかをシステムに尋ねます。
ip route get 10.20.0.5
route print -4最初のコマンドは、ある宛先に対してどのインターフェースと送信元アドレスが使われるかを示すので、まさに知りたい問いに答えてくれます。経路のダンプはWindowsで競合するデフォルト項目とそのメトリックを表示するため、どちらが今勝っているかが分かります。各リモートネットワークのホストに対して検索を実行してください。ある宛先が正しくても、もう一方のネットワークに届かないことがあるからです。答えが誤ったトンネルを示すなら再接続しても解決せず、経路ポリシーを変える必要があります。
二台目がすべてを主張するのを止める
一方のクライアントがデフォルトルートを持ち、もう一方は自分のプレフィックスだけを運ぶべきです。OpenVPN クライアントはサーバーが押し付ける設定を断れます。
pull-filter ignore "redirect-gateway"
ip route get 10.30.4.10route-nopull は押し付けられたすべての経路を無視し、pull-filter ignore "redirect-gateway" はデフォルトルートの指示だけを捨てて、押し付けられた DNS やその他のオプションを残します。サーバー設定のどこまで残したいかで両者を選び、もう一方のネットワークが必要とする具体的なプレフィックスを追加します。DNS に注意してください。問い合わせを運ばないトンネルが押し付けたリゾルバーは何も返しません。各ネットワークの既知のホストを一つ試し、遠端が見る送信元アドレスを確認します。
重複するサブネットは回避できない
両方のネットワークが同じプレフィックスを公開すると、カーネルは一つの項目を二つの異なる場所のために保持し、選択を迫られます。ホスト経路は欠けた区別を発明できず、メトリックの調整でも補えません。片側を採番し直すか、管理者に遠隔側の範囲を変換してもらい、プレフィックスを変えます。クライアントを責める前に実際のサブネットを確認してください。家庭用ルーターの既定値 192.168.1.0/24 は、思われている以上に社内の範囲と衝突します。両方の範囲をチケットに記録し、次の変更で重複を作り直さないようにします。
二つの目的も分けてください。両方のネットワークに届くのは経路の問題であり、プライバシーのためにトンネルを連鎖させるのは経路上に運用者が増える別の設計です。片方でもう片方を解決しないでください。