2.1 VPN 通信プロトコル - SoftEther VPN プロジェクト

2.1 VPN 通信プロトコル

    SoftEther VPN では、VPN 通信に使用されるプロトコルとして、セキュリティ業界標準の「SSL」(Secure Sockey Layer) のバージョン 3 を使用しています。SoftEther VPN では SSL による VPN 通信の高速化およびセキュリティの向上のため、いくつかの技術的な工夫を行っています。

    ここでは、SoftEther VPN プロトコルに関する詳しい情報を解説します。なお、SoftEther VPN プロトコルに関する情報については、「1.6 VPN 通信の詳細」 もお読みください。

    2.1.1 通信速度

    SoftEther VPN は、仮想 HUB において仮想の Ethernet フレームを交換し、VPN Client / VPN Server / VPN Bridge 間で VPN 通信をすることによって成り立つ VPN システムです。「SoftEther VPN プロトコル」は TCP/IP をベースとしたプロトコルであり、仮想の Ethernet フレームをカプセル化し、暗号化した上でそれを物理的な IP ネットワークに流す役割を担っています。

    通常、TCP/IP をベースとしたプロトコルは、通信効率がそれほど高くないという欠点があります。TCP/IP はプロトコル自体で再送制御やフロー制御を行うため、実際に使用可能なネットワーク帯域に対して、ごく一部の帯域しか使用できない場合もあります。

    ソフトイーサ株式会社が SoftEther VPN プロトコルを開発するにあたっては、VPN 通信を行うために確立する TCP/IP コネクションを巧みに制御し最適化することによって、最大限の通信の効率化および最適化を行いました。その結果、SoftEther VPN を十分な帯域幅のあるネットワークで使用した場合は、VPN 通信を使用するユーザーにとってそれが VPN を経由して行われている通信であるのか、または物理的な IP ネットワーク上を直接流れている通信であるのかが、体感速度としてそれほど差異がない程の高速化と低遅延化を実現することができました。

    2.1.2 柔軟性

    SoftEther VPN プロトコルは TCP/IP をベースとしており、すべてのデータは TCP/IP コネクションに沿って流れます。したがって、SoftEther VPN によって VPN を構築する場合は TCP/IP をサポートしているさまざまなネットワーク機器やサーバーを経由して VPN を構築することが可能です。

    特に、旧来の PPTP や L2TP / IPSec などの代表的であった VPN プロトコルが苦手としていた、「プロキシサーバー」や「NAT」および「ファイアウォール」を通過して VPN を構築するということも簡単に実現することができます。

    実際にプロキシサーバーやその他のファイアウォールを経由して、安定した VPN 通信を行う方法については、「4.4 VPN Server への接続方法」 などをお読みください。

    2.1.3 通信効率および安定性

    SoftEther VPN プロトコルの高度な通信設定をユーザーが適切に行うことにより、下記のようなネットワークにおける「通信効率」(スループットや応答性) および「安定性」を向上させることができます。

    • 帯域幅が広いにもかかわらず、遅延時間が大きいネットワーク。
    • VPN 通信経路上にプロキシサーバー、NAT またはファイアウォールなどがあり、そこで遅延が発生してしまうようなネットワーク。
    • VPN 通信経路上に帯域制御装置 (QoS 装置) などがあり、TCP/IP コネクション 1 本ずつの最大の通信速度を意図的に帯域制御しているようなネットワーク。
    • VPN 通信経路上にプロキシサーバー、NAT またはファイアウォールなどがあり、それらのネットワークゲートウェイ機器やサーバーなどが通過する TCP/IP プロトコルについて特殊な処理を行ったり、TCP/IP コネクションごとの有効期限が設定されていて、有効期限を過ぎたコネクションを切断するようになっていたり、HTTPS プロトコルなどのパケットの送受信間隔や回数などを厳密に記録して HTTP プロトコルのデフォルトの基準に違反した場合にその TCP/IP コネクションを強制的に切断したりするような特殊な処理が行われるネットワーク。

    VPN 通信元のコンピュータは、SoftEther VPN Server との間の 1 つの VPN セッションに対して、複数本の TCP/IP コネクションを同時に確立し、それぞれのコネクションを並列的に使用して通信データを「負荷分散」させることによって、SoftEther VPN プロトコルにおける VPN 通信データをより高速かつ低遅延で送受信することができるようになっています。

    2-1-1.png

    複数の TCP/IP コネクションによる VPN セッションの通信

    VPN 通信を接続するコンピュータは、次のようなパラメータを指定して VPN 接続を開始することができます。

    VPN 接続に失敗したり VPN 通信中に接続が切断された場合の再接続設定

    SoftEther VPN Server に対する VPN 接続が、ネットワーク障害や接続先の VPN Server が一時的に停止している場合などの原因で接続に失敗したり、通信中に切断されたりした場合は、その VPN Server に対して接続が成功するまで再接続を試みます。再接続する最大の回数および再接続の間隔を指定することもできます (再接続間隔を 5 秒未満に設定することはできません)。

    デフォルトでは再接続間隔は「15 秒」、再接続回数は「無限」になっており、ネットワークが機能しており接続先の VPN Server が動作している場合は、常時接続状態にすることができます。

    「カスケード接続」においては、常に接続先の SoftEther VPN Server に対して接続を試み、接続が完了すると、できる限り接続状態を維持しようとする機能が働くため、再接続間隔は「10 秒」、再接続回数は「無限」で固定されています。この値はユーザーが変更することはできません。

    VPN セッションの「種類」と「再接続間隔」および「再接続回数」の設定可能値およびデフォルト値は下記のとおりです。

    セッションの種類 再接続間隔 再接続回数
    VPN Client によって開始される通常の VPN セッション
    5 秒間以上
    (デフォルトは 15 秒間)
    0 回 ~ 無限
    (デフォルトは無限)
    VPN Server / VPN Bridge によって開始されるカスケード接続の VPN セッション
    10 秒間
    (固定)
    無限
    (固定)

    VPN 通信に使用する TCP/IP のコネクションの本数

    SoftEther VPN Server との間の VPN セッション中に複数本の TCP/IP コネクションを同時に確立し、データ転送にそれぞれの TCP/IP コネクションを並列的に利用することによって、スループットを向上させ遅延を短くすることができます。また、確立している TCP/IP コネクションのうち一部が切断された場合や、一定時間通信ができない場合は、それによって不足する TCP/IP コネクション分について、指定した本数までの TCP/IP コネクションを新しく作成して VPN セッションに追加し、可能な限り指定した本数の TCP/IP コネクションでの通信を維持しようとします。

    2-1-2.png

    複数本 TCP/IP コネクション使用時のコネクションが切断された場合の自動再接続処理

    TCP/IP コネクションの本数は、「1 本以上 32 本以下」で、ユーザーが指定することができます。

    • SoftEther VPN Client」で、新しい接続設定を作成した場合のデフォルト設定は「1 本」です。
    • 「SoftEther VPN Server / SoftEther VPN Bridge」で、新しい「カスケード接続」を作成した場合のデフォルト設定は「8 本」です。

    TCP/IP コネクション本数は、単純に増加させれば VPN 通信のスループットが向上するというものではありません。実際に使用する物理的な IP ネットワークで VPN Server との間の通信経路における帯域幅が大きい場合は本数を増やすとスループットが向上し、また通信が安定化する場合が多いようです。逆に、電話回線、ISDN および PHS などの帯域幅が数十~数百 kbps しかないような低速回線の場合は、各 TCP/IP コネクションの制御データや Keep-Alive メッセージのために帯域が消費されるため、本数が少ないほうが安定し通信速度も向上する場合が多いようです。

    さらに、VPN セッション内で使用する通信プロトコルの種類やデータ量によっても、最適な TCP/IP コネクション本数は変化します。実際に VPN を構築した後で、「スループット測定ツール」を使用しながら適切な設定を選択することをお勧めします。スループット測定ツールについての詳細は「4.8 実効スループットの測定」 をお読みください。

    各 TCP/IP コネクションの確立間隔

    2 本以上の TCP/IP コネクションを確立して VPN 通信を行う場合において、2 本目以降の TCP/IP コネクションを、1 つ前の TCP/IP コネクションが確立された後、何秒後に確立するかどうかを指定することができます。デフォルト値は「1 秒」であり、1 秒以上の値を指定することができます。

    この値は通常は 1 秒のままで問題ありませんが、多くの本数 (32 本など) の TCP/IP コネクションを確立しようとする場合で連続的に TCP/IP 接続を行うと、物理的な IP ネットワークの経路上のファイアウォールや IDS などの装置が「DoS アタック」や「攻撃」などと誤って見なしてしまい、その TCP/IP コネクションを切断してしまって正しく VPN コネクションの確立が行えないような場合に、接続間隔を長くして誤検知を回避することができます。

    2-1-3.png

    各 TCP/IP コネクションの確立間隔

    各 TCP/IP コネクションの寿命

    2 本以上の TCP/IP コネクションを確立して VPN 通信を行う場合において、それぞれの TCP/IP コネクションが接続元コンピュータと VPN Server との間での接続を確立した後、指定された秒数が経過するとその TCP/IP コネクションを切断するとともに、それによって不足した分の TCP/IP コネクションを新たに確立し直すようにすることができます。デフォルトではこの機能は「使用しない」ようになっています。

    この機能は、物理的な IP ネットワークの経路上のファイアウォールや IDS などの装置やプロキシサーバーなどのネットワークゲートウェイ機器またはサーバーの設定で、1 本の TCP/IP コネクションが長時間接続しているとその接続を切断してしまったり、「DoS アタック」や「攻撃」などと誤って見なしてしまうような安定性の低いネットワークにおいて、SoftEther VPN プロトコルによる VPN 通信を安定化させるために使用します。

    半二重モードの使用

    半二重モードは 2 本以上の TCP/IP コネクションを確立して VPN 通信を行う場合において、VPN 接続元と SoftEther VPN サーバーとの間の各 TCP/IP コネクションについて、約半数の TCP/IP コネクションを「送信方向専用」、残りの約半分の TCP/IP コネクションを「受信方向専用」に設定する機能です。この機能を有効にすると、SoftEther VPN プロトコルの一部として確立された TCP/IP コネクションそれぞれを流れるデータの伝送方向は、「VPN Server からクライアントへの方向(ダウンロード)」と「クライアントから VPN サーバーの方向 (アップロード)」のどちらか一方のみに限定されます。すべての TCP/IP コネクションを総合すると、双方向のデータの同時通信 (全二重通信) が可能ですが、それぞれの TCP/IP コネクションは片方向のデータ転送しか担わないため「半二重モード」という名称が付いています。

    この機能は、物理的な IP ネットワークの経路上のファイアウォールや、IDS などの装置やプロキシサーバーなどのネットワークゲートウェイ機器またはサーバーが特殊な方法で TCP/IP プロトコルを検査し、特に「HTTPS などの SSL コネクションで双方向にデータが流れているものを検出して警告を発生したり強制的に切断したりしてしまう機能」などによって、SoftEther VPN プロトコルによる正当な通信を「攻撃」や「バックドアソフトウェアなどによる通信」であると誤って見なしてしまうような安定性の低いネットワークにおいて、SoftEther VPN プロトコルによる VPN 通信を安定化させるために使用します。

    半二重モードを使用することにより、そのための制御処理のために若干のソフトウェア処理が発生し、CPU 時間を消費するため通信速度効率は低下しますが、それによるスループットの低下やユーザーが受ける影響は極めて小さく、通常は問題になりません。

    2-1-4.png

    半二重モードでの VPN セッションの通信

    暗号化オプションの無効化

    SoftEther VPN プロトコルは、デフォルトではすべての通信内容を SSL によって暗号化し電子署名を付加しますが、下記のような場合には暗号化や電子署名を生成しないようにすることも可能です。

    • VPN 通信を行う物理的な IP ネットワークが物理的に安全な LAN などに限定され、悪意のある第三者が物理的な回線上のパケットを盗聴したり改ざんしたりすることが物理的に困難な場合。
    • VPN 通信を通信事業者などが提供する専用線、フレームリレーまたは広域イーサネットなどの信頼性が高く他のユーザーによる盗聴が困難なネットワークの上で行い、かつそのサービスを提供する通信事業者が十分信頼できる場合。
    • SoftEther VPN プロトコルを別のソフトウェア (SSH ポート転送ツールなど) と共に組み合わせることによって、さらに下のレイヤにおいて暗号化を行う場合。
    • VPN 接続元のソフトウェアと、PacketX VPN Server との間が同一のコンピュータで動作している場合 (localhost に対して接続する場合)。特に同一の VPN Server の仮想 HUB 間における「カスケード接続」などを行う場合はこのような接続形態になります。

    暗号化や電子署名を生成しないようにすることによって、SoftEther VPN プロトコルが物理的な IP ネットワーク上を流れるデータは純粋に仮想 Ethernet フレームにカプセル化のためのヘッダを付け足しただけになり、それに対する暗号化も電子署名による保護も施行されません。したがって、暗号化と電子署名の計算のための CPU 時間を、より多くの仮想 Ethernet フレームのカプセル化や通信のために使用することができ、通信スループットが向上します。

    なお、暗号化を無効にしている場合であっても、ユーザー認証などの重要な処理は SSL で暗号化されます。

    データ圧縮の使用

    SoftEther VPN プロトコルは、内部で送受信される仮想 Ethernet フレームをすべて圧縮して伝送することが可能です。データ圧縮アルゴリズムとしては、「Jean-loup Gailly」および「Mark Adler」が開発した「deflate」アルゴリズムが使用されており、圧縮パラメータとしては処理速度が最も高速になるように指定しています。

    VPN 通信においてデータ圧縮を利用することにより、通信量を最大 80% 程度削減することができます (使用するプロトコルによります)。ただし、圧縮を行うと、クライアントおよびサーバーの両方で CPU 負荷が高くなります。それぞれのハードウェア性能にもよりますが、おおよそ回線速度が 10 Mbps 程度を超える場合はデータ圧縮を行わないほうが、通信速度が向上する場合が多いようです。

    2.1.4 暗号化通信セキュリティ

    SoftEther VPN プロトコルでは、SSL を用いて暗号化と電子署名を実現しています。使用する暗号化および電子署名アルゴリズムとしては、下記のものが実装されています。

    • RC4-MD5
    • RC4-SHA
    • AES128-SHA
    • AES256-SHA
    • DES-CBC-SHA
    • DES-CBC3-SHA

    なお、暗号化に使用するアルゴリズムは、SoftEther VPN Server の管理者が指定します (接続元のコンピュータのユーザーが指定することはできません)。上記のうちいずれかの暗号化アルゴリズムを選択することができますが、デフォルトでは「RC4-MD5」が選択されています。

    RC4-MD5 は最も高速かつ、ある程度の安全性を持ったアルゴリズムです。特に理由がない場合は、別のアルゴリズムを選択する必要はありません。ただし、より暗号化に積極的な管理者や、規則上 AES など特定のアルゴリズムしか使用できないような利用環境では、AES などのより安全な暗号化アルゴリズムを使用することもできるようになっています。

    2.1.5 VoIP / QoS への対応

    SoftEther VPN プロトコルは、VPN 通信において QoS に対応しており、VoIP パケットなどの優先順位の高いパケットのために優先的に帯域確保および伝送処理を行います。詳しくは 「1.9 VoIP / QoS 対応機能」 を参照してください。