概要

ハブ&スポーク構成のIPSec VPNについて、設定ミスの切り分けと修正を行います。

ネットワーク構成

次のネットワーク構成で、IPSec-VPNにより拠点間の通信を行いたいと考えています。

図 IPSedc 設定ミスの切り分けと修正 Part3 ネットワーク構成
図 IPSedc 設定ミスの切り分けと修正 Part3 ネットワーク構成

サブインタフェースを利用しているのは、検証環境の機器の都合のためです。IPSecの設定自体にはまったく関係ありません。

R1の拠点内(本社)には192.168.1.0/24のネットワークがあります。また、R2の拠点内(支社1)には192.168.2.0/24、R3の拠点内(支社2)には192.168.3.0/24のネットワークがあります。R1、R2、R3をVPNゲートウェイとして拠点間の通信のパケットをIPSecで暗号化します。拠点間の通信は、本社を中心としたハブ&スポーク構成で行います。つまり、支社間の通信はいったん本社を経由して行うことにしています。

また、インターネットへ接続するためにR1、R2、R3でNATによって拠点内のプライベートアドレスをISPに接続しているグローバルアドレスに変換できるようにしています。なお、インターネットへ通信確認は150.1.1.100のIPアドレスで行うものとします。

設定概要

下記の設定は、R1、R2、R3で現在行っている設定の抜粋です。

R1

crypto isakmp policy 1
 encr 3des
 hash md5
 authentication pre-share
 group 2
crypto isakmp key cisco address 100.2.2.2
crypto isakmp key cisco address 100.3.3.3
crypto isakmp keepalive 30 periodic
!
crypto ipsec transform-set myset esp-3des esp-sha-hmac
!
crypto map IPSEC 10 ipsec-isakmp
 set peer 100.2.2.2
 set transform-set myset
 match address 100
crypto map IPSEC 20 ipsec-isakmp
 set peer 100.3.3.3
 set transform-set myset
 match address 101
!
interface Loopback0
 ip address 192.168.1.1 255.255.255.0
 ip nat inside
!
interface FastEthernet0/0.101
 encapsulation dot1Q 101
 ip address 100.1.1.1 255.255.255.0
 ip nat outside
 crypto map IPSEC
!
ip route 0.0.0.0 0.0.0.0 100.1.1.100
!
ip nat inside source route-map NO_NAT interface FastEthernet0/0.101 overload
!
access-list 100 permit ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255
access-list 101 permit ip 192.168.1.0 0.0.0.255 192.168.3.0 0.0.0.255
!
route-map NO_NAT deny 10
 match ip address 100 101
!
route-map NO_NAT permit 100

R2

crypto isakmp policy 1
 encr 3des
 hash md5
 authentication pre-share
 group 2
crypto isakmp key cisco address 100.1.1.1
crypto isakmp keepalive 30 periodic
!
crypto ipsec transform-set myset esp-3des esp-sha-hmac
!
crypto map IPSEC 10 ipsec-isakmp
 set peer 100.1.1.1
 set transform-set myset
 match address 100
!
interface Loopback0
 ip address 192.168.2.2 255.255.255.0
 ip nat inside
!
interface FastEthernet0/0.102
 encapsulation dot1Q 102
 ip address 100.2.2.2 255.255.255.0
 ip nat outside
 crypto map IPSEC
!
ip route 0.0.0.0 0.0.0.0 100.2.2.100
!
ip nat inside source route-map NO_NAT interface FastEthernet0/0.102 overload
!
access-list 100 permit ip 192.168.2.0 0.0.0.255 192.168.1.0 0.0.0.255
access-list 100 permit ip 192.168.2.0 0.0.0.255 192.168.3.0 0.0.0.255
!
route-map NO_NAT deny 10
 match ip address 100
!
route-map NO_NAT permit 100

R3

crypto isakmp policy 1
 encr 3des
 hash md5
 authentication pre-share
 group 2
crypto isakmp key cisco address 100.1.1.1
crypto isakmp keepalive 30 periodic
!
crypto ipsec transform-set myset esp-3des esp-sha-hmac
!
crypto map IPSEC 10 ipsec-isakmp
 set peer 100.1.1.1
 set transform-set myset
 match address 100
!
interface Loopback0
 ip address 192.168.3.3 255.255.255.0
 ip nat inside
!
interface FastEthernet0/0.103
 encapsulation dot1Q 103
 ip address 100.3.3.3 255.255.255.0
 ip nat outside
 crypto map IPSEC
!
ip route 0.0.0.0 0.0.0.0 100.3.3.100
!
ip nat inside source route-map NO_NAT interface FastEthernet0/0.103 overload
!
access-list 100 permit ip 192.168.3.0 0.0.0.255 192.168.1.0 0.0.0.255
access-list 100 permit ip 192.168.3.0 0.0.0.255 192.168.2.0 0.0.0.255
!
route-map NO_NAT deny 10
 match ip address 100
!
route-map NO_NAT permit 100

トラブルの症状

本社と支社間の通信は正常に行うことができますが、支社間の通信ができません。たとえば、R1からR2およびR3へのPingは下記のように成功します。

R1からR2/R3への通信確認

