Migra las cargas de trabajo mediante redes extendidas de capa 2

En esta página, se describe cómo extender una red de capa 2 del entorno local a la nube privada mediante una VPN de capa 2 (L2VPN).

La extensión basada en L2VPN de una red de capa 2 puede funcionar con redes basadas en NSX en el entorno de VMware local o sin ellas. Si no tienes redes basadas en NSX para cargas de trabajo locales, usa una puerta de enlace de servicios NSX Edge independiente.

Situación de implementación

Para extender la red local mediante L2VPN, debes configurar un servidor L2VPN (con destino router NSX-T de nivel 0) y un cliente L2VPN (cliente independiente de origen).

En esta situación de implementación, debes conectar la nube privada al entorno local mediante un túnel VPN de sitio a sitio que permita que la administración y las subredes vMotion locales se comuniquen con la administración de nube y las subredes vMotion privadas. Esta disposición permite la Cross vCenter vMotion (xVC-vMotion). Debes implementar un router NSX-T de nivel 0 como un servidor L2VPN en la nube privada.

Debes implementar un NSX Edge independiente en el entorno local como cliente L2VPN y, luego, vincularlo con el servidor L2VPN. Crea un extremo de túnel de GRE en cada lado y configúralo para “extender” la red local de capa 2 a la nube privada.

Para obtener más información sobre la migración mediante VPN de L2, consulta Virtual private networks (Redes privadas virtuales).

Requisitos previos

Verifica que se cumplan las siguientes condiciones antes de implementar y configurar la solución:

  • Una VPN de sitio a sitio está configurada para conectar el entorno local y el centro de datos de la nube privada.
  • La versión de vSphere local es 6.7U1+ o 6.5P03+.
  • La licencia de vSphere local está a nivel de Enterprise Plus (para el interruptor distribuido de vSphere).
  • Identificaste la red de carga de trabajo de capa 2 para que se extienda a la nube privada.
  • Identificaste una red de capa 2 en el entorno local para implementar el dispositivo cliente L2VPN.
  • Una nube privada ya está creada.
  • La versión del dispositivo independiente de NSX-T Edge es compatible con la versión de NSX-T Manager (NSX-T 2.3.0) que se usa en el entorno de nube privada.
  • Ya se creó un grupo de puertos troncal en el vCenter local.
  • Se reservó una dirección IP pública para usar en la dirección IP de enlace de cliente independiente de NSX-T, y una NAT 1:1 está ubicada a fin de traducir entre las dos direcciones.
  • El reenvío de DNS se configura en los servidores DNS locales para que el dominio cs-needs-review apunte a los servidores DNS privados de la nube.
  • La latencia de RTT es menor o igual que 150 ms, como se requiere para que vMotion funcione en los dos sitios.

Limitaciones y consideraciones

En la siguiente tabla, se enumeran las versiones de vSphere compatibles y los tipos de adaptador de red.

Versión de vSphere Tipo de vSwitch de origen Controlador de NIC virtual Tipo de vSwitch de destino ¿Es compatible?
Todas DVS Todos DVS
vSphere 6.7UI o superior, 6.5P03 o superior DVS VMXNET3 N-VDS
vSphere 6.7UI o superior, 6.5P03 o superior DVS E1000 N-VDS No compatible con VMware
vSphere 6.7UI o 6.5P03, NSX-V o versiones anteriores a NSX-T2.2, 6.5P03 o versiones posteriores Todos Todos N-VDS No compatible con VMware

A partir de la versión VMware NSX-T 2.3:

  • El interruptor lógico en el lado de la nube privada que se extiende a las instalaciones locales a través de L2VPN no se puede enrutar al mismo tiempo. El interruptor lógico extendido no se puede conectar a un router lógico.
  • Las L2VPN y las VPN con IPSEC basadas en rutas solo se pueden configurar mediante llamadas a la API.

Para obtener más información, consulta Virtual private networks (Redes privadas virtuales).

Implementación de VPN de L2 de muestra

En las siguientes tablas, se proporcionan especificaciones de ejemplo para una implementación de VPN de L2.

