10.8 大規模なリモートアクセス VPN サービスの構築

    10.4 一般的なリモートアクセス VPN の構築」 で解説した「リモートアクセス VPN システム」を、VPN Server を用いて実現する場合で、特に同時接続数が多くなることが予想される場合は、「SoftEther VPN Server Enterprise Edition」で利用可能な「クラスタリング機能」を使用して、複数台の VPN Server を用いて「負荷分散」を行うことができます。これにより、VPN Server 1 台ごとの負荷が減少し、スループットが向上します。また、「フォールトトレランス」も自動的に実現されます。

    10.8.1 VPN Server の処理能力の限界

    1 台の VPN Server は、理論上は「4,096 セッション」を同時に処理することが可能です。つまり、リモートアクセス VPN のための VPN サーバー用途として VPN Server を使用すると、約 4,000 個の VPN Client からの同時接続を受け付けることができます。

    しかしながら、現実的にはソフトウェアの制限だけではなく、ハードウェアの制限 (特にメモリ容量や CPU 速度などの限界値) が存在するため、実際には 1 台の VPN Server に 4,000 個の VPN セッションを接続して使用すると、通信速度が遅くなったり、VPN Server 側でメモリ不足が発生してスワップが生じることにより、通信がタイムアウトしたりするなどの現象が発生し、性能が低下します。

    このようなハードウェアが原因の性能低下は、ハードウェアの速度や容量が高速・大容量になることによって、将来的には解消されることが予想されますが、現時点では将来入手できるような極めて高速なハードウェアを入手することは不可能ですので、ソフトウェアの運用を工夫して負荷を軽減させる必要があります。

    大企業の IT 部門などにおいて、たとえば全社員を対象としたリモートアクセス VPN サービスのサーバーを設置するような場合は、事前に同時にどの程度の VPN Client が接続する可能性があるのかを見積もる必要があります。その結果、たとえば Pentium 4 2.8GHz、RAM 1Gbytes 程度の VPN サーバーマシンでは、現実的にはおおよそ 200 セッションから 500 セッションにつき 1 台の VPN Server を用意することをお勧めします (なお、厳密には実際のネットワークの負荷などによって必要な VPN Server の台数は異なります)。

    10.8.2 クラスタリングによるスケーラビリティの向上

    「SoftEther VPN Server Enterprise Edition」に組み込まれている「クラスタリング機能」を用いると、このよう大量の接続を処理したいリモートアクセス VPN サーバーを設置する際に、クラスタを構成することが可能です。

    また、クラスタのすべてのコンピュータを合計すると、4,096 接続セッションを超える大量の同時接続セッションを受け付けることも可能になります。

    ここでは、実際のリモートアクセス VPN サービスの構成例を元にして、クラスタ構築時の要点について解説します。「クラスタリング機能」に関する解説や具体的な操作方法などについては、「3.9 クラスタリング」 を参照してください。

    10.8.3 スタティック仮想 HUB の使用

    クラスタ内には 1 個以上の仮想 HUB を作成することができます。クラスタ環境での仮想 HUB には「スタティック仮想 HUB」と「ダイナミック仮想 HUB」の 2 種類があります。

    リモートアクセス VPN の用途に最適な仮想 HUB は、「スタティック仮想 HUB」です (「3.9.7 スタティック仮想 HUB」 を参照)。

    10.8.4 ネットワーク構成

    ここでは、例として以下のようなネットワーク構成について解説します。

    10-8-1.png

    図10-8-1 ネットワーク構成

    上記のネットワーク例では、既存の社内 LAN に、すでに IP ネットワークが構築されており、その社内 LAN に対してリモートから VPN Client が VPN 接続することを想定しています。

    この際、VPN Client の台数が多い場合は、複数台の VPN Server を設置してそれらの VPN Server 間でクラスタリングを行うことにより、大量の同時接続にも耐えることができます。

    上記の例では、3 台の VPN Server がクラスタとして動作しています。そして、VPN Client がクラスタに接続すると、クラスタコントローラによって接続数から計算される負荷が最も低い VPN Server に対して接続が割り当てられます。VPN Client は、どの VPN Server 上で動作しているスタティック仮想 HUB のインスタンスに対して接続したとしても、各 VPN Server の仮想 HUB は、同一のリモートアクセス先ネットワークセグメントにローカルブリッジ接続しているため、負荷分散アルゴリズムによって接続された先の VPN Server がどれであるかを意識せずにリモートアクセス VPN 通信を行うことができます。

    なお、ここでは 3 台の VPN Server に対して、合計 300 台の VPN Client が接続することを想定していますが、実際に設置するのに適した VPN Server の台数は、同時に接続する VPN Client の数だけではなく、VPN Server をインストールするコンピュータのハードウェアのスペックや、その VPN Server がインターネットに接続されているバックボーン回線の容量などによって変化します。必要な VPN Server の台数を決定するために推奨されている方法は、まず 2 台程度の少数の VPN Server でクラスタシステムを構築し、実際に試験運用を行い、その結果すべての VPN Client が同時に接続するとパフォーマンスに影響が出ることが分かった場合は、次第に VPN Server の台数を増加させていくことにより、最適な VPN Server の台数を求める方法です。この方法であれば、無駄なコストを掛けずに最小限の VPN Server を設置して、最も効率が良いのパフォーマンスを得ることができます。

    ここでの構成例では、リモートアクセス先の社内 LAN のレイヤ 2 セグメント数は 1 個であることを想定しています。実際のクラスタリング機能を必要とするような大企業では、社内ネットワークは複数のセグメントに分割されており、そのセグメント間で IP ルーティングが行われているものと予想されます。したがって、そのようなネットワークに対してリモートアクセス VPN サーバーを構築する場合は、それぞれのリモートアクセス先ネットワーク毎にスタティック仮想 HUB を設置し、またそれぞれの VPN Server で、それぞれの仮想 HUB と対応する物理的な Ethernet セグメントとの間でローカルブリッジ接続を行ってください。

    10.8.6 クラスタコントローラの設置と設定

    複数台の VPN Server でクラスタを組む場合は、まず最初に 1 台目の VPN Server を「クラスタコントローラ」として設定します。用意した複数台の VPN Server 用のサーバーコンピュータに性能の違いがある場合は、最もメモリ容量が大きく、ハードウェア的に動作が安定したものをクラスタコントローラにすることをお勧めします。

    VPN Server をクラスタコントローラにする方法に関しては、「3.9.2 クラスタコントローラ」 を参照してください。

    10.8.7 クラスタメンバサーバーの設置と設定

    2 台目以降の VPN Server は、1 台目のクラスタコントローラに対して接続する「クラスタメンバサーバー」として設定します。VPN Server をクラスタメンバサーバーにする方法については、「3.9.3 クラスタメンバサーバー」 を参照してください。

    10.8.8 スタティック仮想 HUB の作成

    すべての VPN Server の設置が完了したら、クラスタコントローラに対して管理接続し、リモートアクセス用の仮想 HUB を 1 つ作成します。仮想 HUB の種類は、「スタティック仮想 HUB」とします。なお、前述したように、もしリモートアクセス先のネットワークの種類が複数セグメントある場合は、その数だけスタティック仮想 HUB を作成してください。

    なお、VPN Server インストール後にデフォルトで作成されている "DEFAULT" という名前の仮想 HUB は 「ダイナミック仮想 HUB」ですのでご注意ください (この仮想 HUB をスタティック仮想 HUB に変更して使用することもできます)。

    10.8.9 既存の LAN と仮想 HUB のローカルブリッジ

    クラスタコントローラに対してスタティック仮想 HUB を作成すると、自動的にすべての VPN Server 上に、そのスタティック仮想 HUB のインスタンス (実体) が生成されます (「3.9.7 スタティック仮想 HUB」 を参照)。

    次に、各 VPN Server に対して直接管理接続し、その仮想 HUB とリモートアクセス先の物理的な LAN との間で、「ローカルブリッジ接続」を構成してください (ローカルブリッジ接続の構成方法については、「3.6 ローカルブリッジ」 を参照してください)。なお、前述したようにもしリモートアクセス先のネットワークの種類が複数セグメントある場合は、複数作成したスタティック仮想 HUB を対応する物理的な LAN との間で「ローカルブリッジ」してください (そのために複数枚の LAN カードが必要になります)。

    なお、ローカルブリッジ接続を行う際の注意点は 「10.4.7 ローカルブリッジの設定」 と同様です。

    すべての VPN Server でローカルブリッジの設定が完了したら、そのクラスタは、リモートアクセス VPN システムとしての設定が完了したことになります。この状態で VPN Client が、インターネット経由でクラスタコントローラに対して VPN 接続すると、クラスタコントローラは自動的に負荷が最も低い VPN Server に対してクライアントからの接続をリダイレクトし、その VPN Server がクライアントからの接続を処理します。この際、接続元の VPN Client は、接続先の VPN Server がクラスタであることを意識する必要がありません。

    また、もし動作中のクラスタメンバの一部が、ハードウェア故障やオペレーティングシステムのアップデートなどの理由で停止した場合は、その メンバで動作する VPN Server に接続されていた VPN セッションは自動的に別の VPN Server に割り当てられて、通信が継続して行われます。この際にも VPN Server の管理者は一切操作する必要がありません。

    10.8.10 クラスタ環境での VPN セッションの管理

    一度クラスタ環境を構築した後は、クラスタ内のクラスタメンバサーバーに対して管理接続する必要は基本的にはありません。ログファイルのダウンロード、ログ保存設定の書き込み、現在接続されているセッション一覧の表示、ユーザーの追加 / 削除 / 編集、使用する外部認証サーバーの設定、信頼する証明書の設定などのほぼすべての管理設定は、クラスタコントローラに対してのみ行うことで、自動的にクラスタコントローラが各 VPN Server に対して設定の更新を通知し、クラスタ全体の状態は常に整合性が保たれた状態になります。