今回は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アドレスの情報が設定されていることが確認できます。
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)が存在することが確認できます。
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であることが確認できます。
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であることが確認できます。
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の状態を見ると、暗号化対象が全通信であることが確認できます。
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#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
コメント