【VPNについて】


  このHPはVPN(VPNで利用されるプロトコル)についてまとめたものです。


1-1 VPNで利用される主なプロトコル

VPNで利用される主なプロトコルには、下記の様なものがある。


・PPTP
・L2TP
・IPsec


上記はそれぞれ別々の技術であり、通常は組み合わせて使用されることは無い。
例外的に「L2TP」は暗号化機能を自身では持たないため、IPsecの暗号機能と組み合わせて利用することができる。




1-2 PPTP

PPTPは、レイヤ2で動作するトンネリングプロトコルの1つ。
PPTPは、PPPフレームを、IPネットワーク上で交換できるようにするためのプロトコル。

PPTPは、サーバークライアント型通信であるので、PPTPによる接続を受け付けるサーバー、
PTPの接続を開始するクライアントという役割が明確に分かれている。

PPTPでは、PAC(PPTPクライアント側)とPNS(PPTPサーバー側)がTCP上で動作する「制御コネクションプロトコル」と、PACとPNS間でPPPフレームをやりとりする「PPTPトンネルプロトコル」という2つのプロトコルを使用して通信を行う。





PPTPは、TCPで制御コネクションを作成した後、PPPの機能を利用して、「認証処理」や「プライベートアドレスの割り当て」を行う。
IPアドレスの割り当てが終了したら、「GRE」というプロトコルを使用してデータコネクションを使用して、実際のデータをやり取りする。

データコネクションでやり取りされるパケットは、プライベートヘッダを持つオリジナルIPパケットを、「PPP」と「GRE」でカプセル化した後、さらにインターネットでやりとりできるグローバルIPアドレスを含むIPヘッダでカプセル化する。
また認証機能には、「MC-CHAP」を採用し現在では「MS-CHAPv2」にバージョンアップされている。





※ 【PPTPでの暗号化】

PPTPでの暗号化のために、「MPPE」という仕組みが採用されている。
MPPEは共通鍵暗号で、GREパケット内のPPPフレームのペイロード部が暗号化される。
暗号化アルゴリズムには「RC4」が採用されていて、40、56、または128ビットの鍵長を利用することができる。





◆PPTPによる通信の手順

PPTPでは、サーバー/クライアント間で、下記の様な手順を経て、トンネルを確立する。

@社外のユーザーは、クライアントPCからISPのアクセスサーバーに接続し、PPP(PPPoE)セッションを開始する。※ダイヤルアップの場合はPPPを使用し、ADSL/FTTH接続のEthernetの場合はPPPoEを使用する。
PPTPでは、リモートユーザーからのアクセスを受け付けるサーバーを「PAC」と呼ぶ。


APACから社内ネットワークの接続先であるVPNゲートウェイにTCPで接続し、制御コネクションを確立する。
その制御コネクションのもとで、拡張GREプロトコルを使用して、「PPTPトンネル」を生成する。
そしてPPTPトンネルの中で、PPPセッションをVPNゲートウェイまで延長する。
PPTPでは、社内ネットワーク側で接続を受け付けるデバイスを「PNS」と呼ぶ。PPTPトンネルは、PACとPNSとの間に構築される。クライアントのPPTP機能を利用する場合は、PACの機能が含まれるので、アクセスサーバーは不要。


Bこの様にして作成したPPTPトンネルを通して、社内ネットワークにある社内マシンとの間で通信できるようになる。また、PPTPでは1つのトンネルで送信と受信の双方向通信が行える。
IPsecは一方向の通信しか出来ない。










1-3 L2TP

「L2TP」もPPTPと同様、レイヤ2におけるトンネリングプロトコル。
「L2F」というトンネリングプロトコルをベースに、PPTPの仕様と統合される形で標準化されている。
L2TPは、「VPDN」というネットワークの種類に分類され、ダイヤルアップユーザーに対してプライベート網へのアクセスを行わせる。




◆L2TPによる通信の手順

L2TPによる通信の手順は、下記の通り

