Cisco 機器と IPSec その4

今回は、 NAT-Traversalなやつです。 ルーターがespとかudp500とかudp4500を固定的に割り当ててくれなくても大丈夫なやつです。

この構成だと、Side-B 側がかならずinitiatorになります。 Side-Aから接続しにいっても500番ポートとか開いてませんので。

Site-A はグローバルIPアドレスを所持。 Site-B はグローバルIPアドレスを持った機器の配下にぶら下がっている機器がNAPTでインターネットに出られるような構成でSite-A - Site-B のIPSec Tunnelを張ります。

(SecmentA)Site-A[GlobalPv4Address] -- Internet -- [GlobalIPv4Address]Router[LocalIPv4Address] - [LocalIPv4AddressSite-B(SegmentB)

ここで Site-A ===tunnel=== Site-B でトンネルを張ってSegmentAとSegmentBの通信を行います。

(192.168.100.0/24)Site-A[200.0.0.2] -- [200.0.0.1]Router[192.168.10.1/24] - [DHCP]SiteB(192.168.200.0/24)

こんな感じとしましょう。

設定

Route

ip dhcp pool test
   network 192.168.10.0 255.255.255.0
   default-router 192.168.10.1
   lease 30

interface GigabitEthernet0/0/0
 ip address 192.168.10.1 255.255.255.0
 ip nat inside

interface GigabitEthernet0/0/1
 ip address 200.0.0.1 255.255.255.0
 ip nat outside

ip nat inside source list 10 interface FastEthernet0/1 overload
access-list 10 permit 192.168.10.0 0.0.0.255

Site-A

crypto isakmp policy 1
 encr aes
 authentication pre-share
 group 2

crypto isakmp key cisco address 200.0.0.1

crypto ipsec transform-set IPSEC-SET esp-aes esp-sha-hmac

crypto ipsec profile VTI-PROFILE
 set transform-set IPSEC-SET
 set pfs group2

interface Tunnel1
 ip unnumbered FastEthernet0/0
 ip ospf 1 area 0
 tunnel source FastEthernet0/0
 tunnel destination 200.0.0.1
 tunnel mode ipsec ipv4
 tunnel protection ipsec profile VTI-PROFILE

interface GigaibitEthernet 0/0/0
 ip address 200.0.0.2 255.255.255.0

interface GigabitEthernet 0/0/
 ip address 192.168.100.1 255.255.255.0
 ip ospf 1 area 0

Site-B

crypto isakmp policy 1
 encr aes
 authentication pre-share
 group 2

crypto isakmp key cisco address 200.0.0.2

crypto ipsec transform-set IPSEC esp-aes esp-sha-hmac

crypto ipsec profile VTI
 set transform-set IPSEC
 set pfs group2

interface Tunnel1
 ip unnumbered FastEthernet0/0
 ip ospf 1 area 0
 tunnel source FastEthernet0/0
 tunnel destination 200.0.0.2
 tunnel mode ipsec ipv4
 tunnel protection ipsec profile VTI

interface GigabitEthernet0/1
 ip address dhcp
interface GigabitEthernet0/2
 ip address 192.168.200.1 255.255.255.0
 ip ospf 1 area 0

実験

上記設定を見ると、Side-A側からみると、Side-B側の対向端末は特定できていないことに気づきます。

例えば下記のような設定を持つSide-B-2 みたいなのを用意したらどうなるのかという問題です。

Side-B-2

crypto isakmp policy 1
 encr aes
 authentication pre-share
 group 2

crypto isakmp key cisco address 200.0.0.2

crypto ipsec transform-set IPSEC esp-aes esp-sha-hmac

crypto ipsec profile VTI
 set transform-set IPSEC
 set pfs group2

interface Tunnel1
 ip unnumbered FastEthernet0/0
 ip ospf 1 area 0
 tunnel source FastEthernet0/0
 tunnel destination 200.0.0.2
 tunnel mode ipsec ipv4
 tunnel protection ipsec profile VTI

interface GigabitEthernet0/1
 ip address dhcp
interface GigabitEthernet0/2
 ip address 192.168.210.1 255.255.255.0
 ip ospf 1 area 0

試しに足してみましょう。

(SecmentA)Site-A[GlobalPv4Address]  -- Internet  -- [GlobalIPv4Address]Router[LocalIPv4Address] - [LocalIPv4AddressSite-B(SegmentB)
                                                                                                - [LocalIPv4AddressSite-B-2(SegmentC)

すると、 Routerでは

#sh ip nat translations
Pro Inside global      Inside local       Outside local      Outside global
udp 200.0.0.1:1        192.168.10.2:500   200.0.0.2:500      200.0.0.2:500
udp 200.0.0.1:4500     192.168.10.2:4500  200.0.0.2:4500     200.0.0.2:4500
udp 200.0.0.1:1024     192.168.10.3:4500  200.0.0.2:4500     200.0.0.2:4500

例えばこんなnatテーブルが出来上がります。

(10.2=Side-B, 10.3=side-B-2)

Side-A 側では

#sh ip ospf nei
Neighbor ID     Pri   State           Dead Time   Address         Interface
192.168.10.2      0   FULL/  -        00:00:30    192.168.10.2    Tunnel1

#sh ip ospf nei
Neighbor ID     Pri   State           Dead Time   Address         Interface
192.168.10.3      0   FULL/  -        00:00:37    192.168.10.4    Tunnel1

と、ospf のneighborが変わりました。

既にIPSecでつながっている状態でさらに割り込もうとすると、後から接続しにいったほうとIPSecを張り直します。 のでこのようなことに。

どうでもいいこと

ResponderをPaloaltoにしようとすると、Initiator 側のローカルIPアドレスを固定する必要があります。

Live Community - IPSec VPN Tunnel with NAT Traversal - Live Community

ResponderがCiscoであった場合に出ていた上記のような問題は起きないと考えてよさそうです。