◆ GREとは
GRE(Generic Routing Encapsulation)は、トンネルプロトコルの1つです。トンネルプロトコルには
Layer2トンネリングのL2F、PPTP、L2TPと、Layer3トンネリングのGRE、IPsecなどがあります。この
トンネリングとは、あるトラフィックを別のプロトコルでカプセル化して伝送する技術のことです。
パケットのカプセル化とその解除はトンネルの両端の機器で行うため、両端の機器が直結しているように
見えます。GREトンネリングでは、任意のプロトコルのパケットをIPトンネル内でカプセル化しています。
GREトンネリングを行なう両端のルータで、あるトラフィックに対するカプセル化とその解除を行います。
GREは暗号化機能を備えていないことから、ルーティングセキュリティが保たれても、データそのものに
対するセキュリティが保たれていないため、トラフィックアナライザーなどでモニターする事は可能です。
データの安全性を保ちたい場合は GRE over IPSec を使用します。なお、GREトンネリング上においては、
Helloパケットにマルチキャストを使用するルーティングプロトコルを使用することが可能になっています。
◆ トンネリング : 3つの主要コンポーネント
トンネルインターフェースは、以下のトンネリングのコンポーネントのTransport Protocolを使用して
任意のPassenger Protocolをカプセル化する方法を提供するCiscoルータ上の論理インターフェースです。
トンネリングのコンポーネント |
コンポーネントの説明 |
Transport Protocol |
カプセル化プロトコルを伝送するために使用されるプロトコル( IP ) |
Passenger Protocol |
カプセル化されるプロトコル( IP、IPX、AppleTalk、CLNS、DECnetなど ) |
Carrier Protocol |
カプセル化するプロトコル(GRE, aurp, cayman, dvmrp, eon, ipip, ipv6ip, nos) |
下図はPassenger Protocol に「IP」、Carrier Protocolに「GRE」、Transport Protocol
に「IP」を使用
したGREトンネリングにおけるパケットフォーマットです。以下のフォーマットのとおり、GREトンネルを
経由し通信が行われる場合、GREヘッダーとともに新しいIPヘッダーが付加されてパケットが転送されます。
GREパケットでは、GREトンネリング用に「新しくIPヘッダ」と「GREヘッダ」を付加します。
◆ GRE トンネリングのトラフィックフロー
下図は、R2のセグメント「192.168.2.0/24」からR1のセグメント「192.168.1.0/24」へ通信しています。
インターネット網ではプライベートIPアドレスは通知されませんが、GREトンネリングによってカプセル化
していることから、R1とR2のLANセグメントは通信できます。
前提として、R1とR2のWAN側のインターフェースのIPアドレスが相互に通信できる状態である必要があり
これにより、Tunnelインターフェースでポイントツーポイントの関係を確立させて、トンネル上での通信が
可能となります。Tunnelインターフェースでは、GREトンネルでの送信元IPアドレスと宛先アドレスを指定
しますが、これらのIPアドレスはインターネット上(IPネットワーク上)で通知されている必要があります。
192.168.2.X からのHTTP通信は、パケットがR2に着信すると宛先のネクストホップがTunnel0であるので
新しいIPヘッダーとGREヘッダーがパケットに付加されます。新しいIPヘッダーの送信元、宛先アドレスは
トンネルインターフェースに定義したSourceアドレスとDestinationアドレスです。これらのヘッダーはR1
で解除されます。
パケットフォーマット通り、GREによりカプセル化されたパケットは暗号化されているわけではなくデータ
そのものに対してセキュリティは保たれません。しかし、プライベートIPアドレスをカプセル化したい場合や
あるIPネットワークに対して通知したくない経路がある場合、1対1のトンネルを確立することによりポイント
ツーポイント通信が可能であることから、途中で経由するルータにルート情報を通知する必要がなくなります。
その結果、外部からのアクセスは不可能となって、ルート情報そのものに対してセキュリティが保たれます。
しかしルート情報だけでなく、データ情報も暗号化してセキュリティを保護したい場合はIPsecも併用します。