IP上で動作する仮想トンネル「GRE」:PPTPフレーム構成
はい、こんにちは~。専用線を使ったかのように、仮想的なプライぺーと回線を実現する「VPN」技術について、連続記事で紹介しています。
前回は、VPNプロトコル「PPTP」の概要と、通信手順について紹介しました。認証にMS-CHAPを使い、暗号化アルゴリズムにRC4を使います。いずれも脆弱性が指定されていてセキュリティ上、問題があるのでしたね。
PPTPの全体像が見えてきてきたところで、今回は、PPTPのフレーム構成を見ていくことにしましょう。果たして、どのようにIPパケットをカプセル化(トンネル化)するのでしょうか?IPsecのフレームとどう違うでしょうか?
さっさくいってみましょう!
IPパケットを順にカプセル化
まずは、例によって処理される前のIPパケットを確認しましょう。
これにいろいろヘッダーを追加してカプセル化していきます。まずはPPPヘッダを先頭につけましょう。PPPフレームの出来上がりです。
PPPと同じく第2層のイーサネットなら、MACヘッダーなどをつけて、「MACフレーム」を作るところですが、こちらは「PPPフレーム」です。
PPPヘッダの構成がどうなっているかも気になりますが、ここでは割愛します。「PPTPは、PPPをベースにしているから、IPパケットをカプセル化してPPPフレームを作るんだな」くらいの理解にとどめておきましょう。
GREヘッダとは?
続いて、PPPフレームをGREでカプセル化します。GRE?聞きなれないですね。
GREは、Generic Routing Encapsulationの略です。訳すなら、「汎用的なルーティング・カプセル化」でしょうか…。いまいち理解の参考にならないですね。
絵にすると次の通りです。
最終的に新たなIPアドレスも加わります。もとのIPアドレスは暗号化されていますから。この点、IPsecのESPトンネルモードと似ていますね。
では、果たしてGREはどんな役割があるのでしょう?
GREは、IPトンネルの中に、さらにGREトンネルという通信路を生み出します。
GREは、任意のパケット(ここではPPPフレーム)をカプセル化します。「任意の」というところが、Genericの意味するところかもしれません(推測です)。そのGREパケットをIPトンネルで送るわけですね。
1つ注意したのは、ポート番号がフレーム内に存在しないことです。これにより、NATトラバーサル(NAT越え)が難しくなります(詳細は別途解説でき、、たらいいな)。
※余談ですが、「トンネル」といっていますが、送信機器でヘッダを貼り付け、受信機器でヘッダを剥がしているという動作から、あたかも専用道路をデータが走っているようにイメージすると分かりやすいかと思います。
PPTPのまとめ
最後にPPTPのポイントを簡単にまとめておきましょう。
古いプロトコルであり、現在は積極的に利用されていない。
第2層で動作するプロトコル(IPsecは第3層)である。
暗号化、認証いずれについても、IPsecと比べてセキュリティ上、脆弱な点が多い(RC4やMS-CHAPの利用)。
はい、本日はここまで。2回にわたり、古いVPNプロトコル「PPTP」について紹介しました。
IPsec、PPTPと来ました。なら、次回はせっかくですからあともう一つのVPNプロトコル「L2TP」について紹介しましょう。
では。