NSX-T IPsec VPN – Route Base

今回はNSX-TのルートベースのIPsec VPNの検証証跡をまとめました。

 

概要

GREについて

GRE(Generic Routing Encapsulation)は離れた拠点間を接続する仮想的な回線を構築するためのプロトコルになります。また、このような技術をトンネリングと呼びます。

下図はGREによって作成された仮想的な回線で接続された拠点間の通信の様子になります。R1が対向拠点宛のパケットを受信した場合、パケットをGREヘッダとIPヘッダでカプセル化し、R2に対して転送します。

 

以下はGREによって作成された仮想的な回線上を転送されるパケットのキャプチャになります。元々のパケットがGREヘッダとIPヘッダによってカプセル化されていることが確認できます。

 

GREを使用して仮想的な回線を確立するルータにはトンネルインターフェイスと呼ばれる特殊なインターフェイスが存在します。トンネルインターフェイスには通常のインターフェイスと同様にIPアドレスが割り当てられます。また、GREによるカプセル化の際に付加するIPヘッダの送信元IPアドレスと送信先IPアドレスの情報も割り当てられます。

 

以下はR1のトンネルインターフェイスの設定になります。GREによるカプセル化の際に付加するIPヘッダの送信元IPアドレスと送信先IPアドレスの情報が設定されていることが確認できます。

R1

interface Tunnel0
 ip address 172.16.1.1 255.255.255.0  <--- トンネルインターフェイス自身のIPアドレス
 tunnel source 20.1.1.1               <--- カプセル化によって付加されるIPヘッダの送信元IPアドレス
 tunnel destination 20.2.2.2          <--- カプセル化によって付加されるIPヘッダの送信先IPアドレス
            

 

各ルータでは、ルーティングテーブルを使用して、どのトラフィックをGREの仮想的な回線に転送するかを制御します。
下図の場合、R1において、10.2.2.0/24宛のトラフィックをGREの仮想的な回線で転送させるために、10.2.2.0/24のネクストホップに対向拠点のR2のトンネルインターフェイスのアドレスである172.16.1.2を指定します。

 

これにより、R1は10.2.2.0/24宛のパケットをトンネルインターフェイスから転送、すなわち、GREの仮想的な回線を使用して転送できます。トンネルインターフェイスから転送されるパケットにはGREヘッダとIPヘッダが付加されます。

 

 

GREの大きなメリットとして、GREの仮想的な回線上でOSPF等のルーティングプロトコルが動作可能です。これにより、物理的に離れた拠点間でOSPF等を使用してルート情報が交換できます。

 

補足として、以下はGREの仮想的な回線上で、R1がR2に送信したOSPFパケットのキャプチャになります。

 

IPsec VPNのポリシーベースとルートベースについて

ポリシーベースでは、送信元/送信先アドレスを条件に使用して暗号化対象のトラフィックを指定します。もし、受信したパケットが暗号化対象に含まれている場合、パケットを暗号化し、ESPヘッダ、IPヘッダを付加して、転送します。

 

一方、ルートベースでは、暗号化対象のトラフィックの条件を明示的に指定せずに、ルーティングテーブルを使用して暗号化対象のトラフィックを指定します。

ルートベースではIPsec VPNを確立するルータでGRE用のトンネルインターフェイスを作成します。このGRE用のトンネルインターフェイスでは転送される全トラフィックをIPsec VPNで暗号化します。
そして、ルーティングテーブルにおいて、ネクストホップがGRE用のトンネルインターフェイスとなっている宛先への通信がIPsec VPNで暗号化されます。

 

検証結果

検証内容、構成

Tier-1 GWでSegment 1を収容します。
Tier-1 GWとTier-0 GWを接続します。
NSX EdgeにTier-0 GWのSRを配置し、物理ネットワークとNSX-Tの仮想ネットワークを接続します。

Tier-0 GWのSRとR2間でルートベースのIPsec VPNを確立し、10.1.1.0/24と20.2.2.0/24間の通信をESPで暗号化します。
IKEにばバージョン2のIKEv2を使用します。

 

ネットワーク機器のCLIの設定


interface GigabitEthernet2
 ip address 10.1.1.1 255.255.255.0
!
ip route 0.0.0.0 0.0.0.0 10.1.1.254
            