Red local en la que se implementa el ESG (cliente VPN de L2) independiente

Elemento Valor
Nombre de la red MGMT_NET_VLAN469
VLAN 469
CIDR 10.250.0.0/24
Dirección IP del dispositivo Edge independiente 10.250.0.111
Dirección IP de NAT del dispositivo Edge independiente 192.227.85.167

Red local que se extenderá

Elemento Valor
VLAN 472
CIDR 10.250.3.0/24

Esquema de IP de nube privada para el router NSX-T de nivel 0 (servidor VPN L2)

Elemento Valor
Interfaz de bucle invertido 192.168.254.254/32
Interfaz de túnel 5.5.5.1/29
Interruptor lógico (extendido) Stretch_LS
Interfaz de bucle invertido (dirección IP de NAT) 104.40.21.81

Red privada de la nube que se mapeará a la red extendida

Elemento Valor
VLAN 712
CIDR 10.200.15.0/24

Obtén el ID de router lógico necesario para L2VPN

En los siguientes pasos, se muestra cómo obtener el ID de router lógico de una instancia de router lógico de un DR de nivel 0 para los servicios IPsec y L2VPN. Usa el ID de router lógico más adelante, cuando se implemente la L2VPN.

  1. Accede a NSX-T Manager y selecciona Networking > Routers > Provider-LR > Overview. En High Availability Mode, selecciona Active-Standby. Mediante esta acción, se abre una ventana emergente que muestra la VM de Edge en la que el router de nivel 0 está activo en la actualidad.
  2. Selecciona Fabric > Nodes > Edges. Toma nota de la dirección IP de administración de la VM activa de Edge (VM de Edge1) que se identificó en el paso anterior.
  3. Abre una sesión de SSH en la dirección IP de administración de la VM de Edge. Ejecuta el comando get-logical-router:
  4. Si no ves una entrada DR-Provider-LR, completa los siguientes pasos:
    • Crea dos interruptores lógicos respaldados por superposiciones. Un interruptor lógico se extiende a las instalaciones locales en las que residen las cargas de trabajo migradas. Otro interruptor lógico es un interruptor ficticio. Para obtener más información, consulta Creating a logical switch (Crea un interruptor lógico).
    • Conecta el interruptor ficticio al router de nivel 1 con una dirección IP local de vínculo o cualquier subred no se superponga desde la ubicación local o la nube privada. Para obtener más información, consulta Adding a downlink port on a Tier-1 logical router (Agrega un puerto de enlace de bajada en un router lógico de nivel 1).
    • Vuelve a ejecutar el comando get logical-router en la sesión de SSH de la VM de Edge. En el resultado, se muestra el UUID del router lógico DR-Provider-LR. Toma nota del UUID, que es necesario cuando configuras la L2VPN.

Obtén el ID de interruptor lógico necesario para L2VPN

  1. Accede a NSX-T Manager.
  2. Selecciona Networking > Switching > Switches > Overview.
  3. Toma nota del UUID del interruptor lógico de extensión, que es necesario cuando configuras la L2VPN.

Consideraciones de enrutamiento y seguridad para L2VPN

A fin de establecer una VPN basada en rutas IPsec entre el router NSX-T de nivel 0 y el cliente NSX Edge independiente, la interfaz de bucle invertido del router NSX-T de nivel 0 debe poder comunicarse con la dirección IP pública del cliente local independiente de NSX a través de UDP 500/4500.

