VPN サーバーと言えば、暗号化されたトンネルの終端、ネットワーク間のパケット転送、そして必要に応じたアドレスの書き換えという三つの機能がひとまとめにされます。Windows では、一つのマシンがすべてを担う場合でも、これらはスタックの別々の場所にあります。それぞれに入力と固有の故障の仕方があり、それぞれを別の製品に任せられます。紙の上で分けておくことが、小さな配備を理解可能に保つ最も安い方法です。

読みやすい設計は、機械を役割として描写するのではなく、各フローの責任者を名指しします。

終端する、転送する、変換する

RRAS は Windows ネイティブのケースでトンネルを扱います。ユーザーを認証し、プールからアドレスを割り当て、どの宛先を許可するかを決めます。別の VPN 製品が待ち受けと仮想アダプターを所有し、Windows には復号されたパケットの転送だけを任せることもできます。Microsoft の Remote Access ドキュメントは VPN、サイト間、ルーティングの各役割を分けており、ルーティング役割をインストールしても二つ目の VPN アイデンティティは作られません。別の VPN アプリケーションを追加しても、そのアダプターが既存のゲートウェイ機能すべてに渡されるわけではありません。

変換は三つ目で、最も任意性の高い仕事です。転送の後に位置し、遠隔ネットワークが見る送信元アドレスを変えます。必要かどうかは、宛先ネットワークが送信元として何を受け入れるかで決まり、その機械が VPN ゲートウェイと呼ばれるかどうかでは決まりません。

アダプターとプールの所有者は誰か

複数の製品がホストを共有するとき、四つのものにそれぞれ単一の所有者が必要です。待ち受けポート、アダプターの寿命、クライアントのアドレスプール、そしてルートです。厄介なのはアダプターで、VPN サービスが動的に作成し、切断時に破棄することがあります。そのインターフェースを永久に名前の付いた NIC として扱い、その名前に対して規則を書く方法は、次の再接続までしかもちません。インターフェース名を決め打ちするのではなく、製品がサポートする統合ポイントを使ってください。

アドレスプールは二つ目の衝突です。重複する範囲を配る二つの製品は、正しく見えて何も届けないルーティングを生みます。プールはルートと同じ文書に置き、片方の変更がもう片方に対して見えるようにしてください。

送信元を保つか、書き換えるか

クライアントの送信元アドレスを保つと、ユーザーごとの可視性が保たれます。ログ、割り当て、ファイアウォール規則が、あるユーザーを別のユーザーと区別できます。代償は、宛先 LAN がゲートウェイへの戻りルートを必要とし、誰かがそれを保守しなければならないことです。NAT で送信元を書き換えると、その要件が消え、可視性も一緒に消えます。意図して選び、書き換えが何の情報を隠すのかを書き留めてください。

プライベートネットワークへのアクセス、インターネットへの出口、ゲートウェイ自体で終わる接続は、三つの異なる経路です。すべてが同じ扱いを必要とするわけではありません。

フローを一文で説明する

一文で設計を説明できるべきです。このサービスがどのクライアントを受け入れ、その転送ポリシーがどのリソースを認め、戻り経路がどうフローを完成させるのか。その文が真であるために二つ目の NAT 層を必要とするなら、それは通常、前の部品が決まっていなかった兆しです。ホストは共有の故障境界であり信頼境界でもあるので、ルーティングの変更はユーザーアクセスと管理の両方に影響しえます。後者のために独立した復旧経路を保ってください。

構成の隣に役割の目録を保ってください。どの製品が終端し、どれが転送し、どれが変換し、それぞれを誰が変更できるのか。その一覧が、次の変更をレビュー可能にします。

その文が不明瞭になったとき、もう一つの変換層を足してもほとんど明確になりません。一つを外す方が、たいていは明確になります。

関連記事