crypto ikev2 proposal IKEV2_PROPOSAL
 encryption aes-cbc-128
 integrity sha256
 group 14
!
crypto ikev2 policy IKEV2_POLICY
 proposal IKEV2_PROPOSAL
!
crypto ikev2 keyring IKEV2_KEYRING
 peer PEER_BLOCK
  address 10.2.2.1
  pre-shared-key Zaq12wsx!@
!
crypto ikev2 profile IKEV2_PROFILE
 match identity remote address 10.2.2.1 255.255.255.255
 identity local address 20.1.1.100
 authentication remote pre-share
 authentication local pre-share
 keyring local IKEV2_KEYRING
!
crypto ipsec transform-set TRANSFORM_SET esp-gcm
 mode tunnel
!
crypto ipsec profile IPSEC_PROFILE
 set transform-set TRANSFORM_SET
 set ikev2-profile IKEV2_PROFILE
 responder-only
!
interface Loopback0
 ip address 20.2.2.2 255.255.255.0
!
interface Tunnel0
 ip address 192.168.1.100 255.255.255.0
 tunnel source GigabitEthernet2
 tunnel mode ipsec ipv4
 tunnel destination 10.2.2.1
 tunnel protection ipsec profile IPSEC_PROFILE
!
interface GigabitEthernet2
 ip address 20.1.1.100 255.255.255.0
!
ip route 0.0.0.0 0.0.0.0 20.1.1.1
ip route 10.1.1.0 255.255.255.0 192.168.1.1
            

 

IPsecの設定

VPNサービスの定義

最初にIPsec用のVPNサービスを定義します。

 

ローカルエンドポイントの定義

次に、ローカルエンドポイントを定義します。

ここで指定するIPアドレスはGREによるカプセル化の際に付加されるIPヘッダの送信元アドレスになります。

 

ルートベースのIPsecセッションの定義

最後にルートベースのIPsecセッションを定義し、先程作成したVPNサービスとローカルエンドポイントを関連付けます。

トンネルインターフェイスにはGRE用のトンネルインターフェイスに割り当てるIPアドレスを指定します。

 

スタティックルートの設定

R2側の20.2.2.0/24宛のスタティックルートを設定します。

ネクストホップアドレスにはR2のトンネルインターフェイスのアドレス、スコープにはルートベースのIPsecセッションを指定します。

 

状態確認

Tier-0 GWのSRのインターフェイスの確認

Tier-0 GWのSRのインターフェイスを見ると、ローカルエンドポイントで指定したアドレスが割り当てられたLoopbackインターフェイスと、GRE用のVTI(Virtual Tunnel Interface)が存在することが確認できます。

NSX Edge1

edge1(tier0_sr)> get interfaces
Logical Router
UUID                                   VRF    LR-ID  Name          Type
f6d536a6-0edc-459c-9fff-bef1a717f5a7   3      4099   SR-Tier-0_GW  SERVICE_ROUTER_TIER0
Interfaces (IPv6 DAD Status A-Assigned, D-Duplicate, T-Tentative)
    Interface     : 9a13b34f-c874-4da6-b7c1-daf159d59cfb
    Ifuid         : 315
    Mode          : vti
    Port-type     : vti
    IP/Mask       : 192.168.1.1/24
    Urpf-mode     : PORT_CHECK
    Admin         : up
    Op_state      : up
    .
    <一部省略>
    .
    Interface     : 52a86792-791f-4d32-b826-e40a70efb6e4
    Ifuid         : 276
    Name          : Ext_Uplink1
    Fwd-mode      : IPV4_ONLY
    Internal name : uplink-276
    Mode          : lif
    Port-type     : uplink
    IP/Mask       : 20.1.1.1/24
    MAC           : 00:50:56:b9:a7:b2
    VLAN          : None
    Access-VLAN   : None
    LS port       : fae3f22b-3ff0-4142-9f50-7e8f5a209c74
    Urpf-mode     : STRICT_MODE
    DAD-mode      : LOOSE
    RA-mode       : SLAAC_DNS_TRHOUGH_RA(M=0, O=0)
    Admin         : up
    Op_state      : up
    MTU           : 1500

    Interface     : 24a9de12-98e9-4d65-927a-da5d756769f0
    Ifuid         : 283
    Mode          : loopback
    Port-type     : loopback
    IP/Mask       : 10.2.2.1/32;127.0.0.1/8;::1/128(NA)

 

