概要

拠点間の通信は正常時は広域イーサネットを利用します。広域イーサネットの障害発生時にIPSecによるインターネットVPNによって、拠点間の通信が行えるように設定します。

ネットワーク構成

ipsec-backup01.jpg
図 広域イーサネットのバックアップ ネットワーク構成

設定

【Step1:VPN-GW間のGREトンネル】

VPN-GW間でルーティングプロトコルを利用するために、GREトンネルを確立します。ルーティングプロトコルのマルチキャスト/ブロードキャストパケットをGREでカプセル化してユニキャストパケットとして扱えるようにします。また、VPN-GW間のトンネルインタフェースのネットワークアドレスは、192.168.112.0/24とします。

VPN-GW1 トンネルインタフェースの作成

-------------------------
interface Tunnel0
ip address 192.168.112.10 255.255.255.0
tunnel source FastEthernet0/0.101
tunnel destination 200.2.2.20
-------------------------

VPN-GW2 トンネルインタフェースの作成

-------------------------
interface Tunnel0
ip address 192.168.112.20 255.255.255.0
tunnel source FastEthernet0/0.102
tunnel destination 200.1.1.10
-------------------------

この設定により、VPN-GW間は次の図のようにTunnle0インタフェースでポイントツーポイント接続されることになります。

ipsec-backup02.jpg.gif
図 VPN-GW間のGREトンネル

【Step2:VPN-GW間のGRE over IPSec】

VPN-GW間のトンネルインタフェース経由のパケットをIPSecで暗号化するための設定を行います。VPN-GW間で設定するIPSecのパラメータをまとめたものが下記の表です。

表 1 ISAKMPポリシー
ipsec-backup-table01.jpg

表 2 IPSecトランスフォームセット
ipsec-backup-table02.jpg

表 3 IPSec化対象パケット
ipsec-backup-table03.jpg

表 4 暗号マップ
ipsec-backup-table04.jpg

VPN-GW1 GRE over IPSec

-------------------------
crypto isakmp policy 10
encryption 3des
group 2
authentication pre-share
crypto isakmp key cisco address 200.2.2.20
crypto ipsec transform-set IPSEC esp-3des esp-sha-hmac
mode transport
access-list 101 permit gre host 200.1.1.10 host 200.2.2.20
crypto map GREoverIPSec 10 ipsec-isakmp
set peer 200.2.2.20
set transform-set IPSEC
match address 101
interface Tunnel0
crypto map GREoverIPSec
interface FastEthernet0/0.101
crypto map GREoverIPSec
-------------------------

VPN-GW2 GRE over IPSec

-------------------------
crypto isakmp policy 10
encryption 3des
group 2
authentication pre-share
crypto isakmp key cisco address 200.1.1.10
crypto ipsec transform-set IPSEC esp-3des esp-sha-hmac
mode transport
access-list 101 permit gre host 200.2.2.20 host 200.1.1.10
crypto map GREoverIPSec 10 ipsec-isakmp
set peer 200.1.1.10
set transform-set IPSEC
match address 101
interface Tunnel0
crypto map GREoverIPSec
interface FastEthernet0/0.102
crypto map GREoverIPSec
-------------------------

【Step3:内部ネットワークのルーティング設定】

VPN-GW間のトンネルインタフェースも含め、内部ネットワークではEIGRPによるダイナミックルーティングを行います。EIGRPを利用することで、正常時は広域イーサネット経由でパケットをルーティングできるようにします。また、広域イーサネット障害時には、自動的にEIGRPによってIPSec VPN経由でパケットをルーティングできるようにします。
内部ネットワークのIPアドレスは、先頭2バイトがすべて「192.168」で共通しています。そのため、EIGRPの設定は各ルータで共通で、次のように行います。

R1~R4/VPN-GW1、VPN-GW2 EIGRPの設定

-------------------------
router eigrp 100
network 192.168.0.0 0.0.255.255
no auto-summary
-------------------------

この定により、EIGRPが有効になるインタフェースをまとめたものが次の図です。

ipsec-backup03.jpg
図 EIGRPが有効なインタフェース

【Step4:内部ネットワークのルーティングとIPSec SAの確認】

VPN-GW間のGRE over IPSecでEIGRPを有効化したことで、定期的にEIGRP HelloパケットがVPN-GW間のGRE over IPSec上で送信されます。そのため、VPN-GWのTunnel0でEIGRPネイバーを確立します。また、IPSec SAが常時確立されます。
VPN-GW1でshow ip eigrp neighborおよびshow crypto ipsec saは次のように表示されます。

VPN-GW1 show ip eigrp neighbor/show crypto ipsec sa