R1#ping 192.168.2.2 source 192.168.1.1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.2.2, timeout is 2 seconds:
Packet sent with a source address of 192.168.1.1
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 56/72/100 ms
R1#ping 192.168.3.3 source 192.168.1.1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.3.3, timeout is 2 seconds:
Packet sent with a source address of 192.168.1.1
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 8/52/80 ms

ところが、R2からR3へPingを行うと失敗します。

R2からR3への通信確認

R2#ping 192.168.3.3 source 192.168.2.2

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.3.3, timeout is 2 seconds:
Packet sent with a source address of 192.168.2.2
.....
Success rate is 0 percent (0/5)

問題

  • 本社と支社間の通信ができるのにもかかわらず、支社間の通信ができない原因は何ですか?
  • 支社間の通信ができるようにするためには、どのように設定を修正すればよいですか?支社間の通信はフルメッシュではなく、ハブ&スポークで行うものとします。

解答

本社と支社間の通信ができるのにもかかわらず、支社間の通信ができない原因は何ですか?

本社R1で支社間の通信のパケットに対する暗号ACLの設定が抜けているため。

支社間の通信ができるようにするためには、どのように設定を修正すればよいですか?支社間の通信はフルメッシュではなく、ハブ&スポークで行うものとします。

R1

access-list 100 permit ip 192.168.3.0 0.0.0.255 192.168.2.0 0.0.0.255
access-list 101 permit ip 192.168.2.0 0.0.0.255 192.168.3.0 0.0.0.255

ワンポイント

  • ハブ&スポークでIPSec VPNを構築するときはハブルータでの暗号ACLに要注意

解説

ハブ&スポーク構成でIPSec VPNを構築するときには暗号ACLの設定に注意が必要です。特にハブとなるルータでの暗号ACLに注意が必要です。ネットワーク構成を再度確認しておきましょう。

このネットワーク構成において、本社のR1を中心としてハブ&スポークでIPSec VPNを構築します。つまり、SAはR1-R2間、R1-R3間で確立します。それぞれのSAで転送するIPパケットをまとめると、次のようになります。

R1-R2間のSA
192.168.1.0/24 ←→ 192.168.2.0/24 (本社LANと支社1LAN間)
192.168.3.0/24 → 192.168.2.0/24 (支社2LANから支社1LAN)

R1-R3間のSA
192.168.1.0/24 ←→ 192.168.3.0/24 (本社LANと支社2LAN間)
192.168.2.0/24 → 192.168.3.0/24 (支社1LANから支社2LAN)

ここで、要注意なのが支社1と支社2間の通信です。たとえば、支社1から支社2への通信を考えます。支社1から支社2へのIPパケットのIPアドレス情報は、次のようになります。

送信先IPアドレス:192.168.3.3
送信元IPアドレス:192.168.2.2

このIPパケットがIPSecで暗号化されR1-R2間のSAを通じて、R1へ転送されます。R1は、いったん受信したパケットを復号します。そして、再度IPSecで暗号化してR1-R3間のSAを通じてR3へ転送します。

図 支社1から支社2への通信
図 支社1から支社2への通信

このような通信フローを踏まえて、暗号ACLの設定をしなければいけません。R2とR3では暗号ACLの設定は問題ありません。しかし、R1で上記の通信フローを考慮した暗号ACLの設定になっていません。R1の暗号ACLは次のようになっています。

R1 show access-list

R1#show access-lists
Extended IP access list 100
    10 permit ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255
Extended IP access list 101
    10 permit ip 192.168.1.0 0.0.0.255 192.168.3.0 0.0.0.255

R1の暗号ACLはACL100とACL101です。ACL100はR1-R2間のSAに通すIPパケットを指定し、ACL101はR1-R3間のSAに通すIPパケットを指定しています。それぞれ本社から支社あてのIPパケットが一致するように条件が設定されています。ですが、支社間の通信を指定する条件はありません。これが支社間で通信できない原因です。

支社間の通信をR1を経由して行うためには、R1-R2間のSAに通すIPパケットを指定するACL100に送信元IPアドレスが支社2LAN、送信先IPアドレスが支社1LANの条件を追加します。同様に、R1-R3間のSAに通すIPパケットを指定するACL101に送信元IPアドレスが支社1LAN、送信元IPアドレスが支社2LANの条件を追加します。

R1 暗号ACLに支社間のアドレスを追加

access-list 100 permit ip 192.168.3.0 0.0.0.255 192.168.2.0 0.0.0.255
access-list 101 permit ip 192.168.2.0 0.0.0.255 192.168.3.0 0.0.0.255

R1で暗号ACLの条件を追加した後、支社1から支社2への通信を行います。すると、正常に通信できるようになります。

R2からR3へPing

R2#ping 192.168.3.3 source 192.168.2.2

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.3.3, timeout is 2 seconds:
Packet sent with a source address of 192.168.2.2
..!!!
Success rate is 60 percent (3/5), round-trip min/avg/max = 76/100/140 ms
R2#ping 192.168.3.3 source 192.168.2.2

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.3.3, timeout is 2 seconds:
Packet sent with a source address of 192.168.2.2
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 24/72/124 ms

最初のPingの2回分のタイムアウトは、IPSec SAを確立するために時間がかかっているためです。