目次
概要
IPSecで暗号化するパケットに対するNATのアドレス変換について、設定ミスの切り分けと修正を行います。
ネットワーク構成
次のネットワーク構成で、IPSec-VPNにより拠点間の通信を行いたいと考えています。
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 list 1 interface FastEthernet0/0.101 overload ! access-list 1 permit 192.168.1.0 0.0.0.255 access-list 100 permit ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255
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 list 1 interface FastEthernet0/0.102 overload ! access-list 1 permit 192.168.2.0 0.0.0.255 access-list 100 permit ip 192.168.2.0 0.0.0.255 192.168.1.0 0.0.0.255
トラブルの症状
R1やR2からはインターネットへの接続は問題なく行うことができます。R1からインターネット(150.1.1.100)へPingすると次のように成功します。
R1 インターネット(150.1.1.100)への通信
R1#ping 150.1.1.100 source 192.168.1.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 150.1.1.100, 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 = 1/23/64 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 U.U.U 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.2.0/255.255.255.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 0, #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:
問題
- 拠点間の通信ができない原因はなんですか?
- これを解決するためには、R1とR2でどのように設定を変更すればよいですか?
解答
拠点間の通信ができない原因はなんですか?
拠点間の通信のパケットがNAT変換されてしまい、暗号ACLに一致しないためIPSecで暗号化/カプセル化されていないから。
これを解決するためには、R1とR2でどのように設定を変更すればよいですか?
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の変換をしてはいけません。
もし、IPSecで暗号化するパケットをNAT変換すると、次のような問題点が出てきます。
- ルーティングできない
- IPSecで暗号化するべきパケットが暗号化されなくなる
拠点内はプライベートアドレスでアドレッシングされています。拠点間の通信なのにNATでグローバルアドレス変換をしてしまうと、ルーティングがうまくできなくなる可能性があります。また、IPSecで暗号化する対象のパケットをcrypto map内のアクセスリスト(暗号ACL)で指定します。拠点間の通信なのに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設定の変更 拠点間の通信は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変換の対象からはずす設定を行います。
このように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:
インターネットVPN
- インターネットVPNの概要
- インターネットへの接続形態
- VPNサービスとは?
- NordVPN ~セキュアなVPNサービスを手軽に利用しよう~
- IPSecの概要
- IKE ~SAの生成と管理~
- IPSec サイト間VPNの動作
- IPSec サイト間VPNの設定 ~crypto mapによる設定~
- IPSec サイト間VPNの設定例
- [演習]サイトツーサイトIPSec-VPN(crypto map)
- [演習]サイトツーサイトIPSec-VPN(VTI)
- [演習]サイトツーサイトIPSec-VPN(VTI) トラブルシューティング
- IPSec 設定ミスの切り分けと修正 Part1
- IPSec 設定ミスの切り分けと修正 Part2
- IPSec 設定ミスの切り分けと修正 Part3
- DMVPNの設定例
- DMVPN設定演習[Cisco] NHRP Phase1
- DMVPN設定演習[Cisco] NHRP Phase2
- DMVPN設定演習[Cisco] NHRP Phase3
- SSL-VPNの実現方式
- SSL-VPN(クライアントレス)の設定例 (Cisco)