レイヤ 2 拡張ネットワークを使用してワークロードを移行する

このページでは、レイヤ 2 VPN(L2VPN)を使用して、オンプレミス環境からプライベート クラウドまでレイヤ 2 ネットワークを拡張する方法について説明します。

レイヤ 2 ネットワークの L2VPN ベースの拡張は、オンプレミスの VMware 環境で、NSX ベースのネットワークの有無に関係なく機能します。オンプレミスのワークロードに NSX ベースのネットワークがない場合は、スタンドアロンの NSX Edge サービス ゲートウェイを使用します。

デプロイ シナリオ

L2VPN を使用してオンプレミス ネットワークを拡張するには、L2VPN サーバー(宛先 NSX-T Tier0 ルーター)と L2VPN クライアント(ソース スタンドアロン クライアント)を構成する必要があります。

このデプロイ シナリオでは、オンプレミス環境にプライベート クラウドを接続するには、サイト間 VPN トンネルを使用して、オンプレミス管理と vMotion のサブネットが、プライベート クラウド管理と vMotion のサブネットと通信できるようにします。この設定により、Cross vCenter vMotion(xVC-vMotion)が有効になります。NSX-T Tier0 ルーターをプライベート クラウドの L2VPN サーバーとしてデプロイします。

オンプレミス環境に NSX スタンドアロン Edge を L2VPN クライアントとしてデプロイし、L2VPN サーバーとペア設定します。各サイドに GRE トンネル エンドポイントを作成し、オンプレミスのレイヤ 2 ネットワークをプライベート クラウドに「拡張」するように構成します。

L2 VPN を使用した移行の詳細については、仮想プライベート ネットワークをご覧ください。

前提条件

ソリューションをデプロイして構成する前に、次のことを確認します。

  • オンプレミス環境とプライベート クラウド データセンターを接続するための、サイト間 VPN が設定されている。
  • オンプレミスの vSphere のバージョンは、6.7U1 以降または 6.5P03 以降である。
  • オンプレミスの vSphere ライセンスは、エンタープライズ プラスのレベルである(vSphere 分散スイッチの場合)。
  • プライベート クラウドに拡張するワークロードのレイヤ 2 ネットワークを特定済みである。
  • L2VPN クライアント アプライアンスをデプロイするために、オンプレミス環境でレイヤ 2 ネットワークを特定済みである。
  • プライベート クラウドがすでに作成されている。
  • スタンドアロンの NSX-T Edge アプライアンスのバージョンは、プライベート クラウド環境で使用される NSX-T Manager バージョン(NSX-T 2.3.0)と互換性がある。
  • トランク ポートグループがオンプレミス vCenter にすでに作成されている。
  • パブリック IP アドレスは、NSX-T スタンドアロン クライアント アップリンク IP アドレス用に予約されており、1:1 NAT が 2 つのアドレス間での変換のために存在する。
  • オンプレミス DNS サーバーで、cs-needs-review ドメインがプライベート クラウド DNS サーバーを指すように DNS 転送が設定されている。
  • vMotion が 2 つのサイトで動作するために必要なため、RTT レイテンシは 150 ミリ秒以下である。

制限事項と考慮事項

次の表で、サポートされている vSphere のバージョンとネットワーク アダプター タイプを一覧表示します。

vSphere のバージョン ソース vSwitch タイプ 仮想 NIC ドライバ ターゲット vSwitch タイプ サポート対象
すべて DVS すべて DVS
vSphere 6.7UI 以降、6.5P03 以降 DVS VMXNET3 N-VDS
vSphere 6.7UI 以降、6.5P03 以降 DVS E1000 N-VDS VMware ではサポートされていません。
vSphere 6.7UI または 6.5P03、NSX-V または NSX-T2.2 以前、6.5P03 以降のバージョン すべて すべて N-VDS VMware ではサポートされていません。

VMware NSX-T 2.3 リリースの現時点:

  • L2VPN を介してオンプレミスに拡張されたプライベート クラウド側の論理スイッチを同時にルーティングすることはできません。拡張された論理スイッチは、論理ルーターに接続できません。
  • L2VPN とルートベースの IPSEC VPN は、API 呼び出しの使用でのみ構成できます。

