自宅とオフィスのサブネットが VPN 越しに衝突する: 3 つの解決策
両端が 192.168.1.0/24 を使っていると、プッシュしたルートでは解決できません。どちらの衝突かを特定し、実際に適用できる解決策を選んでください。
クライアントは接続済みでトンネルも上がっていると報告しているのに、オフィスのファイルサーバーは台所のどこかから応答している。両端がたいてい 192.168.1.0/24 を使うのは、家庭用ルーターがその設定で出荷されるからで、両側に同時に存在する曖昧さをルートで解消することはできない。障害は壊れたトンネルや壊れたサーバーのように見えるが、どちらでもない。設定に触れる前に、どちらの衝突なのかを特定すること(種類によって対処が異なり、ルーティングの話はそのうちの一つだけだ)。
接続済みルートはプッシュしたものより優先される
接続済みルートが対象を覆っていれば、ホストはそのアドレスをローカルとみなす。自身のインターフェースが 192.168.1.20/24 のノートパソコンでは、アドレス 192.168.1.50 は隣人なので、パケットは自宅側のインターフェースから出てトンネルには決して届かない。
オフィスのプレフィックス向けのルートをプッシュしても、そのプレフィックスはすでに直接接続されたネットワークとして存在しているから何も変わらない。オペレーティングシステムは接続済みエントリから応答し続け、トンネルに何かを尋ねる前にそちらが参照される。順序は自分で確認できる(ip route get 192.168.1.50 はトンネルではなく自宅側のインターフェースを表示する)。遠端も同じ問題を映しており、オフィスのルーターもノートパソコンの自宅側の範囲が自分に属すると信じている。
明白な衝突の陰にある静かな衝突
すべてがルーティングの判断ではない。自宅の DHCP リースがオフィスのサーバーと同じアドレスに割り当てられると、クライアントは自分自身と通信し、トンネルは何も運ばない。
名前も同じように衝突する。同じコンピューター名を共有する二台は、すべてのパケットが正しくルーティングされていても名前ベースのツールを壊し、オフィスのアドレスを指す hosts のエントリは、ローカル側のマシンがすでにその名前を持っていると失敗する(ローカルでの解決が優先されるからだ)。ローカルのマシン名を変えるか、hosts を編集する代わりに完全修飾名を使うこと。
ハイパーバイザーが三つ目の事例を加える。ホスト専用アダプターはたいてい 192.168.56.0/24 上にあり、誰も使っていると覚えていない社内レンジと衝突しうる。
自分が所有する側の番号を変える
番号を変えれば曖昧さを避けるのではなく取り除けるが、家庭のオフィスではそれが自分が所有する側だ。どこにも現れないものを選び、ルーターに触れる前に固定アドレスを持つすべての機器を一覧にする。
10.0.0.0/8 と 172.16.0.0/12 が通常の候補だ。ファームウェアの既定値である 192.168.0.0/24 と 192.168.1.0/24 は、まさに残すべきものだ。
オフィスの番号変更はまず選択肢にならないし、自宅側の番号変更にはプリンターや電源を再接続する半日がかかる。それでも、社内のすべてのノートパソコンで繰り返す回避策よりは安い。
衝突しえないレンジを公開する
オフィスのレンジを残さなければならないなら、トンネル側を衝突しにくくする。丸ごと /24 を借りるのではなく クライアントプールを小さなプレフィックスとして切り出す ことで、広いルートではなく具体的なルートが得られる。
ゲートウェイが変換できるなら、オフィスのサブネットを別名レンジの下で公開し、クライアントの宛先が自分の LAN の内側に落ちないようにする。サイト間設計では各サイトに独自の別名を与えられ、同じ番号付けの二つの顧客を区別したままにできる。
変換は無料ではない。双方向に動作し、送信元アドレスと宛先の両方を覆う必要があり、アドレスを自分のペイロードに書き込むアプリケーションはそれを完全に無視する。だからこそ、番号変更が不可能でクライアント数が少ないときの答えになる。
変えられるものに応じて選ぶ
自宅にノートパソコンが一、二台: 自宅の LAN の番号を変える。番号変更できない管理されたオフィス: ゲートウェイでの別名変換。顧客サイト間で番号が重複する: サイトごとの別名を一度だけ計画する。名前ベースのツールだけが失敗する場合は、ルーティングの障害ではなく名前の衝突として扱う。
どれを選んでも、遠端にしか存在しないアドレスに対して試すこと。自分のルーターに疎通確認をしても、どのネットワークが応答したかは分からない。