GRE over IPSec

サイト間IPSec VPNで、インターネット経由で他の拠点のLANへパケットをルー
ティングするためには、やはりルーティングテーブルをきちんと作らないとい
けません。拠点の数が少なければスタティックで設定してもたいした負荷では
ありませんが、拠点の数が増えるとけっこうめんどくさくなってしまいます。

また、IPSec VPNをバックアップ目的で利用している場合、通常利用している
回線がダウンしたときに、経路を切り替える必要があります。自動的な経路の
切り替えは、スタティックルーティングでは工夫が必要です。

そこで、IPSec VPN上でルーティングプロトコルによるダイナミックルーティ
ングを行うことがあります。ただ、基本的にはIPSec VPN上で転送できるのは
ユニキャストのパケットです。RIPやOSPFなどのルーティングプロトコルのマ
ルチキャスト/ブロードキャストパケットは転送できません。

マルチキャスト/ブロードキャストパケットをIPSec VPN上で転送するために、
GREトンネルを確立します。マルチキャスト/ブロードキャストをGREでカプセ
ル化して、ユニキャストパケットとします。そして、GREカプセル化したパケ
ットをIPSec VPN上で転送していくことで、ルーティングプロトコルを利用で
きるようになります。

※実装次第でマルチキャスト/ブロードキャストをそのままIPSec VPNで転送す
ることはできます。

GRE(Generic Routing Encapsulation)

GRE over IPSecを説明するために、まずGREトンネルについて説明します。
GREトンネルは、IPv4でさまざまなネットワーク層プロトコルをカプセル化す
ることができるマルチプロトコル対応のトンネリングプロトコルです。GREト
ンネルを利用するには、トンネルインタフェースを作成します。トンネルイン
タフェースの作成は、グローバルコンフィグレーションモードで次のコマンド
を使います。

Router(config)#interface Tunnel
Router(config-if)#

トンネルインタフェースでは、デフォルトでGRE(Generic Routing Encapsulation)
のカプセル化を行います。


図 GREカプセル化

次に転送用IPv4ヘッダのIPアドレスを指定します。tunnel destinationコマン
ドで転送用IPv4ヘッダの送信先IPアドレスを指定し、tunnel sourceコマンド
で転送用IPv4ヘッダの送信元IPアドレスを指定します。

Router(config)#interface Tunnel
Router(config-if)#tunnel destination
Router(config-if)#tunnel source

tunnel destinationで指定したIPアドレスへ到達可能であれば、トンネルイン
タフェースはup/upの状態になります。ただし、手動トンネルを設定する両方
のルータで相手のtunnel destinationが自分のtunnel sourceに、相手の
tunnel sourceが自分のtunnel destinationに設定されている必要があります。
手動トンネルのtunnel destination、tunnel sourceの設定が正しくできれば、
トンネルを設定した両方のルータは、あたかもポイントツーポイントで直接接
続されているかのように見えます。


図 GREトンネルは仮想的なポイントツーポイントリンク

トンネルインタフェース上で、特定のネットワーク層プロトコルの送受信/ル
ーティングを行うためにはそのネットワーク層プロトコルのアドレスを設定し
ます。つまり、トンネルインタフェースでIPルーティングを行うには、トンネ
ルインタフェースにIP4アドレスが必要です。トンネルインタフェースでIPv6
を送受信したりルーティングするには、トンネルインタフェースにIPv6アドレ
スを設定します。

GREトンネルでのパケットの受信
GREトンネルでパケットを受信するときには、転送用IPv4ヘッダをチェックし
ます。転送用IPv4ヘッダの送信先IPアドレスがtunnel sourceに一致し、転送
用IPv4ヘッダの送信元IPアドレスがtunnel destinationに一致していれば、ト
ンネルインタフェースで受信したことになります。

GREトンネルからパケットの送信
ルーティングテーブルのネクストホップがトンネルインタフェースになってい
たりなど、GREトンネルからパケットを送信するときは、元のパケットにGREヘ
ッダと転送用IPv4ヘッダをカプセル化します。
そして、実際にパケットを出力するために転送用IPv4ヘッダの送信先IPアドレ
スに対応するルーティングテーブルエントリを検索します。転送用IPv4ヘッダ
の送信先IPアドレスに対するルーティングテーブルエントリから、出力インタ
フェースを決定しレイヤ2ヘッダを付加してインタフェースから送出します。



図 GREトンネルからパケットの送信