詳細については、バーチャル プライベート ネットワークをご覧ください。

L2 VPN デプロイの例

次の表に、L2 VPN デプロイの仕様の例を示します。

スタンドアロン ESG(L2 VPN クライアント)がデプロイされているオンプレミス ネットワーク

項目
ネットワーク名 MGMT_NET_VLAN469
VLAN 469
CIDR 10.250.0.0/24
スタンドアロン Edge アプライアンス IP アドレス 10.250.0.111
スタンドアロン Edge アプライアンス NAT IP アドレス 192.227.85.167

拡張されるオンプレミス ネットワーク

項目
VLAN 472
CIDR 10.250.3.0/24

NSX-T Tier0 ルーター(L2 VPN サーバー)のプライベート クラウド IP スキーマ

項目
ループバック インターフェース 192.168.254.254/32
トンネル インターフェース 5.5.5.1/29
論理スイッチ(拡張) Stretch_LS
ループバック インターフェース(NAT IP アドレス) 104.40.21.81

拡張ネットワークにマッピングされるプライベート クラウド ネットワーク

項目
VLAN 712
CIDR 10.200.15.0/24

L2VPN に必要な論理ルーター ID を取得する

次の手順は、IPsec と L2VPN サービスの Tier0 DR 論理ルーター インスタンスの論理ルーター ID を取得する方法を示しています。後で L2VPN を実装する際に、論理ルーター ID を使用します。

  1. NSX-T Manager にログインし、[Networking] > [Routers] > [Provider-LR] > [Overview] と選択します。[High Availability Mode] で、[Active-Standby] を選択します。この操作を行うと、ポップアップ ウィンドウが開き、Tier0 ルーターが現在アクティブな Edge VM が表示されます。
  2. [Fabric] > [Nodes] > [Edge] を選択します。前の手順で特定したアクティブな Edge VM(Edge VM1)の管理 IP アドレスをメモしておきます。
  3. Edge VM の管理 IP アドレスへの SSH セッションを開きます。get-logical-router コマンドを実行します。
  4. エントリ DR-Provider-LR が表示されない場合は、次の手順を行います。
    • オーバーレイ対応論理スイッチを 2 つ作成します。論理スイッチの 1 つは、移行されたワークロードが存在するオンプレミスに拡張されます。もう 1 つの論理スイッチはダミースイッチです。詳細については、論理スイッチを作成するをご覧ください。
    • リンクのローカル IP アドレス、またはオンプレミスやプライベート クラウドからの重複しないサブネットを使用して、Tier1 ルーターにダミースイッチを接続します。詳細については、Tier-1 論理ルーターのダウンリンク ポートの追加をご覧ください。
    • Edge VM の SSH セッションで、get logical-router コマンドを再度実行します。出力には、DR-Provider-LR 論理ルーターの UUID が表示されます。UUID をメモしておきます。これは、L2VPN を構成するときに必要になります。

L2VPN に必要な論理スイッチ ID を取得する

  1. NSX-T Manager にログインします。
  2. [Networking] > [Switching] > [Switches] > [Overview] の順に選択します。
  3. ストレッチ論理スイッチの UUID をメモしておきます。これは、L2VPN を構成するときに必要になります。

L2VPN のルーティングとセキュリティに関する考慮事項

NSX-T Tier0 ルーターと NSX スタンドアロン Edge クライアントの間に IPsec ルートベース VPN を確立するには、NSX-T Tier0 ルーターのループバック インターフェースが、UDP 500/4500 を介したオンプレミス NSX スタンドアロン クライアントのパブリック IP アドレスと通信できる必要があります。

