GRE Tunnel の概要 〜基礎編〜
今回の授業は、「GREトンネル」について教えてみたいと思います。トンネルってなんですか?って方でもわかってもらえるように、噛み砕いておしえていきたいと思いますのでついてきてもらえればと思います。
GRE(Generic Routing Encapsulation)とは
GRE(Generic Routing Encapsulation)という言葉を始めて聞いたという方のために、簡単にGREについて解説しておきたいと思います。まず、GREとはトンネルプロトコルです。トンネルとは、パケットを別のプロトコルでカプセル化して、伝送させる仕組みのことを言います。イメージ的には、GREトンネルを使用しているルータ間に多くのネットワーク機器があったとしても、GREを使用しているルータ同士が直接パケットを受け渡しているかのように見せる仕組みになります。使う場面としては、以下のような拠点間通信などが想定されます。
それでは、「なんでGREトンネルなんて必要なの?」って思う方もいるか思います。それは、GREトンネルを確立することでトンネルを介して、マルチキャストパケットが通るようになるからなんです。マルチキャストが通れるメリットとしては、ダイナミックルーティングが使えるようになります。例えばEIGRP(224.0.0.10)やOSPF(224.0.0.5)などを使用する場合は、HELLOパケットを転送したりするのに使われます。EIGRPやOSPFについては、以前の授業から復習しておきましょう。
EIGRPの概要 ~基礎編①~
OSPFの概要 ~基礎編①~
このようなマルチキャストパケットをWAN区間でも使用しようとすると、GREトンネルを確立させて拠点間通信をさせる必要があります。設定自体はすごい簡単ですが、もう少し仕組みを理解していきたいと思います。
パケットの構造
まずは、GREを知ってもらうのに最初に理解してもらいたいのが、パケットの構造となります。通常のパケットに対して、20ByteのIPヘッダと4ByteのGREヘッダが付与されます。以下の構造を見て下さい。
この追加された「IPヘッダ」と「GREヘッダ」によってパケットがトンネルを通過されるかのように扱うことが出来るのです。具体的には、「IP」ヘッダの中に秘密が隠されています。新たに追加された「IP」ヘッダには、GREトンネルを作成するにあたり、最も重要となる2つのIPアドレスが含まれています。それが以下になります。
新しいIPヘッダに埋め込まれるIPアドレス
・Source Address
・Destination Address
この2つのIPアドレスによってトンネルの起点と終点が定義されるようになります。この起点を通過したパケットはGREでカプセル化され、終点を通過する際にカプセル化が解除されるようになります。それでは具体例を見てみましょう。
お勉強構成
具体例を見ていくにあたり、簡単ですが構成図を使って説明していきたいと思います。とりあえずイメージを使ってもらえればと思います。
CISCO コンソールケーブル
![]() |
【CISCO互換ケーブル】FTDI chipset USB RJ45 コンソールケーブル 新品価格 |
CISCO 1812J
![]() |
CISCO Cisco 1812J 固定構成型 セキュアブロードバンドアクセスルータ CISCO1812-J/K9 中古価格 |
ルータ1とルータ2でGREトンネルを構築してみたいと思います。
起点と終点
先にも説明した通り、GREトンネルを作る際に起点と終点を決める必要があります。それが、「Source Address」と「Destination Address」となります。今回は、以下のように「Source Address」と「Destination Address」を決めたとします。
【ルータ1】
Source Address : 10.1.1.1
Destination Address : 10.1.1.2
【ルータ2】
Source Address : 10.1.1.2
Destination Address : 10.1.1.1
このようにお互いのSourceアドレスをDestinationアドレスとして指定することで、GREトンネルは構築することが出来ます。対向となるルータであればどのIPアドレスを使っても良いわけではなく正確に合わせて設定する必要がありますので、注意してください。この「Source Address」と「Destination Address」が、トンネルを作るだけでなく通信でも使われるので覚えておきましょう。
通信要件の整理
続いて通信要件について整理してみましょう。たとえば、以下の通信要件を受け取ったとしましょう。この通信は、ルータ1~ルータ2間で構築されているGREトンネルを通過する必要があったとします。
この通信で使用されるIPパケットの中身を少し見てみましょう。
通信の流れ
今回の構成の場合は、端末A(10.10.10.1)から送られてきたパケットは、スイッチ1を経由してルータ1に転送されていきます。その際に使用される送信元(10.10.10.0/24)と送信先(10.10.20.0/24)に変更はありません。
次に先程、構築したGREトンネルを通過させる場合、ルータ1は新たに「IP」ヘッダを付与します。その「IP」ヘッダに付与されるのが、「Source Address」と「Destination Address」になります。この新たに付与された「IP」ヘッダを使ってルーティングされるようになるので、スイッチ1で使用されていた送信先アドレス(10.10.20.0/24)は使用されなくなります。(正確には、ルータ1で送信先アドレス(10.10.20.0/24)がGREトンネルの先にあることをルーティングテーブルで確認した後に、ヘッダを追加するので、ルータ1はちょっとだけ見てます。)
これにより先程まで使用していた、送信元アドレス(10.10.10.0/24)と送信先アドレス(10.10.20.0/24)は、トンネル区間では使用しなくなります。つまり、Source Address(10.1.1.1) = 送信元アドレス、Destination Address(10.1.1.2) = 送信先アドレスとして使用されるようになります。
今回の構成で言うと、ルータ1とルータ2の間にあるルータ3は、送信元アドレス(10.10.10.0/24)と送信先アドレス(10.10.20.0/24)を意識するのではなく、Source Address(10.1.1.1/32)とDestination Address(10.1.1.2/32)を見てルータ2へとパケットを転送してくれます。実際にルーティングテーブルを見ても、ルータ1のネクストホップはルータ3ではなく、ルータ2のトンネルインターフェイスとなります。
そして、GREのヘッダが付いたパケットを受け取ったルータ2は、自分がGREの終点であるためGREのカプセル化を解除して元のIPパケットにします。それ以降は、元の送信元アドレス(10.10.10.0/24)と送信先アドレス(10.10.20.0/24)を使用してルーティングされるようになります。
まとめ
今回の授業はここまでにします。いかがだったでしょうか?少しはGREトンネルの仕組みを理解することが出来たでしょうか?次回は実際に設定を入れてみて、機器のステータスがどのように見えるのかを学んでもらいます。それでは実際の設定編に進んでいきましょう。
GRE Tunnel の設定 〜基礎編〜
Cisco891FJ
![]() |
Cisco 891FJ-K9 C891FJ-K9 サービス統合型ルータ 中古価格 |
ルータ2とルータ3は説明文と異なります
ご指摘ありがとうございます。
確認して修正させていただきます!