前回は、データを盗聴や改ざんから保護するためのVPNで利用されるプロトコルである、IPSec、PPTP、L2TPの仕組みについて解説した。今回は、前回に引き続き、SSL-VPN、SoftEther、MPLSの仕組みについて解説する。
クライアントレスで手軽にVPNを実現する「SSL-VPN」
SSL-VPNは、セッション層の暗号プロトコルであるSSL(Secure Sockets Layer)を使用してVPNを実現する仕組みであり、リモートアクセスVPN環境で利用する。SSL-VPNの方式は標準化されたものではないため、製品によってさまざまである。しかし、多くの場合、次の「プロトコル変換方式」、「ポートフォワーディング方式」、「SOCKS over SSL方式」のいずれかである場合が多い。
・プロトコル変換方式
プロトコル変換方式は、ウェブブラウザからSSL-VPNサーバに対して、HTTPS(HTTP over SSL)を使ってアクセスする。ウェブ画面でのユーザー認証をパスすると、そのユーザーが利用できるリソースへのリンクが画面に表示される。ユーザーがリンクをクリックすると、SSL-VPNサーバは該当する内部サーバに対して代理でアクセスする。内部サーバにアクセスするプロトコルがFTPやWindowsファイル共有(SMB/CIFS)などウェブ以外のプロトコルであれば、その結果をHTTPにプロトコル変換してクライアントに転送する。以上の手続きによって、HTTPに変換できる一部のアプリケーションのみではあるが、HTTPSを使って企業ネットワークに安全にアクセスできる。
・ポートフォワーディング方式
ポートフォワーディング方式は、最初にSSL-VPNサーバから、HTTP以外のプロトコルにSSLを適用するためのクライアントソフト(ポートフォワーディングソフト)をJavaアプレットやActiveXのような形でダウンロードする。そして、SSL-VPN経由でアクセスするアプリケーションのアクセス先の設定を、ローカルホスト上のポートフォワーディングソフトに送信するように設定し、アプリケーションからのアクセスを受信できるようにする。ポートフォワーディングソフトは、そのアプリケーションプロトコルにSSLを適用し、SSL-VPNサーバに送信する。SSL-VPNサーバでは、受信したアプリケーションプロトコルデータをあらかじめ設定されたサーバに対して転送する。
・SOCKS over SSL方式
SOCKS over SSL方式は、最初にSSL-VPNサーバにアクセスし、クライアントソフトをJavaアプレットやActiveXとしてダウンロードする。内部サーバにアクセスしようとすると、クライアントソフトがそのアクセスをインターセプトし、図1のようにSOCKSでカプセル化した後、SSLを適用する(SOCKS over SSL)。オリジナルのIPヘッダやトランスポートヘッダ(TCP/UDPヘッダ)は削除されてしまうが、オリジナルのIPアドレスやポート番号を判別するための情報はSOCKSヘッダに格納されるため、パケットを受信したSSL-VPNサーバは転送先の内部サーバを判断することが可能となる。
以上、3つの方式を解説したが、SSL-VPNの最大の強みは、クライアントに特別なソフトを導入する必要がないことである。このため、インターネットカフェのような公衆端末からも利用できる。また、以前は利用できるアプリケーションが限られていたが、最近は技術が進歩し、その制限もなくなりつつある。
レイヤ2レベルでVPNを実現する「SoftEther」
SoftEtherは、筑波大学の学生である登大遊氏が開発した、リモートアクセスVPN環境で利用されるVPNソフトである。SoftEtherは、いわゆる「イーサ over TCP/IP」という方式によってVPNを実現している。これは、イーサネットフレーム自体をデータとしてTCPを使って配送する方式であり、相手拠点にイーサヘッダも転送されるため、あたかも相手拠点のローカルネットワークに接続されているように使える。
SoftEtherは「イーサ over TCP/IP」を実現するため、クライアント側に仮想LANカードをインストールする。OSのTCP/IPスタックがイーサフレームを仮想LANカードに渡すと、図2のように、イーサフレーム全体を暗号化し、セッション番号などが書かれた独自ヘッダを付与する。そして、それをTCPのデータとして再度OSのTCP/IPスタックに渡し、インターネット上に送信する。
SoftEtherでは、使用するTCPのポート番号を自由に設定することができる。例えば、HTTPSと同じ443/TCPにすることも可能で、このようにすると、企業のセキュリティ設定に変更を加えることなく、ファイアウォールやプロキシを超えて通信できるようになる。企業ネットワークのVPNとしてはまだ実用されるケースはは少ないが、三菱マテリアルが商用版を出荷しているため、今後はリモートアクセスVPNの一方式として検討される可能性もある。
閉域網でVPNを実現するMPLS
MPLS(Multi Protocol Label Switching)は本来、ルータの処理を高速化するために開発された技術である。MPLSはパケットに付与されたMPLSラベルによって転送先を判断する仕組みであり、IPヘッダに含まれるIPアドレスは調べない。このため、MPLSを使う環境下ではプライベートアドレスをIPアドレスにすることができ、MPLSをカプセル化プロトコルとして利用したVPNを実現することができる。しかし、これまでに紹介した方式と異なり、パケットを配送する網では、各ルータがMPLSラベルによってスイッチング処理を行う必要があるため、インターネットを利用することはできない。ISP(プロバイダ)が保有するMPLS網を利用したIP-VPNサービスを利用することになる。
ISPのMPLS網は、エッジ(境界)のルータにおいて、図3のようにユーザーの拠点から送信されてきたIPヘッダに2つのシムヘッダを付与する。このシムヘッダにはMPLSラベルが記述されている。外側のシムヘッダには出口となるエッジ・ルータまでの転送経路を示すラベルが記述されている。MPLS網はこのラベルを見て転送先を判断する。2つ目のシムヘッダにはユーザーを示すラベルが記述されている。MPLSではデータの暗号化は実施しないが、スイッチング処理によって他のユーザーのネットワークにパケットが転送されないようにしているため、機密性を確保できる。
以上、2回に分けて、VPNを実現するプロトコルについて解説してきた。VPNを実現するプロトコルには様々なものがあるが、それぞれの仕組みの違いによって、VPNとしての機能や管理の容易さなどの違いが出てくる。特徴を良く理解し、最適な方式を検討して欲しい。