通信プロトコルの性能・柔軟性およびセキュリティ

    PacketiX VPN プロトコルは TCP/IP をベースとした効率の良い VPN プロトコルです。ここでは、PacketiX VPN プロトコルに関する詳しい情報を解説します。

     

    通信速度

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

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

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

     

    柔軟性

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

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

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

     

    通信効率および安定性

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

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

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

    2-1-1.gif

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

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

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

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

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

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

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

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

     

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

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

    2-1-2.gif

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

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

    • PacketiX VPN Client で新しい接続設定を作成した場合のデフォルト設定は「1 本」です。
    • PacketiX VPN Server / PacketiX 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.gif

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

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

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

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

    半二重モードの使用

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

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

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

    2-1-4.gif

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

    本来の情報通信学における「半二重」とは、回線上において送信と受信を切り替えて行う必要があるような通信方式属性を示すものであり、厳密な意味で PacketiX VPN プロトコルにおける「半二重モード」の性質とは異なります。

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

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

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

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

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

    データ圧縮の使用

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

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

     

    暗号化通信セキュリティ

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

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

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

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

     

    SSL によるサーバー証明書の検証機能

    サーバー証明書の検証の有効化

    「2.3 サーバー認証」 で解説されているように、VPN 接続元コンピュータは VPN 接続先の VPN Server のサーバー証明書の正当性を検証することにより、接続先 VPN Server が正しいコンピュータであり、間に中間攻撃者などが存在しないことが数学的計算によって保証されます。サーバー証明書の検証処理が必要となるような高セキュリティ用途においては、サーバー証明書を検証するオプションを使用してください。

    [サーバー証明書を必ず検証する] チェックボックスを有効にすると、その接続設定を用いて VPN 接続を行う際にサーバーの SSL 証明書を検証するようになります。このチェックボックスはデフォルトで無効ですので、必要な場合に有効にしてください。

    [信頼する証明機関の証明書の管理] ボタンをクリックすると、VPN Client (カスケード接続にあたってはその仮想 HUB) が管理する、信頼する証明機関の証明書一覧ウインドウが表示され、ここで信頼する証明書を追加、削除または確認することができます。VPN 接続時に [サーバー証明書を必ず検証する] が有効になっている場合、VPN Client (または仮想 HUB) は接続先の VPN Server が提示した証明書が信頼する証明書一覧によって署名されているかどうかをチェックし、署名されている場合のみ接続を続行します。

    4-4-6.gif

    サーバー証明書検証オプション設定画面

    [固有証明書の登録] ボタンをクリックすると、その接続設定で接続する VPN Server のサーバー固有証明書を事前に関連付けておくことができます。これにより、接続先 VPN Server のサーバー証明書をすでに持っている場合はその証明書を登録しておくことによってサーバー認証を行うことができます。接続先 VPN Server の規模が小さい場合は、この方法でサーバー認証を行うことができます。

    証明書検証が有効な状態で接続した際に接続先 VPN Server が信頼できないサーバー証明書を提示した場合に表示される画面について (VPN Client の場合のみ)

    [サーバー証明書を必ず検証する] チェックボックスが有効になっている場合に VPN Server に接続した場合で、接続先 VPN Server が提示した証明書が信頼できないと判定された場合は、[セキュリティの警告] 画面が表示されます。この画面では、VPN Server が提示した証明書の詳細情報を表示することができます。この表示内容を見て、接続先 VPN Server が信頼できるかどうかを判断してください。たとえば、ダイジェスト値などを見て、電話などの比較的安全な手段で VPN Server の管理者にそのダイジェスト値が正しいかどうかをチェックしてもらうなどの方法で、ある程度の安全性を確保することができます。ここで [接続をキャンセル] ボタンをクリックすると、VPN Server への接続処理はキャンセルされます。

    4-4-7.gif

    サーバー証明書が信頼できない場合の警告画面

    [接続を続ける] ボタンをクリックすると、この証明書を信頼するかどうかをユーザーが選択するメッセージボックスが表示されます。ここで [はい] をクリックすると、この証明書を接続設定における [固有証明書] として登録し、次回から VPN Server が提示する証明書に変化が無い限り警告は表示されなくなります。[いいえ] をクリックすると登録されません。

    4-4-8.gif

    サーバー証明書を次回から信頼するかどうか選択する画面

    もし、接続設定に登録されている固有証明書と VPN Server が提示した証明書が異なる場合は、下記のような画面が表示されすぐに接続を切断することが推奨されます。

    4-4-9.gif

    サーバー証明書が前回接続時と異なる場合の警告画面

    ここで説明したような各種警告画面は、PacketiX VPN Client でのみ表示されます。PacketiX VPN Server および PacketiX VPN Bridge でカスケード接続を行う場合はこれらの警告画面は表示されず、自動的に接続エラーとなります。