GREトンネルを使ってOSPFをIPsec内に流す
・ルーター間でIPsec通信をする
・GREを使ってOSPFパケットをIPsecトンネル内でやりとりする
ネットワーク構成(画像を別ウインドウで表示)
RouterAのコンフィグ
!
version 12.2
no service single-slot-reload-enable
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname RouterA
!
crypto isakmp policy 1
authentication pre-share
crypto isakmp key ciscovpn address 192.168.2.2
!
crypto ipsec transform-set TS-Basic esp-des esp-sha-hmac
!
crypto map MAP-Basic 1 ipsec-isakmp
set peer 192.168.2.2
set transform-set TS-Basic
match address 150
!
!
interface Loopback0
ip address 192.168.1.1 255.255.255.0
ip ospf network point-to-point ←指定したサブネット・マスクで経路情報を通知する
!
interface Tunnel0 ←GREトンネル用の仮想インタフェース
ip address 192.168.4.1 255.255.255.0 ←GREインタフェースのIPアドレス
tunnel source 192.168.2.1 ←GREトンネルの送信元に対応する物理IPアドレ
tunnel destination 192.168.2.2 ←GREトンネルのあて先に対応する物理IPアドレス
crypto map MAP-Basic ←GREトンネル用インタフェースでcrypt mapを適用

!
interface Serial0
ip address 192.168.2.1 255.255.255.0
serial restart-delay 0
clockrate 64000
crypto map MAP-Basic ←物理インタフェースでもcrypt mapを適用する
!
router ospf 1
log-adjacency-changes
network 192.168.1.0 0.0.0.255 area 0
network 192.168.4.0 0.0.0.255 area 0 ←GRE用の仮想インタフェースでOSPFを動かす
!
access-list 150 permit gre host 192.168.2.1 host 192.168.2.2 ←IPsecの対象をGREのトラフィックに指定
!
line con 0
transport input none
stopbits 1
line aux 0
line vty 0 4
login
!
end
RouterBのコンフィグ
!
version 12.2
no service single-slot-reload-enable
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname RouterB
!
crypto isakmp policy 1
authentication pre-share
crypto isakmp key ciscovpn address 192.168.2.1
!
crypto ipsec transform-set TS-Basic esp-des esp-sha-hmac
!
crypto map MAP-Basic 1 ipsec-isakmp
set peer 192.168.2.1
set transform-set TS-Basic
match address 150
!
!
interface Loopback0
ip address 192.168.3.1 255.255.255.0
ip ospf network point-to-point
!
interface Tunnel0 ←GREトンネル用の仮想インタフェース
ip address 192.168.4.2 255.255.255.0 ←GREインタフェースのIPアドレス
tunnel source 192.168.2.2 ←GREトンネルの送信元に対応する物理IPアドレス
tunnel destination 192.168.2.1 ←GREトンネルのあて先に対応する物理IPアドレス
crypto map MAP-Basic
 ←GREトンネル用インタフェースでcrypt mapを適用
!
interface Serial0
ip address 192.168.2.2 255.255.255.0
crypto map MAP-Basic
!
router ospf 1
log-adjacency-changes
network 192.168.3.0 0.0.0.255 area 0
network 192.168.4.0 0.0.0.255 area 0 ←GRE用の仮想インタフェースでOSPFを動かす
!
access-list 150 permit gre host 192.168.2.2 host 192.168.2.1 ←IPsecの対象をGREのトラフィックに指定
!
line con 0
transport input none
stopbits 1
line aux 0
line vty 0 4
login
!
end
確認
IPsecのトンネルに,OSPFなどブロードキャスト(マルチキャスト)を使うルーティング・プロトコルを使うときは,注意が必要です。
IPsecはブロードキャストやマルチキャストは通さないので,GREトンネルでOSPFパケットをトンネリングしてや必要があります。

●IPsecではブロードキャストを転送できない
IPsec通信通信の対象となるのは,ユニキャストのトラフィックです。
そのため,RIPやOSPFなどのルーティング・アップデートのパケットはIPsecで転送できません。
そこで,GRE(generic routing encapsulation)というカプセル化のプロトコルを使います。
GREでパケットをカプセル化すると,そのパケットはユニキャストになります。
このことから,OSPFなどのパケットは,GREでカプセル化してからIPsecに通します。

この場合,IPsecの対象トラフィックは,GREのトラフィックに指定します。
すると,GREトンネルを通るすべてのトラフィック(ルーティング・アップデートや通常のユニキャストのトラフィック)がIPsecで暗号化されます。

IPsecに関する詳細の設定内容は,「IPsecの基本」を参照してください。
ここでは,GRE over IPsecの通信に必要となる,GREトンネルの設定,IPsecの設定,OSPFの設定,の三つのコンフィグを見ていきます。

●GREトンネルの設定と動作の確認
RouterAのGREトンネルの設定は,以下です。

interface Tunnel0
ip address 192.168.4.1 255.255.255.0
tunnel source 192.168.2.1
tunnel destination 192.168.2.2
crypto map MAP-Basic


