Table of Contents

解答

R1
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
no ip nat inside source list 1 interface FastEthernet0/0.101 overload
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
!
route-map NO_NAT deny 10
match ip address 100
!
route-map NO_NAT permit 100
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
R2
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
no ip nat inside source list 1 interface FastEthernet0/0.102 overload
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
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

解説

IPSec VPNの設定を行うときには、NATとの関連も注意する必要があります。拠点内のホストは基本的に、プライベートアドレスでアドレッシングされています。そのため、インターネットへ通信するときには、NATでプライベートアドレスとグローバルアドレスの変換が必要です。

IPSec VPNで拠点間の通信を行うパケット、つまりIPSecで暗号化するパケットに対しては、NATの変換をしてはいけません。

IPSec02.jpg
図 IPSec VPNとNAT

もし、IPSecで暗号化するパケットをNAT変換すると、次のような問題点が出てきます。

  • ルーティングできない
  • IPSecで暗号化するべきパケットが暗号化されなくなる

拠点内はプライベートアドレスでアドレッシングされています。拠点間の通信なのにNATでグローバルアドレス変換をしてしまうと、ルーティングがうまくできなくなる可能性があります。
また、IPSecで暗号化する対象のパケットをcrypto map内のアクセスリストで指定します。拠点間の通信なのにNATでアドレス変換してしまうと、crypto mapのアクセスリストに一致しなくなります。つまり、IPSecで暗号化するべきパケットなのに暗号化されずにそのままインターネットへ転送されることになります。

今回のトラブルについては、たとえ拠点間の通信のパケットをNAT変換してしまってもルーティングは大丈夫です。R1、R2ではデフォルトルートがあるからです。ですが、crypto map内のアクセスリストに一致しなくなり、暗号化せずにインターネットへ転送されてしまいます。拠点間の通信のパケットは、送信先IPアドレスとしてプライベートアドレスが指定されています。これをそのままインターネットに転送しても、当然、ISPでルーティングしません。

解決するためには、NATの設定を変更します。
R1、R2のNATの設定を振り返ります。すると、送信元IPアドレスがそれぞれの拠点内のアドレスになっているパケットをすべてアドレス変換の対象としています。

R1 NAT設定抜粋
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ip nat inside source list 1 interface FastEthernet0/0.101 overload
!
access-list 1 permit 192.168.1.0 0.0.0.255
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

この設定を変更して、拠点間の通信はNATによるアドレス変換の対象から除外します。このために、新しく拡張アクセスリストを作ってもいいのですが、crypto map内でIPSec化対象パケットを指定する拡張アクセスリストがすでにあります。これを流用してルートマップを使って次のように設定できます。

R1 NAT設定の変更
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
no ip nat inside source list 1 interface FastEthernet0/0.101 overload
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
!
route-map NO_NAT deny 10
match ip address 100
!
route-map NO_NAT permit 100
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

アクセスリスト100は、crypto mapで適用しているIPSec化対象パケットを指定する拡張アクセスリストです。IPSecで暗号化するパケットはNATの変換対象からはずすために、ルートマップ「NO_NAT」を作っています。NO_NATのシーケンス10のmatch条件でアクセスリスト100を関連づけて、これをdeny、つまりNATの変換対象からはずすようにしています。そして、シーケンス100ではそれ以外のすべてのパケットをNATの変換対象にしています。このルートマップ「NO_NAT」をip nat inside sourceコマンドで適用しています。R2でも、R1と同様に拠点間の通信、つまりIPSecで暗号化する対象パケットをNAT変換の対象からはずす設定を行います。

IPSec03.jpg
図 R1でのNAT設定変更のまとめ

このようにNATの設定を変更すると、インターネットへの通信も拠点間の通信もすべて問題なく行うことができます。

R1 インターネット、拠点間の通信の確認とIPSec SA
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
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/25/64 ms
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 100 percent (5/5), round-trip min/avg/max = 8/28/72 ms
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.2.0/255.255.255.0/0/0)
current_peer 100.2.2.2 port 500
PERMIT, flags={origin_is_acl,}
#pkts encaps: 10, #pkts encrypt: 10, #pkts digest: 10
#pkts decaps: 10, #pkts decrypt: 10, #pkts verify: 10
#pkts compressed: 0, #pkts decompressed: 0
#pkts not compressed: 0, #pkts compr. failed: 0
#pkts not decompressed: 0, #pkts decompress failed: 0
#send errors 5, #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: 0x86F25C31(2264030257)
inbound esp sas:
spi: 0xAE57D550(2924991824)
transform: esp-3des esp-sha-hmac ,
in use settings ={Tunnel, }
conn id: 2001, flow_id: SW:1, crypto map: IPSEC
sa timing: remaining key lifetime (k/sec): (4553498/3580)
IV size: 8 bytes
replay detection support: Y
Status: ACTIVE
inbound ah sas:
inbound pcp sas:
outbound esp sas:
spi: 0x86F25C31(2264030257)
transform: esp-3des esp-sha-hmac ,
in use settings ={Tunnel, }
conn id: 2002, flow_id: SW:2, crypto map: IPSEC
sa timing: remaining key lifetime (k/sec): (4553498/3579)
IV size: 8 bytes
replay detection support: Y
Status: ACTIVE
outbound ah sas:
outbound pcp sas:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

関連記事