レイヤ 2 ネットワークを使用した VMware VM の移行

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

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

デプロイ シナリオ

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

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

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

L2VPN を使用した移行の詳細については、バーチャル プライベート ネットワークに関する VMware のドキュメントをご覧ください。

前提条件

ソリューションをデプロイして構成する前に、以下の要件が満たされているかを確認します。

  • サイト間 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 転送がオンプレミスの DNS サーバー上で設定され、ドメインがプライベート クラウド DNS サーバーを参照するよう指定されている。
  • RTT レイテンシが 150 ミリ秒以下になっている。vMotion が 2 つのサイトで動作するには、この条件を満たす必要があります。

制限事項と考慮事項

次の表で、サポートされている 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 呼び出しの使用でのみ構成できます。

詳細については、バーチャル プライベート ネットワークに関する VMware ドキュメントをご覧ください。

L2VPN デプロイの例

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

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

項目
ネットワーク名 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 ルーター(L2VPN サーバー)のプライベート クラウド 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 つは、移行されたワークロードが存在するオンプレミスに拡張されます。詳細については、論理スイッチを作成するをご覧ください。
    • リンクローカル IP アドレスか、オンプレミスまたはプライベート クラウドから重複しないサブネットを使用して、Tier1 ルーターに 2 つ目の論理スイッチを接続します。詳細については、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 アドレスに置き換えます。curl コマンドを使用すると、これらの API 呼び出しをすべて実行できます。

論理ルーターで 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"]
}

プロファイルの作成: DPD

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": "Public IP of Loopback interface",
"ipsec_vpn_service_id": {
"target_id": "IPSec VPN service ID"},
"local_address": "IP of Loopback interface",
"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": "Public IP of Standalone client",
"peer_id": "Public IP of Standalone client"
}

ルートベースの 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/session-id/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 Edge をデプロイすることで、L2VPN を構成できます。Edge サービス ゲートウェイ アプライアンスが L2VPN クライアントとして機能するには、NSX で管理されていないホストに、OVF ファイルを使用してスタンドアロンの Edge をデプロイします。

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

IPsec VPN と L2VPN の確認

次のコマンドを使用して、NSX-T スタンドアロン Edge からの 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:

次のステップ