第2回 インターネットVPNの基礎知識:VPN実践導入講座(2/3 ページ)
VPNを利用したネットワークの設計に先立ち、VPNの基本的なしくみと、それを実現するプロトコルについて学ぼう。
インターネットVPNで利用されるプロトコル
インターネット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、L2F、L2TP
それでは、データリンク層をトンネリングする各プロトコルについて簡単に説明しよう。
PPTP(Point to Point Tunneling Protocol)
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において、リモートWindowsマシンがPACになる場合の通信手順
(1)WindowsマシンをPPP(ダイヤルアップ接続)やPPPoE(ADSLやFTTH)でインターネット・プロバイダに接続。PPPやPPPoEの接続が確立し、TCP/IPによるインターネット通信が可能になる。
(2)PACからPNSへ、トンネルの制御を行うための制御コネクションを確立する。制御コネクションはTCPを使って通信する。このときのあて先ポート番号は1723、送信元ポート番号は任意である。
(3)制御コネクションを使い、PPPフレームを送受信するためのPPTPトンネルを生成する。このトンネルには、GRE(Generic Routing Encapsulation)というプロトコル(プロトコル番号47)を拡張したものを使用する。
(4)PPTPトンネルの中でPPPセッションを開始する。PPPの機能を使い、ユーザー認証、IPアドレスなどの付与、圧縮や暗号の利用などをネゴシエートする。
(5)リモートのWindowsマシンとサイト内のネットワークの間でIP通信が可能になる。
PPTPを使うとIPデータグラムは次のような形で送信先のマシンに到達する。元となる送信データグラム(IPヘッダ+データ)に対して、PPPヘッダ(ポイント・ツー・ポイントでの通信用)とGREヘッダ(トンネル通信用)を付加し、それをさらにIPパケットでカプセル化して送信している。
PPTPによるIPデータグラムの送信
元となる送信データグラム(IPヘッダ+データ)に対して、PPPヘッダ(ポイント・ツー・ポイントでの通信用)とGREヘッダ(トンネル通信用)を付加し、それをさらにIPパケットでカプセル化して送信する。
(1)送信される元のIPデータグラム。
(2)PAC内でPPTP用のPPPフレームを付加。
(3)引き続きPACが拡張GREヘッダとIPヘッダを付加(IPでカプセル化)。
(4)IPデータグラムとしてインターネットを流れる。
(5)PNSがIPヘッダと拡張GREヘッダを除去してPPPフレームを取り出して処理する。
(6)元のIPデータグラムが取り出されてサイト内のLANに流される。
本来、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プロトコルのトンネリングもサポートする。
PPTPプロトコルの例
これはネットワーク上を流れているPPTPパケットを、Windows 2000 Serverに付属のネットワーク・モニタでキャプチャして解析した例。IPパケットの上にGREとPPPの各プロトコルがカプセル化されていることが分かる。
(1)解析の対象となるパケット。
(2)一番下はイーサネットのフレーム。
(3)次はIPパケット。これにより、PPTPのサーバとクライアント間での通信が行われる。GREのプロトコル番号は47番なので、IPパケット中のプロトコル番号フィールドは47となっている。ちなみに、ICMPは1番、TCPは6番、UDPは17番。
(4)GREパケット。カプセル化されたパケットを運ぶためにGREプロトコルが使われている。
(5)GREの上位にある(カプセル化されている)のがPPPプロトコル。
(6)GREプロトコルのヘッダ・データ。
L2F(Layer 2 Forwarding)
L2Fは、Cisco SystemsやNorthern Telecom(現Nortel Networks)などによって開発されたレイヤ2トンネリング・プロトコルである。RFC 2341で仕様が公開されているが、現在では次に取り上げるL2TP(Layer 2 Tunneling Protocol)に統合されている。PPTPでは、制御コネクションにTCPプロトコルを、トンネルに拡張GREプロトコルをそれぞれ使用するのに対し、L2Fでは制御チャンネルとトンネルの両方にUDP(ポート1701)を使用する。
L2TP(Layer 2 Tunneling Protocol)
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.