IPsec 用の UDP 500/4500 を許可する

  1. Google Cloud VMware Engine ポータルで NSX-T Tier0 ループバック インターフェースのパブリック IP アドレスを作成します。
  2. UDP 500/ 4500 の受信トラフィックを許可するステートフル ルールで、ファイアウォール テーブルを作成し、NSX-T HostTransport サブネットにファイアウォール テーブルを接続します。
  1. ループバック インターフェース ネットワークの null ルートを作成します。
    • NSX-T Manager にログインし、[Networking] > [Routing] > [Routers]> [Provider-LR] > [Routing] > [Static routes] を選択します。
    • [Add] をクリックします。
    • [Network] で、ループバック インターフェースの IP アドレスを指定します。
    • [Next Hops] で、[Add] をクリックし、ネクストホップに Null を指定します。[Admin distance] はデフォルト値の 1 のままにします。
  2. IP プレフィックス リストを作成します。
    • NSX-T Manager にログインし、[Networking] > [Routing] > [Routers]> [Provider-LR] > [Routing] > [IP prefix lists] を選択します。
    • [Add] をクリックします。
    • リストを識別する名前を入力します。
    • [Prefixes] で [Add] を 2 回クリックします。
    • 1 行目の [Network] に「0.0.0.0/0」、[Action] に「Deny」と入力します。
    • 2 行目の [Network] で [Any] を選択し、[Action] で [Permit] を選択します。
  3. IP プレフィックス リストを両方の BGP ネイバー(TOR)にアタッチします。IP プレフィックス リストを BGP ネイバーにアタッチすると、デフォルト ルートが BGP で TOR スイッチにアドバタイズされなくなります。ただし、null ルートを含む他のルートは、ループバック インターフェース IP アドレスを TOR スイッチにアドバタイズします。
  4. NSX-T Manager にログインし、[Networking] > [Routing] > [Routers] > [Provider-LR] > [Routing] > [BGP] > [Neighbors] を選択します。最初のネイバーを選択します。
    • [Routers] > [Address families] をクリックします。
    • IPv4 ファミリーの場合は、[Out filter] 列を編集して、作成した IP プレフィックス リストを選択します。[Save] をクリックします。2 つ目のネイバーについてもこの手順を繰り返します。
  5. null 静的ルートを BGP に再配布します。ループバック インターフェース ルートをアンダーレイにアドバタイズするには、null 静的ルートを BGP に再配布する必要があります。
    • NSX-T Manager にログインし、[Networking] > [Routing] > [Routers] > [Provider-LR] > [Routing] > [Route redistribution] > [Neighbors] を選択します。
    • [Provider-LR-route_redistribution] を選択し、[Edit] をクリックします。
    • [Static] チェックボックスをオンにして、[Save] をクリックします。

NSX-T Tier0 ルーターでルートベースの VPN を構成する

次のテンプレートを使用して、NSX-T Tier0 ルーターでルートベースの VPN を構成するための詳細を指定します。各 POST 呼び出しの UUID は、後続の POST 呼び出しで必要になります。

ループバックの IP アドレスと L2VPN のトンネル インターフェースは、一意である必要があり、オンプレミス ネットワークやプライベート クラウド ネットワークと重複しないようにする必要があります。ループバック インターフェース ネットワークは常に /32 である必要があります。

Loopback interface ip : 192.168.254.254/32
Tunnel interface subnet : 5.5.5.0/29
Logical-router ID : UUID of Tier0 DR logical router obtained in section "Steps to fetch Logical-Router ID needed for L2VPN"
Logical-switch ID(Stretch) : UUID of Stretch Logical Switch obtained earlier
IPSec Service ID :
IKE profile ID :
DPD profile ID :
Tunnel Profile ID :
Local-endpoint ID :
Peer end-point ID :
IPSec VPN session ID (route-based) :
L2VPN service ID :
L2VPN session ID :
Logical-Port ID :
Peer Code :

次のすべての API 呼び出しでは、IP アドレスを NSX-T Manager の IP アドレスに置き換えます。これらの API 呼び出しはすべて、POSTMAN クライアントから、または curl コマンドを使用して実行できます。

論理ルーターで IPSec VPN サービスを有効にする

POST   https://192.168.110.201/api/v1/vpn/ipsec/services/
{
"resource_type": "IPSecVPNService",
"description": "Manage VPN service",
"display_name": "IPSec VPN service",
"logical_router_id": "Logical-router ID",
"ike_log_level": "INFO",
"enabled": true
}