-------------------------
VPN-GW1#show ip eigrp neighbors
IP-EIGRP neighbors for process 100
H   Address                 Interface       Hold Uptime   SRTT   RTO  Q  Seq
(sec)         (ms)       Cnt Num
2   192.168.13.3            Fa0/0.13          13 00:20:37    2   200  0  5
1   192.168.13.1            Fa0/0.13          13 00:20:53    1   200  0  14
0   192.168.112.20          Tu0               10 00:21:00   40  5000  0  14
VPN-GW1#show crypto ipsec sa
interface: Tunnel0
Crypto map tag: GREoverIPSec, local addr. 200.1.1.10
protected vrf:
local  ident (addr/mask/prot/port): (200.1.1.10/255.255.255.255/47/0)
remote ident (addr/mask/prot/port): (200.2.2.20/255.255.255.255/47/0)
current_peer: 200.2.2.20:500
PERMIT, flags={origin_is_acl,}
#pkts encaps: 331, #pkts encrypt: 331, #pkts digest 331
#pkts decaps: 327, #pkts decrypt: 327, #pkts verify 327
#pkts compressed: 0, #pkts decompressed: 0
#pkts not compressed: 0, #pkts compr. failed: 0
#pkts not decompressed: 0, #pkts decompress failed: 0
#send errors 1, #recv errors 0
local crypto endpt.: 200.1.1.10, remote crypto endpt.: 200.2.2.20
path mtu 1476, ip mtu 1476, ip mtu idb Tunnel0
current outbound spi: A2FAC928
inbound esp sas:
spi: 0xE51D474F(3843901263)
transform: esp-3des esp-sha-hmac ,
in use settings ={Transport, }
slot: 0, conn id: 2000, flow_id: 1, crypto map: GREoverIPSec
sa timing: remaining key lifetime (k/sec): (4436696/1480)
IV size: 8 bytes
replay detection support: Y
inbound ah sas:
inbound pcp sas:
outbound esp sas:
spi: 0xA2FAC928(2734344488)
transform: esp-3des esp-sha-hmac ,
in use settings ={Transport, }
slot: 0, conn id: 2001, flow_id: 2, crypto map: GREoverIPSec
sa timing: remaining key lifetime (k/sec): (4436695/1480)
IV size: 8 bytes
replay detection support: Y
outbound ah sas:
outbound pcp sas:
interface: FastEthernet0/0.101
Crypto map tag: GREoverIPSec, local addr. 200.1.1.10
protected vrf:
local  ident (addr/mask/prot/port): (200.1.1.10/255.255.255.255/47/0)
remote ident (addr/mask/prot/port): (200.2.2.20/255.255.255.255/47/0)
current_peer: 200.2.2.20:500
PERMIT, flags={origin_is_acl,}
#pkts encaps: 331, #pkts encrypt: 331, #pkts digest 331
#pkts decaps: 327, #pkts decrypt: 327, #pkts verify 327
#pkts compressed: 0, #pkts decompressed: 0
#pkts not compressed: 0, #pkts compr. failed: 0
#pkts not decompressed: 0, #pkts decompress failed: 0
#send errors 1, #recv errors 0
local crypto endpt.: 200.1.1.10, remote crypto endpt.: 200.2.2.20
path mtu 1476, ip mtu 1476, ip mtu idb Tunnel0
current outbound spi: A2FAC928
inbound esp sas:
spi: 0xE51D474F(3843901263)
transform: esp-3des esp-sha-hmac ,
in use settings ={Transport, }
slot: 0, conn id: 2000, flow_id: 1, crypto map: GREoverIPSec
sa timing: remaining key lifetime (k/sec): (4436696/1480)
IV size: 8 bytes
replay detection support: Y
inbound ah sas:
inbound pcp sas:
outbound esp sas:
spi: 0xA2FAC928(2734344488)
transform: esp-3des esp-sha-hmac ,
in use settings ={Transport, }
slot: 0, conn id: 2001, flow_id: 2, crypto map: GREoverIPSec
sa timing: remaining key lifetime (k/sec): (4436695/1479)
IV size: 8 bytes
replay detection support: Y
outbound ah sas:
outbound pcp sas:
-------------------------

そして、広域イーサネットが正常に稼働しているとき、拠点間の通信は広域イーサネット経由で行われます。たとえば、R3でルーティングテーブルを見ると、次のようになります。

R3 show ip route