1行目でTunnel0という仮想インタフェースを作り,これがGREトンネルの出入り口になります。
2行目で仮想インタフェースのアドレスとして,192.168.4.1/24を設定しています。
3行目と4行目で,トンネルの両端のアドレスとして192.168.2.1(送信元)と192.168.2.1(あて先)の物理アドレスを指定します。
GREの設定は以上までで完了です。
5行目の「crypto map MAP-Basic」は,このインタフェースを経由するトラフィックでIPsec通信をするように指定しています。
GRE over IPsecではこのように,実インタフェースであるSelial0と,仮想インタフェースであるTunnel0の両方にcrypt mapを設定します。

Tunnlel0インタフェースの状態を見てみましょう。
以上の設定の内容が表示されていることがわかります(下の赤字)。

RouterA#show interfaces tunnel 0
Tunnel0 is up, line protocol is up
 Hardware is Tunnel
 Internet address is 192.168.4.1/24
 MTU 1514 bytes, BW 9 Kbit, DLY 500000 usec,
   reliability 255/255, txload 1/255, rxload 1/255
 Encapsulation TUNNEL, loopback not set
 Keepalive set (10 sec)
 Tunnel source 192.168.2.1, destination 192.168.2.2
 Tunnel protocol/transport GRE/IP, key disabled, sequencing disabled
 Checksumming of packets disabled, fast tunneling enabled
 Last input 00:00:06, output 00:00:05, output hang never
 Last clearing of "show interface" counters never
 Queueing strategy: fifo
 Output queue 0/0, 17 drops; input queue 0/75, 0 drops
 5 minute input rate 0 bits/sec, 0 packets/sec
 5 minute output rate 0 bits/sec, 0 packets/sec
   2097 packets input, 143388 bytes, 0 no buffer
   Received 0 broadcasts, 0 runts, 0 giants, 0 throttles
   0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort
   2173 packets output, 199844 bytes, 0 underruns
   0 output errors, 0 collisions, 0 interface resets
   0 output buffer failures, 0 output buffers swapped out


●IPsecの設定と動作の確認
IPsecの設定で注意しなければいけないことは,「IPsec通信の対象とするトラフィックをGREのトラフィックに設定する」ということです。
このケースでは,以下のようになります。

access-list 150 permit gre host 192.168.2.1 host 192.168.2.2

プロトコルが「gre」で,IPsec通信の対象がGREトラフィックになっていることがわかります。
また,送信元(192.168.2.1)とあて先(192.168.2.2)がGERトンネルの両端に位置する物理アドレスになっています。

設定が完了すると,OSPFのトラフィックにより,自動的にIPsecによる暗号通信が始まります。
すると以下のように,ISAKMP SAと,IPsec SA(上り通信用と下り通信用)が確立します。

RouterA#show crypto engine connections active

 ID Interface    IP-Address   State Algorithm          Encrypt Decrypt
   1 Serial0     192.168.2.1   set  HMAC_SHA+DES_56_CB    0     0
2000 Serial0     192.168.2.1   set  HMAC_SHA+DES_56_CB    0   104
2001 Serial0     192.168.2.1   set  HMAC_SHA+DES_56_CB   105    0



●OSPFの設定と動作の確認
続いて,OSPFの設定を見てみましょう。
設定は以下です。

router ospf 1
log-adjacency-changes
network 192.168.3.0 0.0.0.255 area 0
network 192.168.4.0 0.0.0.255 area 0


注目は,4行目の「network 192.168.4.0 0.0.0.255 area 0」です。
これは,Tunnel0インタフェースでOSPFを有効にしています。

設定すると,RouterAのルーティング・テーブルは以下のように表示されます。

RouterA#show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
    D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
    N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
    E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
    i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
    * - candidate default, U - per-user static route, o - ODR
    P - periodic downloaded static route

Gateway of last resort is not set

C  192.168.4.0/24 is directly connected, Tunnel0
C  192.168.1.0/24 is directly connected, Loopback0
C  192.168.2.0/24 is directly connected, Serial0
O  192.168.3.0/24 [110/11112] via 192.168.4.2, 04:11:56, Tunnel0


RouterBの先にある192.168.3.0/24という経路情報を受信しています(上の赤字)。
この経路情報は,Tunnlel0インタフェース経由でOSPFによって受信していることがわかります。
GREトンネルによってOSPFパケットがやりとりできていることが確認できました。


●GRE over IPSecVPN を用いた LAN-to-LAN 接続設定例
http://www.cisco.com/japanese/warp/public/3/jp/service/tac/original/router_guide/gre_overipsec.shtml
●OSPF を使用した IPSec 環境での GRE トンネルの設定
http://www.cisco.com/japanese/warp/public/3/jp/service/tac/707/gre_ipsec_ospf-j.html
●GRE トンネリングを使った、EIGRP および IPX に関する IPSec の設定
http://www.cisco.com/japanese/warp/public/3/jp/service/tac/707/ipsec_gre-j.shtml
IPsecラボ
IPsecの基本
NATを使ったIPsec
GREトンネルを使ってOSPFをIPsec内に流す
トンネル・エンドポイント・ディスカバリ(TED)