では,VPNを作る代表的なプロトコルであるPPTPとIPsecについて,できあがった地図を見ながら奥まで探検していこう。

図7 VPN通信の手順
PPTPもIPsecも,基本的な手順は変わらない。違う点は,VPNトンネルの数。PPTPは送信と受信を一つのVPNトンネルでやりとりするが,IPsecは別々のVPNトンネルを作って送信用と受信用のトンネルを使い分ける。

トンネルを掘るためには…

 PPTPとIPsecで,認証,暗号化,カプセル化の三つの機能を提供するしくみにそれほど大きな違いはない。通信の手順もほぼ同じだ。どちらも,(1)相手のVPN装置が本物かを確認する認証,(2)送受信データを暗号化するために使う暗号鍵の取り決め,(3)データの暗号化とカプセル化,(4)カプセル化したデータの送信――という順番になる(図7[拡大表示])。

 このうちの(1)と(2)は,実際にデータを送受信する前の準備段階だ。ここでは,実際のデータをやりとりするVPNトンネルはできていないので,VPNトンネルを使わずに認証や暗号鍵の情報をやりとりする。

 PPTPでは,ダイヤルアップ接続などに使うPPPが持っている認証機能を利用して相手のVPN装置が本物かを確かめる(1)。一方のIPsecでは,IKEと呼ぶ手順でを使って相手を認証する。

 認証がうまく行ったら,データを暗号化するための暗号鍵を決める(2)。PPTPもIPsecも,鍵を(1)の認証の一環として取り決める。認証が終わると,そのまま鍵を取り決めるプロセスに移るのだ。これで,送信側のVPN装置と受信側のVPN装置が同じ暗号鍵を持ち合うことになる。

 ここまでの処理が完了すれば,いよいよデータの送信が始まる。先ほど取り決めた暗号鍵で社内LANから受け取ったIPパケットを暗号化し,先頭にIPヘッダーを付けてカプセル化する(3)。そしてパケットを転送する(4)。

 一方,通信相手のVPN装置はVPNトンネルを通じてパケットを受け取ると,送信側VPN装置と逆の手順で受信したパケットを処理していく。先頭のIPヘッダーを外してカプセル化を解き,暗号鍵を使って復号化する。これで,送信側のVPN装置が最初にパソコンから受け取った社内LANのパケットと同じものが取り出せる。そして,取り出したパケットを社内LANへ転送する。

PPTPは双方向,IPsecは一方通行

 PPTPとIPsecの違いは,データ送受信に使うVPNトンネルの数である。PPTPは送信データも受信データも一つのVPNトンネルでやりとりし,1本のVPNトンネルだけを作る。

 一方のIPsecは,社内LANからインターネットを介して別の社内LANへ向けたパケットをVPN装置が受け取ったとき,送信用のVPNトンネルを作る。この時点では,相手からこちら向きへのパケットは通らない。つまり,一方向のみのVPNトンネルができるだけなのだ。そして,相手側LANのコンピュータがにパケットを受信し,その返信パケットが相手側のVPN装置に届いたとき,相手側VPN装置がこちらに向けてVPNトンネルを作ってから,返信パケットが戻ってくる。

 この違いは,このあとで詳しく探っていく認証工程や暗号鍵決定工程の違い,LAN間接続向きかリモート・アクセス向きかといった用途の違いにも表れてくる。

 ちなみに,VPN装置は社内LAN側から受け取ったIPパケットのあて先を見て,VPNトンネルに入れるか,インターネットへ直接転送するかを判断する。ちょうどルーターのように,あて先に応じてVPNトンネルに入れるか入れないかを決める。

 また,VPNトンネルへ入れる際には,すでにVPNトンネルが作られているかどうかをVPN装置は調べ,作られていればそのトンネルを使う。作られていなければ,データ転送の前にVPNトンネルを一から作る。