-------------------------
R3#show ip route
~省略~
Gateway of last resort is not set
C    192.168.13.0/24 is directly connected, FastEthernet0/0.13
D    192.168.24.0/24 [90/33280] via 192.168.13.1, 00:25:38, FastEthernet0/0.13
D    192.168.4.0/24 [90/35840] via 192.168.13.1, 00:25:30, FastEthernet0/0.13
D    192.168.112.0/24
[90/297246976] via 192.168.13.10, 00:25:38, FastEthernet0/0.13
D    192.168.100.0/24
[90/30720] via 192.168.13.1, 00:25:38, FastEthernet0/0.13
C    192.168.3.0/24 is directly connected, FastEthernet0/0.3
-------------------------

また、R3から192.168.4.0/24へTracerouteすると、次のような結果になります。

R3 traceroute

-------------------------
R3#traceroute 192.168.4.4
Type escape sequence to abort.
Tracing the route to 192.168.4.4
1 192.168.13.1 4 msec 4 msec 4 msec
2 192.168.100.2 4 msec 0 msec 0 msec
3 192.168.24.4 0 msec *  0 msec
-------------------------

これはTunnelインタフェースは、デフォルトでBW 9kbps、DLY 500000μsecなので、Tunnelインタフェースを経由するルートは最適ルートにならないためです。

ipsec-backup04.jpg
図 広域イーサネット正常時のパケットの転送経路

【Step5:経路の切り替え】

経路の切り替えを確認するため、R1のFa0/0.100をシャットダウンします。

R1 Fa0/0.100 シャットダウン

-------------------------
Interface FastEthernet0/0.100
shutdown
-------------------------

R1のFa0/0.100をシャットダウンした後、R3のルーティングテーブルと192.168.4.0/24へのTracerouteの結果を確認します。

R3 show ip route/traceroute 192.168.4.4

-------------------------
R3#show ip route
~省略~
Gateway of last resort is not set
C    192.168.13.0/24 is directly connected, FastEthernet0/0.13
D    192.168.24.0/24
[90/297249536] via 192.168.13.10, 00:03:01, FastEthernet0/0.13
D    192.168.4.0/24
[90/297252096] via 192.168.13.10, 00:03:01, FastEthernet0/0.13
D    192.168.112.0/24
[90/297246976] via 192.168.13.10, 00:39:14, FastEthernet0/0.13
D    192.168.100.0/24
[90/297252096] via 192.168.13.10, 00:03:01, FastEthernet0/0.13
C    192.168.3.0/24 is directly connected, FastEthernet0/0.3
R3#traceroute 192.168.4.4
Type escape sequence to abort.
Tracing the route to 192.168.4.4
1 192.168.13.10 4 msec 4 msec 4 msec
2 192.168.112.20 12 msec 12 msec 16 msec
3 192.168.24.4 12 msec *  12 msec
-------------------------

このように、R1から広域イーサネット網への接続ができなくなると、EIGRPによりルーティングテーブルが書き換わり、GRE over IPSec経由でパケットが転送されていることがわかります。

ipsec-backup05.jpg
図 広域イーサネット障害時のパケットの転送経路

【Step6:インターネットへの接続】

内部ネットワークからインターネットへ接続できるように、VPN-GW1/VPN-GW2でNATの設定を行います。送信元IPアドレスが内部ネットワークの192.168.x.xであるパケットをインターネットへルーティングするときに、VPN-GW1/VPN-GW2のグローバルアドレス(200.1.1.10または200.2.2.20)に変換します。

VPN-GW1 NAT

-------------------------
ip nat inside source list 1 interface FastEthernet0/0.101 overload
access-list 1 permit 192.168.0.0 0.0.255.255
interface FastEthernet0/0.13
ip nat inside
interface FastEthernet0/0.101
ip nat outside
-------------------------

VPN-GW2 NAT

-------------------------
ip nat inside source list 1 interface FastEthernet0/0.102 overload
access-list 1 permit 192.168.0.0 0.0.255.255
interface FastEthernet0/0.24
ip nat inside
interface FastEthernet0/0.102
ip nat outside
-------------------------

また、VPN-GW1/VPN-GW2でインターネットへルーティングするためのデフォルトルートをEIGRPへ再配送します。

VPN-GW1/VPN-GW2 デフォルトルートの再配送

-------------------------
router eigrp 100
redistribute static
-------------------------

デフォルトルートをEIGRPへ再配送することで、内部ネットワーク内の各ルータからインターネットへパケットを転送することができます。VPN-GW1/VPN-GW2が内部ネットワークからインターネットへパケットをルーティングするときは、送信元IPアドレスがNATによって変換されます。次の図は、R3からインターネットへの接続の様子を表したものです。

ipsec-backup06.jpg
図 R3からのインターネット接続