二つのVPNと一つのリゾルバー:最後に書いた方が勝つ
両方のクライアントがDNSポリシーを導入でき、最後に書いた方が勝つ可能性があります。サフィックスをリゾルバーに対応づけ、ブートストラップ経路をトンネルの外に保ちます。
VPNクライアントが二つ接続されています。一つは仕事用、もう一つはラボ用ネットワークで、内部名が解決されるのは最後に接続したクライアントだけです。このパターンはどちらかのクライアントのバグに見えますが、実際には、どの名前を誰が所有するかの合意なしに同じリゾルバー設定を書き込む二つのプログラムによる予測可能な結果であることがほとんどです。
神話:最新のVPNがDNSを所有する
最も新しい接続が勝つという一般的な規則はありません。何が起こるかはプラットフォームの仕組みと、各クライアントがそれをどう書くかによって決まります。リゾルバーのファイルを置き換えるクライアントは一つの結果を生み、リンクごとにドメインを追加するクライアントは別の結果を生み、何もしないクライアントは以前の状態をそのまま残します。
したがって、観察される動作は二つの実装の性質であり、文書化された優先順位ではありません。起動順序だけから推論すると、ときには正しく、ときには再現が難しい形で間違えます。代わりに対応表を書き留めてください。二つのクライアントに分散した設計は設計ではありません。
名前空間をリゾルバーに対応づける
プライベートなサフィックスと、各ネットワークが必要とするリゾルバーを列挙し、公開名をどこへ送るかを決めます。その一覧が設計です。それがなければ、クライアントは偶然に判断しています。
リンクごとのDNSやルーティングドメインをサポートするプラットフォームなら、あるドメインを一方のリンクへ、別のドメインをもう一方へ送り、それ以外はすべて明示的な既定に従わせることで、分割を意図的に表現できます。同じファイルを上書きする二つの平たいスクリプトでは、それぞれが設定全体を所有していると信じているため、その設計を保てません。
Windowsでは、名前解決ポリシーの表によってサフィックスを特定のサーバーへ振り向けられ、VPNクライアントがそこに規則を導入することがあります。アダプターの一覧ではなくポリシーを確認してください、名前を解決しているのはアダプターの一覧ではないからです。
ブートストラップ経路を確保する
各クライアントは、そのエンドポイントが提供するサービスを使う前に、自分自身のエンドポイントを見つける必要があります。エンドポイントのホスト名がトンネル経由でしか解決できず、しかもトンネルが解決済みのホスト名を必要とするなら、接続タイムアウトとして現れる循環依存があります。両方のトンネルの外にブートストラップ経路を一本確保してください。それが接続を救う日まで、コストはかかりません。
各リゾルバーへの経路を見てください、そのために設定された名前だけではなく。もう一方のトンネル経由でしか届かないリゾルバーは、存在しないものと同じように振る舞い、症状はルーティングエラーではなくタイムアウトになります。
重複するアドレスはDNSの問題ではない
同じアドレス範囲を使う二つのプライベートネットワークは、DNSの順序では直せません。両方のトンネルが10.0.0.0/8を要求していると、正しく解決された名前でも、ホストが正しいトンネルへルーティングできないアドレスを指します。これには、別々の範囲、名前空間、変換といったアドレス層の解決が必要で、リゾルバーの設定を増やしても解決しません。これを早く決めておけば、決して機能しなかったDNS設定を延々と回り道せずに済みます。
名前解決を責める前に、両方のトンネルのアドレス割り当てを比較してください。両側が同じプレフィックスを押し出すと、ホストはそれに一本の経路しか保持せず、二番目のトンネル経由で解決された名前も、一番目のトンネルが持つアドレスに着地します。別々の範囲、ネットワークごとの名前空間、変換が修正策で、各クライアントが接続した後、ルーティングテーブルが意図した経路を示していることを確認してください。
実際のアプリケーションで証明する
自分の名前空間の中にしか存在しない二つのホストと、公開名を一つ選び、それぞれを所有すべきクライアント経由で解決します。期待したリゾルバーからの正しい答えは、アプリケーションがホストに到達することを証明しません、そのアドレスへの経路がまだ失敗する可能性があるからです。各検索の後に、ユーザーが実際に実行するプログラムから接続テストを行ってください。
独自の暗号化DNSオプションを持つクライアントは、いま確認したポリシーを迂回できるため、その設定もレビューの一部として確認してください。次に、ベンダーがサポートする順序で両方のクライアントを再接続し、検索を繰り返します。順序を変えたときに答えが入れ替わるなら、競合する書き手が設定の一部をまだ所有しています。何かを編集する前に、どのコンポーネントが規則を導入しているか(クライアント、OSプロファイル、管理エージェント)を突き止め、順序と所有者を記録して、次の人がそれを再発見しなくて済むようにします。