Tier-0 GWのSRのルーティングテーブルの確認

Tier-0 GWのSRのルーティングを見ると、20.2.2.0/24のネクストホップがGRE用のトンネルインターフェイスのVTIであることが確認できます。

NSX Edge1

edge1(tier0_sr)> get route

Flags: t0c - Tier0-Connected, t0s - Tier0-Static, b - BGP,
t0n - Tier0-NAT, t1s - Tier1-Static, t1c - Tier1-Connected,
t1n: Tier1-NAT, t1l: Tier1-LB VIP, t1ls: Tier1-LB SNAT,
t1d: Tier1-DNS FORWARDER, t1ipsec: Tier1-IPSec, isr: Inter-SR,
> - selected route, * - FIB route

Total number of routes: 9

t1c> * 10.1.1.0/24 [3/0] via 100.64.176.1, linked-280, 01w1d06h
t0c> * 10.2.2.1/32 is directly connected, loopback-283, 01w2d19h
t0c> * 20.1.1.0/24 is directly connected, uplink-276, 01w4d01h
t0s> * 20.2.2.0/24 [1/0] via 192.168.1.100, vti-315, 00:04:38
t0c> * 100.64.176.0/31 is directly connected, linked-280, 01w1d06h
t0c> * 169.254.0.0/24 is directly connected, downlink-274, 01w1d06h
t0c> * 192.168.1.0/24 is directly connected, vti-315, 00:04:38
t0c> * fcd4:ae0b:c612:b800::/64 is directly connected, linked-280, 01w1d06h
t0c> * fe80::/64 is directly connected, linked-280, 01w1d06h
            

 

Tier-0 GWのSRのIPsec VPNの設定/状態確認

IKE SAの状態を見ると、ルートベースのIPsec VPNであることが確認できます。

NSX Edge1

edge1> get ipsecvpn ikesa
    Total Number of IKE SAs: 1

    IKE Version              : IKEv2
    IKE Status               : Up
    IKE Session ID           : 8193
    Session Name             : Tunnel-74b25636-2b334a29-bc07ff96-b765b2a1
    Session Type             : Route Based

    IKE SPI Initiator        : 0xeaefe0f186a57bbf
    IKE SPI Responder        : 0xdc70d843bce4d1e1
    Role                     : Initiator

    Number of Child SA Pairs : 1
    Created Timestamp        : 2020-09-13 07:51:18
    IKE SA Uptime            : 208 sec
    IKE SA Lifetime          : 86400 sec
    DPD Probe Interval       : 60 sec

    IP Address:
      Local                  : 10.2.2.1
      Remote                 : 20.1.1.100

    Identity:
      Local                  : 10.2.2.1 (ipv4)
      Remote                 : 20.1.1.100 (ipv4)

    Algorithm:
      Encryption             : aes128-cbc
      Authentication         : hmac-sha256-128
      PRF                    : hmac-sha256
    DH Group                 : 14

    Authentication Method    : Pre-shared key
    ----------------------------------------
            

 

IPsec SAの状態を見ると、暗号化対象が全通信であることが確認できます。

NSX Edge1

edge1> get ipsecvpn ipsecsa
    Total Number of IPSec SA Pairs: 1

    Session ID               : 8193
    Created Timestamp        : 2020-09-13 07:51:17
    Local TS                 : ipv4(0.0.0.0-255.255.255.255)
    Remote TS                : ipv4(0.0.0.0-255.255.255.255)

    SPI In         : 0x4584e3ea         SPI Out        : 0xfb26f675
    Rule ID In     : 935451377          Rule ID Out    : 3082935025
    SA Uptime      : 212 sec            SA Lifetime    : 3600 sec
    Local Endpoint : 10.2.2.1           Remote Endpoint: 20.1.1.100

    Algorithm: aes128-gcm-16/none
    NAT-T: False,  ESN: False,  DF-Policy: Copy
    Anti-Replay Window Size: 960, Role: Initiator
    ----------------------------------------
            

 

疎通確認

R1の10.1.1.1からR2の20.2.2.2へPingを実施します。

 

R1の10.1.1.1からR2の20.2.2.2へのPingが成功していることが確認できます。

R1

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

コメント

タイトルとURLをコピーしました