Permitir UDP 500/4500 para IPsec

  1. Crea una dirección IP pública para la interfaz de bucle invertido de NSX-T de nivel 0 en el portal de Google Cloud VMware Engine.
  2. Crea una tabla de firewall con reglas con estado que permitan el tráfico entrante de UDP 500/4500 y adjunta la tabla de firewall a la subred NSX-T HostTransport.
  1. Crea una ruta nula para la red de interfaz de bucle invertido.
    • Accede a NSX-T Manager y selecciona Networking > Routing > Routers > Provider-LR > Routing > Static routes.
    • Haz clic en Add.
    • En Network, ingresa la dirección IP de la interfaz de bucle invertido.
    • En Next Hops, haz clic en Add y especifica Null en el siguiente salto. Mantén la opción predeterminada de 1 para Admin distance.
  2. Crea una lista de prefijos de IP.
    • Accede a NSX-T Manager y selecciona Networking > Routing > Routers > Provider-LR > Routing > IP prefix lists.
    • Haz clic en Add.
    • Ingresa un nombre para identificar la lista.
    • En Prefixes, haz clic en Add dos veces.
    • En la primera línea, ingresa 0.0.0.0/0 para Network y Deny para Action.
    • En la segunda línea, selecciona Any para Network y Permit en Action.
  3. Adjunta la lista de prefijos de IP a ambos vecinos de BGP (TOR). Conectar la lista de prefijos de IP al vecino de BGP evita que la ruta predeterminada se anuncie en BGP a los interruptores de TOR. Sin embargo, cualquier otra ruta que incluya la ruta nula anunciará la dirección IP de la interfaz de bucle invertido a TOR.
  4. Accede a NSX-T Manager y selecciona Networking > Routing > Routers > Provider-LR > Routing > BGP > Neighbors. Selecciona el primer vecino.
    • Haz clic en Edit > Address families.
    • Para la familia IPv4, edita la columna Out filter y selecciona la lista de prefijos de IP que creaste. Haz clic en Save. Repite este paso para el segundo vecino.
  5. Vuelve a distribuir la ruta estática nula en BGP. Para anunciar la ruta de la interfaz de bucle invertido en la ruta subyacente, debes redistribuir la ruta estática nula en BGP.
    • Accede a NSX-T Manager y selecciona Networking > Routing > Routers > Provider-LR > Routing > Route redistribution > Neighbors.
    • Selecciona Provider-LR-route_redistribution y haz clic en Edit.
    • Selecciona la casilla de verificación Static y haz clic en Save.

Configura una VPN basada en la ruta en el router de NSX-T de nivel 0

Usa la siguiente plantilla a fin de proporcionar todos los detalles para configurar una VPN basada en la ruta en el router NSX-T de nivel 0. Los UUID en cada llamada POST son obligatorios en las llamadas POST posteriores.

Las direcciones IP de las interfaces de bucle invertido y de túnel para L2VPN deben ser únicas y no deben superponerse con las redes de la nube local o privada. La red de la interfaz de bucle invertido siempre debe ser /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 :

Para todas las llamadas a la API siguientes, reemplaza la dirección IP por la dirección IP de NSX-T Manager. Puedes ejecutar todas estas llamadas a la API desde el cliente POSTMAN o mediante los comandos de curl.

Habilita el servicio de VPN IPSec en el router lógico

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
}

Crea perfiles: 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"]
}

Crea perfiles: DPO

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

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

Crea perfiles: Túnel

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"
}

Crea un extremo local

{
"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": []
}

Crea un extremo de intercambio de tráfico

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": ""
}

Crea una sesión de VPN basada en rutas

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
}
  ]
}
]
}

Configura L2VPN en el router NSX-T de nivel 0

Proporciona la siguiente información después de cada llamada POST. Los ID son obligatorios en las llamadas POST posteriores.

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

Crea el servicio L2VPN

El resultado del siguiente comando GET estará vacío porque aún no se completó la configuración.

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

Para el siguiente comando POST, el ID de router lógico es el UUID del router lógico DR de nivel 0 que obtuviste antes.

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

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

Crea la sesión L2VPN

Para el siguiente comando POST, el ID del servicio L2VPN es el ID que acabas de obtener, y el ID de sesión de VPN con IPsec es el ID que se obtuvo en la sección anterior.

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"
}
]
}

Estas llamadas crean un extremo del túnel GRE. Para verificar el estado, ejecuta el siguiente comando.

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

Crea un puerto lógico con el ID de túnel especificado

   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
}
    }
        }

Obtén el código de par para L2VPN en el lado NSX-T