プロファイルの作成: IKE

POST https://192.168.110.201/api/v1/vpn/ipsec/ike-profiles

{
"resource_type": "IPSecVPNIKEProfile",
"description": "IKEProfile for siteA",
"display_name": "IKEProfile siteA",
"encryption_algorithms": ["AES_128"],
"ike_version": "IKE_V2",
"digest_algorithms": ["SHA2_256"],
"sa_life_time":21600,
"dh_groups": ["GROUP14"]
}

プロファイルの作成: DPO

POST  https://192.168.110.201/api/v1/vpn/ipsec/dpd-profiles

{
"resource_type": "IPSecVPNDPDProfile",
"display_name": "nsx-default-dpd-profile",
"enabled": true
}

プロファイルの作成: トンネル

POST  https://192.168.110.201/api/v1/vpn/ipsec/tunnel-profiles

{
"resource_type": "IPSecVPNTunnelProfile",
"display_name": "nsx-default-tunnel-profile",
"enable_perfect_forward_secrecy": true,
"encryption_algorithms": ["AES_GCM_128"],
"digest_algorithms": [],
"sa_life_time":3600,
"dh_groups": ["GROUP14"],
"encapsulation_mode": "TUNNEL_MODE",
"transform_protocol": "ESP",
"df_policy": "COPY"
}

ローカル エンドポイントの作成

{
"resource_type": "IPSecVPNLocalEndpoint",
"description": "Local endpoint",
"display_name": "Local endpoint",
"local_id": "",
"ipsec_vpn_service_id": {
"target_id": "IPSec VPN service ID"},
"local_address": "",
"trust_ca_ids": [],
"trust_crl_ids": []
}

ピア エンドポイントの作成

POST https://192.168.110.201/api/v1/vpn/ipsec/peer-endpoints

{
"resource_type": "IPSecVPNPeerEndpoint",
"description": "Peer endpoint for site B",
"display_name": "Peer endpoint for site B",
"connection_initiation_mode": "INITIATOR",
"authentication_mode": "PSK",
"ipsec_tunnel_profile_id": "IPSec Tunnel profile ID",
"dpd_profile_id": "DPD profile ID",
"psk":"nsx",
"ike_profile_id": "IKE profile ID",
"peer_address": "",
"peer_id": ""
}

ルートベースの VPN セッションの作成

POST :  https://192.168.110.201/api/v1/vpn/ipsec/sessions

{
"resource_type": "RouteBasedIPSecVPNSession",
"peer_endpoint_id": "Peer Endpoint ID",
"ipsec_vpn_service_id": "IPSec VPN service ID",
"local_endpoint_id": "Local Endpoint ID",
"enabled": true,
"tunnel_ports": [
{
"ip_subnets": [
{
"ip_addresses": [
 "5.5.5.1"
],
"prefix_length": 24
}
  ]
}
]
}

NSX-T Tier0 ルーターへの L2VPN の構成

各 POST 呼び出し後に、次の情報を指定します。この ID は、後続の POST 呼び出しで必要になります。

L2VPN Service ID:
L2VPN Session ID:
Logical Port ID:

L2VPN サービスの作成

次の GET コマンドの出力は、構成が完了していないため、空のままになります。

GET : https://192.168.110.201/api/v1/vpn/l2vpn/services

次の POST コマンドの場合、論理ルーター ID は、前に取得した Tier0 DR 論理ルーターの UUID です。

POST : https://192.168.110.201/api/v1/vpn/l2vpn/services

{
"logical_router_id": "Logical Router ID",
"enable_full_mesh" : true
}

L2VPN セッションの作成

次の POST コマンドの場合、L2VPN サービス ID は先ほど取得した ID で、IPSec VPN セッション ID は前のセクションで取得した ID です。

POST: https://192.168.110.201/api/v1/vpn/l2vpn/sessions

{
"l2vpn_service_id" : "L2VPN service ID",
"transport_tunnels" : [
{
"target_id" : "IPSec VPN session ID"
}
]
}

これらの呼び出しによって GRE トンネル エンドポイントが作成されます。ステータスを確認するには、次のコマンドを実行します。

