インターネットVPNの大まかな概念はお分かりいただけたことと思う。次は、VPNの中心をなす仮想トンネルのしくみと、これを実現するプロトコルについて説明しよう。
■カプセル化とトンネリング
VPNでは、通信相手の認証(VPNトンネルを作成する双方が、お互いに正しい相手であることを保証する機能)が必須となるが、インターネットで使われるIP(Internet Protocol)プロトコルは通信相手を認証する機能を持っていない。ユーザー認証の機能を備え、2点間をポイント・ツー・ポイント接続するプロトコルにはPPP(Point to Point Protocol)がある。ところが、PPPはシリアル回線のように、送信側と受信側が1対1で接続されているような回線でしか利用できない。そこで、PPPのフレームをIPのデータグラムに埋め込んで送信し、受信側で元のPPPフレームに戻す(元のPPPフレームを取り出す)仕組みが考案された。このように、ある通信プロトコルをほかの通信プロトコルのパケットでくるんで送ることを「カプセル化」という。
PPPのフレームをIPでカプセル化することで、IPネットワークであるインターネットを介したPPP接続が可能になる。これにより、PPPの持つ、ユーザー認証機能や、使用するプロトコル/アドレス/圧縮やエラー訂正の方法などをネゴシエートする機能を利用する2点間接続が実現される。このように、ある通信プロトコルの環境の上に、異なる通信プロトコルを透過的に流すことを「トンネリング」という。2つの地点間を直接結ぶ(仮想的な)トンネルを作るような技術なので、こう呼ばれている。インターネットVPNでは、VPN装置によってパケットをカプセル化して仮想トンネルを構築する。
もちろん、カプセル化の手順を定めておかないと、正しく通信できない。「PPPをカプセル化」して仮想トンネルを構築するために、PPTP、L2F、L2TPといったプロトコルが作られ、利用されている。それぞれの概要は後述するが、これらのように、データリンク層をトンネリングするプロトコルを「レイヤ2トンネリング・プロトコル」という。また、ネットワーク層をトンネリングする「レイヤ3トンネリング・プロトコル」としてIPSecがある。IPSecは、IPプロトコルを拡張して、認証、暗号化、改ざん検出機能を持たせたプロトコルである。Windows 2000/XPでは、PPTP、L2TP、IPSecが標準でサポートされている。以下では、これらのプロトコルについて詳しく見ていくことにする。
それでは、データリンク層をトンネリングする各プロトコルについて簡単に説明しよう。
PPTPは、Microsoft、Ascend Communications(現Lucent Technologies)、US.Robotics(現3Com)などが共同で開発・策定したレイヤ2トンネリング・プロトコルであり、RFC 2637で仕様が公開されている(RFCはインターネット技術に関する仕様などをまとめた技術文書)。PPTPは、発信元のPAC(PPTP Access Concentrator)と接続を受けるPNS(PPTP Network Server)という2つのVPN装置の間で仮想トンネルを構築する。PACとなるVPN機器をインターネット・プロバイダ内に設置し、そこからPNSまで仮想トンネルを構築する運用方法もあるが、Windows 98/Me/NT 4.0/2000/XPはPACとなるための機能を標準で持っているため、Windowsマシン自身がPACとなる(PPTPの呼び出し元となる)使い方が一般的だ。また、Windows NT Server 4.0/Windows 2000 Server/Windows Server 2003はPNSになる機能(PPTPの着信を受け付ける)を備えている。このため、Windows環境ではPPTPで手軽にVPNを構築できる。
リモートのWindowsマシンをPACとした場合、PPTPによる通信は次のような手順で行われる。
PPTPを使うとIPデータグラムは次のような形で送信先のマシンに到達する。元となる送信データグラム(IPヘッダ+データ)に対して、PPPヘッダ(ポイント・ツー・ポイントでの通信用)とGREヘッダ(トンネル通信用)を付加し、それをさらにIPパケットでカプセル化して送信している。
本来、PPTPは暗号化の機能を持たない。そのため、暗号化が必要な場合は、PPTP以外のプロトコルで暗号化を行う必要がある。WindowsのPPTPサポートでは、マイクロソフトによるPPPの拡張として、MS-CHAP-V2(Microsoft PPP CHAP Extensions, Version 2)とMPPE(Microsoft Point-To-Point Encryption)プロトコルを組み合わせて使い、ユーザー認証、暗号鍵交換、データの暗号化を実装している。MPPEは、鍵長が40bit、56bitまたは128bitのRC4を暗号化に用いている。また、WindowsのPPTPは、IPプロトコル以外にNetWareで使われるIPXプロトコルのトンネリングもサポートする。
L2Fは、Cisco SystemsやNorthern Telecom(現Nortel Networks)などによって開発されたレイヤ2トンネリング・プロトコルである。RFC 2341で仕様が公開されているが、現在では次に取り上げるL2TP(Layer 2 Tunneling Protocol)に統合されている。PPTPでは、制御コネクションにTCPプロトコルを、トンネルに拡張GREプロトコルをそれぞれ使用するのに対し、L2Fでは制御チャンネルとトンネルの両方にUDP(ポート1701)を使用する。
L2TPは、PPTPとL2Fを統合してIETF(Internet Engineering Task Force)による標準化が進められているレイヤ2トンネリング・プロトコルであり、RFC 2661として仕様が公開されている。PPTPのトンネル制御部分とL2Fのフレーム構造を組み合わせたようなプロトコルで、PPTP、L2Fそれぞれの持つ機能を内包するように作られている。L2TPは、PPTPのPACとPNSに相当するLAC(L2TP Access Concentrator)とLNS(L2TP Network Server)の間に仮想トンネルを構築する。制御チャンネルとトンネルは、L2Fと同様にUDP(ポート1701)を使う。
PPTPは、IPネットワーク上でのみ利用可能だが、L2TPはATMやフレーム・リレー上での利用も可能だ。また、PPTPはトンネルを構築する際の認証手段を持たないが、L2TPはこの機能を持つ。さらに、L2TPでは1つの仮想トンネルで複数のユーザー・セッションをやりとりできる。なお、L2TPはPPTPと同様に通信データを暗号化する機能を持たないため、PPPの機能を使って暗号化を行うか、次に解説するレイヤ3トンネリング・プロトコルのIPSecが持つ暗号化機能を利用することが多い。Windows 2000/XPはL2TPとIPSecを組み合わせたVPN機能を標準で提供する。
Copyright© Digital Advantage Corp. All Rights Reserved.