Obtén el código de par del extremo NSX-T. El código de par se requiere cuando se configura el extremo remoto. La L2VPN se puede obtener de la sección anterior. Para obtener más información, consulta la API de NSX-T 2.3.

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

Implementa el cliente independiente de NSX-T (local)

Antes de la implementación, verifica que las reglas de firewall locales permitan el tráfico de entrada y salida de UDP 500/4500 desde la dirección IP pública que se reservó antes, o hacia ella, para la interfaz de bucle invertido del router NSX-T de nivel 0.

  1. Descarga el cliente perimetral independiente OVF y extrae los archivos del paquete descargado en una carpeta.
  2. Ve a la carpeta que contiene todos los archivos que se extrajeron.
  3. Selecciona todos los archivos vmdks y haz clic en Next.
    • NSX-l2t-client-large.mf y NSX-l2t-client-large.ovf para los dispositivos de tamaño grande.
    • NSX-l2t-client-Xlarge.mf y NSX-l2t-client-Xlarge.ovf para los dispositivos de tamaño extragrande.
  4. Ingresa un nombre para el cliente independiente de NSX-T y haz clic en Next.
  5. Haz clic en Next según sea necesario para llegar a la configuración del almacén de datos.
  6. Selecciona el almacén de datos adecuado para el cliente independiente de NSX-T y haz clic en Next.
  7. Selecciona los grupos de puertos correctos para las interfaces Trunk (Trunk PG), Public (Uplink PG) y HA (Uplink PG) para el cliente independiente de NSX-T. Haz clic en Next.
  8. Proporciona la siguiente información en la pantalla Customize template y haz clic en Next.
    • Expandir L2T:
      • Dirección de par. Ingresa la dirección IP reservada en el portal de Google Cloud VMware Engine para la interfaz de bucle invertido NSX-T de nivel 0.
      • Código de par. Pega el código de par que se obtuvo de la implementación del servidor L2VPN.
      • Subinterfaces VLAN (ID de túnel). Ingresa el ID de VLAN que se debe extender. Entre paréntesis (), ingresa el ID del túnel que se configuró antes.
    • Expandir la interfaz de enlace de subida:
      • Dirección IP de DNS. Ingresa la dirección IP de DNS local.
      • Puerta de enlace predeterminada. Ingresa la puerta de enlace de la VLAN a fin de que actúe como la puerta de enlace predeterminada para este cliente.
      • Dirección IP. Ingresa la dirección IP de enlace de subida del cliente independiente.
      • Longitud de prefijo. Ingresa la longitud de prefijo de la VLAN o subred de enlace de subida.
      • Contraseña de CLI admin/enable/root user. Configura la contraseña para la cuenta admin/enable/root.
  9. Revisa la configuración y haz clic en Finish.

Configura un puerto receptor local

Si uno de los sitios VPN no tiene NSX implementado, puedes configurar una VPN de L2 mediante la implementación de un perímetro NSX independiente en ese sitio. Para que un dispositivo de puerta de enlace de servicios perimetrales funcione como un cliente de VPN de L2, implementa un perímetro independiente mediante un archivo OVF en un host no administrado por NSX.

Si un vNIC de tronco perimetral independiente está conectado a un interruptor distribuido de vSphere, se requiere un modo promiscuo o un puerto receptor para la función de VPN de L2. Mediante el modo promiscuo, se pueden provocar pings y respuestas duplicados. Por este motivo, usa el modo de puerto receptor en la configuración perimetral NSX independiente de VPN de L2. Para obtener más información, consulta Configura un puerto de receptor.

Verificación de VPN IPsec y L2VPN

Usa los siguientes comandos para verificar las sesiones IPsec y L2VPN desde un perímetro independiente de NSX-T.

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

Usa los siguientes comandos para verificar las sesiones de IPsec y L2VPN desde el router NSX-T de nivel 0.

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

Usa los siguientes comandos para verificar el puerto receptor en el host ESXi en el que la VM de cliente independiente de NSX-T reside en el entorno local.

[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:

Próximos pasos