@リモートユーザーがPCからダイヤルアップPPP接続を行い、着信を受けたNAS(LAC)は、PAP/CHAP等のPPPユーザー認証を行う。
※NAS(LAC)とは、公衆網に接続したユーザーからのダイヤルアップを受ける装置のこと。同時にLACは、ゲートウェイ(LNS)にアクセスし、社内ネットワークにある認証サーバーでNAS(LAC)が認証され、認証が通ると、L2TPトンネルができあがる。

Aアクセス側のゲートウェイ(LNS)と通信して、トンネルを確立する。
※LNSとは、L2TPサーバーの役割をする装置のこと。トンネルの管理を行うとともに、受信したカプセル化されているパケットのカプセルを外したり、PPPネゴシエーションを行うアクセスサーバーとしても機能する。

BNAS(LAC)からLNSへセッション接続要求を送り、ダイヤルインした社内の認証サーバー(RADIUS等)による正式な認証を行う。

C接続要求に対する応答をLACに返送する。

DPPPの通信を行う。PPPはL2TPトンネルの中を取ってゲートウェイ(LNS)で出来上がる





L2TPそのものは、暗号化の仕組みをもっていない。そのため、多くの実装は「IPsec」の暗号化機能と組み合わせてVPN通信を実現している。
L2TPは、通信を行う当事者の間をPPPによって接続し、そのフレームをカプセル化してネットワークをトンネルさせるという基本的な考え方はPPTPと同じ。

ただしPPTPでは、トンネルを構築するためにあらかじめ「制御用コネクション」を確立してからトンネルを作ったが、L2TPでは同じトンネル内で制御コネクションもユーザーセッションも確立する。






また、PPTPでは「GRE」によってカプセル化がされているが、L2TPでは、独自のヘッダを利用してカプセル化する。さらにPPTPではGREパケットをペイロードとするIPパケットを転送していたが、L2TPではカプセル化されたデータは、UDPのデータとして(L2TPメッセージとして)IPネットワーク上を配送される。
UDPポート番号は1701が使用される。




◆L2TP over IPsec

L2TPは、データリンク層をトンネリングプロトコルであり、このデータリンク層には「IPsec」の様なセキュリティを確保するためのメカニズムが無い。
この様な場合には、パケットレベルでのセキュリティを実現するメカニズムが必要になる。

そのため、L2TPは、セキュリティ機能を持つ「IPsec」を併用して、「L2TPover IPsec(L2TP/IPsec)」として使用することがほとんど。IPsecのESP(トランスポートモード)と組み合わせて利用する。

IPsecのESPと組み合わせることによって、L2TPデーターメッセージやL2TP制御メッセージのデータ部分が暗号化される。そして同様に、ESPの機能によって、メッセージ認証機能も提供される。
なお、L2TPでは、PPTPと同様に、PPPのユーザ認証機能を使用する。
L2TP over IPsecを適用したIPパケットを下図に記載する。











1-3 IPsec

インターネットで使用されるIPには、元々セキュリティ機能が備わっていなかった。そこで、TCP/IPのインターネット層のIP(レイヤ3)を拡張してセキュリティ機能を持たせる様にしたプロトコルが「IPsec」。

IPsecには、認証、暗号化、カプセル化の機能が備わっている。
これらの機能はVPNトンネルの構築に必要な機能。つまりIPsecを利用すれば、インターネット上にセキュアなWANを構築できる。









◆IPsecの構成

IPsecで用いられる主要なプロトコルとして、IKE、ESP、AHがある。
「IKE」は、SAと呼ばれる安全に通信できるペアの論理的なコネクション確立にあたり、鍵などの情報を交換するためのプロトコル。
「IKEv1」と「IKEv2」がある。

「ESP」は、SAを確立したペアの論理的なコネクションが、ペイロード(データ)の部分を暗号化して通信を行うプロトコル。暗号化の他、改ざん防止機能も兼ね備えている。
IPsecを暗号化に用いるときは、このプロトコルを使用。

「AH」は、暗号化の機能は備えておらず、改ざん防止機能だけを提供するプロトコル。