edge-2> get tunnel-port
Tunnel      : 44648dae-8566-5bc9-a065-b1c4e5c3e03f
IFUID       : 328
LOCAL       : 169.254.64.1
REMOTE      : 169.254.64.2
ENCAP       : GRE

Tunnel      : cf950ca1-5cf8-5438-9b1a-d2c8c8e7229b
IFUID       : 318
LOCAL       : 192.168.140.155
REMOTE      : 192.168.140.152
ENCAP       : GENEVE

Tunnel      : 63639321-87c5-529e-8a61-92c1939799b2
IFUID       : 304
LOCAL       : 192.168.140.155
REMOTE      : 192.168.140.156
ENCAP       : GENEVE

トンネル ID を指定した論理ポートの作成

   POST https://192.168.110.201/api/v1/logical-ports/

{
"resource_type": "LogicalPort",
"display_name": "Extend logicalSwitch, port for service",
"logical_switch_id": "Logical switch ID",
"admin_state" : "UP",
"attachment": {
"attachment_type":"L2VPN_SESSION",
"id":"L2VPN session ID",
"context" : {
"resource_type" : "L2VpnAttachmentContext",
    "tunnel_id" : 10
}
    }
        }

NSX-T 側で L2VPN のピアコードを取得する

NSX-T エンドポイントのピアコードを取得します。リモート エンドポイントを構成する際には、ピアコードが必要です。前のセクションから L2VPN を取得できます。詳しくは、NSX-T 2.3 API をご覧ください。

GET https://192.168.110.201/api/v1/vpn/l2vpn/sessions//peer-codes

NSX-T スタンドアロン クライアントをデプロイする(オンプレミス)

デプロイする前に、オンプレミス ファイアウォール ルールで、NSX-T T0 ルーターのループバック インターフェース用に以前に予約されたパブリック IP アドレスとの間の受信 / 送信 UDP 500/4500 トラフィックが許可されていることを確認します。

  1. スタンドアロン Edge クライアントの OVF をダウンロードし、ダウンロードしたバンドルからファイルをフォルダに抽出します。
  2. 抽出されたすべてのファイルがあるフォルダに移動します。
  3. すべての VMDK を選択し、[Next] をクリックします。
    • アプライアンスのサイズが大きい場合は NSX-l2t-client-large.mfNSX-l2t-client-large.ovf
    • 特大サイズのアプライアンスの場合は、NSX-l2t-client-Xlarge.mfNSX-l2t-client-Xlarge.ovf
  4. NSX-T スタンドアロン クライアントの名前を入力して、[Next] をクリックします。
  5. 必要に応じて [Next] をクリックし、データストアの設定に移動します。
  6. NSX-T スタンドアロン クライアントに適切なデータストアを選択し、[Next] をクリックします。
  7. NSX-T スタンドアロン クライアントで Trunk(Trunk PG)、パブリック(Uplink PG)、HA(Uplink PG)インターフェースに適正なポートグループを選択します。[Next] をクリックします。
  8. [Customize template] 画面で次の情報を入力して、[Next] をクリックします。
    • L2T を展開します。
      • ピアアドレス。NSX-T Tier0 ループバック インターフェース用に Google Cloud VMware Engine ポータルで予約されている IP アドレスを入力します。
      • ピアコード。L2VPN サーバーのデプロイから取得したピアコードを貼り付けます。
      • サブインターフェース VLAN(トンネル ID)。拡張される VLAN ID を入力します。かっこ () には、前に構成したトンネル ID を入力します。
    • uplink インターフェースを展開します。
      • DNS IP アドレス。オンプレミスの DNS IP アドレスを入力します。
      • デフォルト ゲートウェイ。このクライアントのデフォルト ゲートウェイとして機能する VLAN のゲートウェイを入力します。
      • IP アドレス。スタンドアロン クライアントのアップリンク IP アドレスを入力します。
      • プレフィックス長。アップリンク VLAN / サブネットのプレフィックス長を入力します。
      • CLI 管理者 / 有効化 / root ユーザー パスワード。管理者 / 有効化 /root アカウントのパスワードを設定します。
  9. 設定を確認し、[Finish] をクリックします。

