VPN(GREトンネルとルーティングプロトコル 1)

 ここでは、IPSecの暗号化状態でダイナミックルーティングが行えるようにするGREトンネルを利用する方法について説明し、実際に設定していきます。

そもそも、なぜ、IPSec上でダイナミックルーティングが行えないのか。

それは、Ciscoルータは、IPSec上にマルチキャストやブロードキャストを流すことをサポートしていないからです。
※ベンダーによっては、サポートしている製品もあります。

 となると、スタティックルーティングに頼ることになるのですが、下のように拠点数が少なければ、たいした作業になりませんが、拠点数が多い場合は、どうでしょうか?

 拠点数が多くなるとルーティング処理をスタティックルートだけに頼ると煩雑になりかねません。IPSec上でもOSPFなどのダイナミックルーティングプロトコルを利用したいところです。

そこで、この問題に対処するために、GREトンネルという方法を用いることができるようになっています。

 GREとは、「Generic Routing Encapsulation」の略で、通信内容をカプセル化し転送することができます。GREでカプセル化を行うことで、そのパケットをユニキャスト化することができます。

 OSPFなどのルーティングプロトコルのアップデートや通信パケットをGREでカプセル化を行ってから、IPSecで通信することにより、ダイナミックルーティングが可能になります。

GRE トンネルの設定

●トンネルインタフェースを作成する

トンネルインタフェースの番号は、両側のルータであわせる必要はありません。

Router(config)#interface tunnel {インタフェース番号}

●トンネルインタフェースにIPアドレスを振る

 対向のルータのトンネルインタフェースのアドレスと同一のセグメントのものにすることが推奨されますが、必ずしも同一にしなくてもかまいません。

Router(config-if)#ip address {IPアドレス} {subnet-mask}

●送信元・宛先IPアドレスを設定する

 GREトンネルの端になる送信元IPアドレスと宛先IPアドレスを設定します。ここで指定するアドレスは、実インタフェースのIPアドレスです。トンネルインタフェースのIPアドレスではありません。

Router(config-if)#tunnel source {トンネル側で送信元の実インタフェースのIP | インタフェース}

Router(config-if)#tunnel destination {トンネル側で宛先の実インタフェースのIP}

 「tunnel source」と「tunnel destination」で指定したアドレス間で通信できなければなりません。GREのトンネルでは、「tunnel source」と「tunnel destination」が通信に影響します。

●Keepaliveの設定(任意)

 GREトンネルの生存確認の設定を行います。この設定は、任意です。デフォルトの設定でかまわない場合は、設定する必要はありません。

Router(config-if)#keepalive {priod} {retries}

priod: 0~32767
retries: 1~255

 「priod」はkeepaliveパケットの送信間隔で「retries」は、リプライ数です。リプライ数を超えるとTunnelインタフェースは「down」します。

※トンネルインタフェースにおけるKeepaliveは、IOS12.2(8)T以前ではサポートされていないので注意して下さい。

●MTU値の指定(任意)

 MTUのサイズを微調整することにより、パケットのフラグメントを防止して高速通信を可能にします。GREのオーバヘッド(24byte)とIPSecトンネルモードのオーバヘッドを計算して設定する必要があります。

Router(config-if)#ip mtu {MTUサイズ}

●GRE over IPSec の設定

GREでは、暗号化はされないため、GRE over IPSec の設定を行います。

暗号化の指定は、実インタフェースとをトンネルインターフェースに設定します。

Router(config-if)#crypto map {crypto map名}

 次の「VPN(GREトンネルとルーティングプロトコル 2)」では、IPSec上にGREトンネルを設定し、OSPFでルーティンができるように設定していきます。