概要

IPSecで暗号化する対象パケットを決める暗号ACLについて、設定ミスの切り分けと修正を行います。

ネットワーク構成

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

図 IPSec 設定ミスの切り分けと修正 Part2 ネットワーク構成
サブインタフェースを利用しているのは、検証環境の機器の都合のためです。IPSecの設定自体にはまったく関係ありません。

R1の拠点内には192.168.1.0/24のネットワークがあります。また、R2の拠点内には192.168.2.0/24のネットワークがあります。R1、R2をVPNゲートウェイとして拠点間の通信のパケットをIPSecで暗号化します。また、インターネットへ接続するためにR1、R2でNATによって拠点内のプライベートアドレスをISPに接続しているグローバルアドレスに変換できるようにしています。なお、インターネットへ通信確認は150.1.1.100のIPアドレスで行うものとします。

設定概要

R1、R2で下記の設定を行っています。

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 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
!
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.0.0 0.0.255.255
!
route-map NO_NAT deny 10
 match ip address 100
!
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
!
route-map NO_NAT deny 10
 match ip address 100
!
route-map NO_NAT permit 100

トラブルの症状

R1やR2からはインターネットへの接続は問題なく行うことができます。R1からインターネット(150.1.1.100)へPingすると次のように成功します。

R1 インターネット(150.1.1.100)への通信

R1#ping 150.1.1.100

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 150.1.1.100, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 4/23/56 ms

ところが、R1とR2の拠点間のIPSecの通信ができません。

R1 拠点間の通信

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 0 percent (0/5)

IPSec SAを確認すると、R1とR2間でIPSec SAが確立できていないようです。

R1 show crypto ipsec sa

R1#show crypto ipsec sa

interface: FastEthernet0/0.101
    Crypto map tag: IPSEC, local addr 100.1.1.1

   protected vrf: (none)
   local  ident (addr/mask/prot/port): (192.168.1.0/255.255.255.0/0/0)
   remote ident (addr/mask/prot/port): (192.168.0.0/255.255.0.0/0/0)
   current_peer 100.2.2.2 port 500
     PERMIT, flags={origin_is_acl,}
    #pkts encaps: 0, #pkts encrypt: 0, #pkts digest: 0
    #pkts decaps: 0, #pkts decrypt: 0, #pkts verify: 0
    #pkts compressed: 0, #pkts decompressed: 0
    #pkts not compressed: 0, #pkts compr. failed: 0
    #pkts not decompressed: 0, #pkts decompress failed: 0
    #send errors 10, #recv errors 0

     local crypto endpt.: 100.1.1.1, remote crypto endpt.: 100.2.2.2
     path mtu 1500, ip mtu 1500, ip mtu idb FastEthernet0/0.101
     current outbound spi: 0x0(0)

     inbound esp sas:

     inbound ah sas:

     inbound pcp sas:

     outbound esp sas:

     outbound ah sas:

     outbound pcp sas:

IPSec SAは確立できていないのですが、ISAKAMP SAは確立できています。

R1 show crypto isakmp sa

R1#show crypto isakmp sa
dst             src             state          conn-id slot status
100.2.2.2       100.1.1.1       QM_IDLE              3    0 ACTIVE

問題

  • 拠点間の通信ができない原因はなんですか?
  • これを解決するためには、R1でどのように設定を変更すればよいですか?

解答

拠点間の通信ができない原因はなんですか?

R1のIPSecで暗号化する対象パケットを決める暗号ACLの設定が間違っているため。

これを解決するためには、R1でどのように設定を変更すればよいですか?

R1

no access-list 100
access-list 100 permit ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255

ワンポイント

  • IPSecで暗号化する対象パケットを指定するアクセスリストは、ミラーACLになることに注意!

解説

IPSecで暗号化する対象パケットは、拡張アクセスリストで指定します。このアクセスリストを特に暗号ACLと呼びます。暗号ACLは、対向のVPNゲートウェイ同士で送信元アドレスと送信先アドレスが反転したアクセスリストになります。

具体的に今回のネットワーク構成で考えてみましょう。

R1から見るとIPSecで暗号化するパケットは、以下のアドレスです。

送信先IPアドレス:192.168.2.0/24
送信元IPアドレス:192.168.1.0/24

一方、R2から見るとIPSecで暗号化するパケットは、以下のアドレスです。

送信先IPアドレス:192.168.1.0/24
送信元IPアドレス:192.168.2.0/24

これを拡張アクセスで指定します。R1とR2で指定するべき拡張アクセスリストは、次のようになります。

R1

access-list 100 permit ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255

R2

access-list 100 permit ip 192.168.2.0 0.0.0.255 192.168.1.0 0.0.0.255

このように暗号ACLは、対向のVPNゲートウェイで送信先と送信元を入れ替えたものになっていることが分かります。こういった送信先と送信元を入れ替えた関係のアクセスリストを「ミラーACL」と呼びます。

注意しなければいけないことは、正しくIPSec SAを確立するためにはミラーACLになっていなければいけないということです。R1の暗号ACLとして、次のように設定しています。

R1

access-list 100 permit ip 192.168.1.0 0.0.0.255 192.168.0.0 0.0.255.255

送信先アドレス部分のワイルドカードマスクを変更してより広いIPアドレスの範囲を指定しています。これでも192.168.1.0/24から192.168.2.0/24あてのパケットはIPSecで暗号化する対象パケットとなりますが、R2で設定している暗号ACLとミラーACLになっていません。ISAKMP SAの確立には問題ありませんが、暗号ACLがミラーACLになっていないので、R1-R2間でIPSec SAを正常に確立することができなくなっています。

解答のようにR1とR2の暗号ACLをミラーACLになるように設定を行えば、IPSec SAを正常に確立して拠点間の通信ができるようになります。