オンプレミスのシンクポートを構成する

一方の VPN サイトに NSX がデプロイされていない場合、そのサイト内にスタンドアロンの NSX エッジをデプロイすることで、L2 VPN を構成できます。エッジサービス ゲートウェイ アプライアンスが L2 VPN クライアントとして機能するには、NSX で管理されていないホストに、OVF ファイルを使用して、スタンドアロンのエッジをデプロイします。

スタンドアロンのエッジトランク vNIC が vSphere の分散スイッチに接続されている場合、L2 VPN 機能には無作為モードまたはシンクポートが必要です。無作為モードを使用すると、ping が重複してレスポンスが重複することがあります。このため、L2 VPN スタンドアロン NSX エッジ構成では、シンクポート モードを使用します。詳細については、シンクポートを構成するをご覧ください。

IPSec VPN と L2VPN の確認

次のコマンドを使用して、NSX-T スタンドアロン エッジからの IPsec と L2VPN セッションを確認します。

nsx-l2t-edge> show service ipsec
-----------------------------------------------------------------------
vShield Edge IPSec Service Status:
IPSec Server is running.
AESNI is enabled.
Total Sites: 1, 1 UP, 0 Down
Total Tunnels: 1, 1 UP, 0 Down
----------------------------------
Site:  10.250.0.111_0.0.0.0/0-104.40.21.81_0.0.0.0/0
Channel: PeerIp: 104.40.21.81    LocalIP: 10.250.0.111  Version: IKEv2  Status: UP
Tunnel: PeerSubnet: 0.0.0.0/0    LocalSubnet: 0.0.0.0/0   Status: UP
----------------------------------
nsx-l2t-edge> show service l2vpn
L2 VPN is running
----------------------------------------
L2 VPN type: Client/Spoke

SITENAME                       IPSECSTATUS          VTI                  GRE
1ecb00fb-a538-4740-b788-c9049e8cb6c6 UP                   vti-100              l2t-1

次のコマンドを使用して、NSX-T Tier0 ルーターからの IPsec と L2VPN セッションを確認します。

edge-2> get ipsecvpn session
Total Number of Sessions: 1

IKE Session ID : 3
UUID           : 1ecb00fb-a538-4740-b788-c9049e8cb6c6
Type           : Route

Local IP       : 192.168.254.254      Peer IP        : 192.227.85.167
Local ID       : 104.40.21.81         Peer ID        : 192.227.85.167
Session Status : Up

Policy Rules
    VTI UUID       : 4bf96e3b-e50b-49cc-a16e-43a6390e3d53
    ToRule ID      : 560874406            FromRule ID    : 2708358054
    Local Subnet   : 0.0.0.0/0            Peer Subnet    : 0.0.0.0/0
    Tunnel Status  : Up
edge-2> get l2vpn session
Session       : f7147137-5dd0-47fe-9e53-fdc2b687b160
Tunnel        : b026095b-98c8-5932-96ff-dda922ffe316
IPSEC Session : 1ecb00fb-a538-4740-b788-c9049e8cb6c6
Status        : UP

次のコマンドを使用して、NSX-T スタンドアロン クライアント VM がオンプレミス環境にある ESXi ホストのシンクポートを確認します。

[root@esxi02:~] esxcfg-vswitch -l |grep NSX
  53                  1           NSXT-client-large.eth2
  225                1           NSXT-client-large.eth1
  52                  1           NSXT-client-large.eth0
[root@esxi02:~] net-dvs -l | grep "port\ [0-9]\|SINK\|com.vmware.common.alias"
                com.vmware.common.alias = csmlab2DS ,   propType = CONFIG
        port 24:
        port 25:
        port 26:
        port 27:
        port 13:
        port 19:
        port 169:
        port 54:
        port 110:
        port 6:
        port 107:
        port 4:
        port 199:
        port 168:
        port 201:
        port 0:
        port 49:
        port 53:
        port 225:
                com.vmware.etherswitch.port.extraEthFRP =   SINK
        port 52:

次のステップ