Configura el acceso a Internet para las VM de cargas de trabajo

Configura el servicio de red de acceso a Internet para cargas de trabajo de VMware en Google Cloud VMware Engine según la región. Puedes dirigir el tráfico vinculado a Internet desde tus VM de cargas de trabajo mediante una conexión a Internet perimetral de Google Cloud o una conexión local.

Las VM de carga de trabajo que pueden acceder a Internet también pueden acceder a los servicios de Google Cloud mediante el Acceso privado a Google. El acceso a los servicios de Google Cloud mediante el Acceso privado a Google permanece dentro de las redes de Google Cloud y no sale a Internet.

El servicio de red de acceso a Internet es compatible con los siguientes entornos:

  • Hasta 100 direcciones IP públicas para cada región
  • Hasta 300 reglas de firewall por tabla de firewall
  • Capacidad de procesamiento de hasta 2 Gbps en 128,000 conexiones simultáneas para cada región
  • Protocolos TCP, ICMP y UDP

El servicio de red de acceso a Internet no es compatible con la funcionalidad de la puerta de enlace a nivel de aplicación (ALG).

Antes de comenzar

Para realizar cambios en la configuración de acceso a Internet de tu nube privada, debes tener acceso de administrador a VMware Engine.

Para habilitar el acceso a Internet, necesitas un rango de direcciones CIDR de servicios de perimetrales. Cuando habilitas el acceso a Internet o los servicios de red de IP pública, las puertas de enlace se implementan en el contexto del usuario del servicio.

Usa el rango de direcciones CIDR de los servicios perimetrales para asignarles direcciones a las puertas de enlace de IP pública y de Internet de VMware Engine. El rango de direcciones debe cumplir con los siguientes requisitos:

  • Cumple con RFC 1918 como un rango privado.
  • No deben superponerse con ningún otro rango de direcciones de VMware Engine, como el rango de direcciones que se usa para los dispositivos de administración o los segmentos de NSX-T.
  • No deben superponerse con los rangos de direcciones que se anuncian en VMware Engine, como los que se usan para las subredes de red de la nube privada virtual (VPC) o en las redes locales.
  • Dedica un rango de direcciones IP con 26 bits de máscara de subred (/26).

Requisitos de gcloud y la API

Si deseas usar la herramienta de línea de comandos de gcloud o la API para administrar los recursos de VMware Engine, te recomendamos que configures las herramientas como se describe a continuación.

gcloud

  1. Configura tu ID del proyecto predeterminado:

    gcloud config set project PROJECT_ID
    
  2. Configura una región o zona predeterminada:

    gcloud config set compute/region REGION
    gcloud config set compute/zone ZONE

Para obtener más información sobre la herramienta de gcloud vmware, consulta los documentos de referencia del SDK de Cloud.

API

Los ejemplos de API en este conjunto de documentación usan la herramienta de línea de comandos de cURL para consultar la API. Se requiere un token de acceso válido como parte de la solicitud cURL. Existen muchas formas de obtener un token de acceso válido. En los siguientes pasos, se usa la herramienta de gcloud para generar un token de acceso:

  1. Accede a Google Cloud

    gcloud auth login
    
  2. Genera un token de acceso y expórtalo a TOKEN

    export TOKEN=`gcloud auth print-access-token`
    
  3. Verifica que TOKEN esté configurado correctamente.

    echo $TOKEN
    
    Output:
    TOKEN
    

Ahora, usa el token de autorización en tus solicitudes a la API. Por ejemplo:

curl -X GET -H "Authorization: Bearer \"$TOKEN\""  -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations

Python

Las muestras de código de Python en esta documentación usan la biblioteca de VMware Engine para comunicarse con la API. Para poder usar este enfoque, es necesario instalar la biblioteca y configurar las credenciales predeterminadas de la aplicación.

  1. Descarga y, luego, instala la biblioteca de Python

     pip install google-cloud-vmwareengine
    
  2. Para configurar la información del ADC, ejecuta esos comandos en tu shell

      gcloud auth application-default login
    

    o usar un archivo de claves de cuenta de servicio

      export GOOGLE_APPLICATION_CREDENTIALS="FILE_PATH"
    

Para obtener más información sobre la biblioteca, visita la página de referencia o consulta las muestras de código en GitHub.

Configura el servicio de acceso a Internet

Puedes permitir que las VM de carga de trabajo tengan acceso a Internet si habilitas el servicio de red de acceso a Internet. De forma predeterminada, el servicio de red de acceso a Internet está inhabilitado.

Habilita el servicio de acceso a Internet en una región

Console

Para habilitar el servicio de acceso a Internet en una región, haz lo siguiente:

  1. Accede al portal de VMware Engine.
  2. Ve a Red > Configuración regional.
  3. En la fila correspondiente a la región de interés, selecciona Edit. Si esa región no aparece en la tabla de resumen, haz clic en Agregar región.
  4. Cambia Acceso a Internet a Habilitado.
    • Puedes habilitar el acceso a Internet y dejar el servicio de IP pública inhabilitado. Si lo haces, la VPN de punto a sitio y la asignación de IP pública no estarán disponibles.
  5. En el campo CIDR de servicios perimetrales, ingresa el rango de direcciones que se usará cuando te dirijas a la puerta de enlace de Internet de VMware Engine (rango de direcciones /26).
  6. Haz clic en Enviar.

El estado de los servicios cambia a Enabled cuando se completa la operación. En general, sucede después de varios minutos.

gcloud

Con la herramienta de gcloud, ejecuta el siguiente comando para crear una política de red:

gcloud vmware network-policies create NETWORK_POLICY_NAME \
    --vmware-engine-network projects/PROJECT_ID/locations/LOCATIONS/vmwareEngineNetworks/NETWORK_NAME \
    --edge-services-cidr IP_RANGE \
    --location REGION --internet-access

Reemplaza lo siguiente:

  • NETWORK_POLICY_NAME: Es el nombre de esta política de red. Debe tener el formato REGION-default.
  • NETWORK_NAME: Es la red a la que se aplica esta política de red.
  • IP_RANGE: Es el rango CIDR que se usará para el acceso a Internet y las puertas de enlace de acceso de IP externa, en notación CIDR. Se requiere un bloque CIDR de RFC 1918 con un prefijo “/26”.
  • REGION: Es la región de la red.

API

curl -X POST -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/networkPolicies?networkPolicyId=NETWORK_POLICY_NAME -d "{
  "vmwareEngineNetwork":"projects/PROJECT_ID/locations/REGION/vmwareEngineNetworks/NETWORK_NAME",
  "edgeServiceCidr":IP_RANGE,
  "internetAccess: {
    "enabled": true
   },
   "externalIp": {
     "enabled": true
   }
}"

Reemplaza lo siguiente:

  • NETWORK_POLICY_NAME: Es el nombre de esta política de red. Debe tener el formato REGION-default.
  • PROJECT_ID: Es el ID del proyecto de esta solicitud.
  • REGION: Es la región de la red.
  • IP_RANGE: Es el rango CIDR que se usará para el acceso a Internet y las puertas de enlace de acceso de IP externa, en notación CIDR. Se requiere un bloque CIDR de RFC 1918 con un prefijo “/26”.
  • NETWORK_NAME: La red a la que se aplica esta política de red debe tener el formato >REGION-default

Python

from google.api_core import operation
from google.cloud import vmwareengine_v1

def create_network_policy(
    project_id: str,
    region: str,
    ip_range: str,
    internet_access: bool,
    external_ip: bool,
) -> operation.Operation:
    """
    Creates a new network policy in a given network.

    Args:
        project_id: name of the project you want to use.
        region: name of the region you want to use. I.e. "us-central1"
        ip_range: the CIDR range to use for internet access and external IP access gateways,
            in CIDR notation. An RFC 1918 CIDR block with a "/26" suffix is required.
        internet_access: should internet access be allowed.
        external_ip: should external IP addresses be assigned.

    Returns:
        An operation object representing the started operation. You can call its .result() method to wait for
        it to finish.

    Raises:
        ValueError if the provided ip_range doesn't end with /26.
    """
    if not ip_range.endswith("/26"):
        raise ValueError(
            "The ip_range needs to be an RFC 1918 CIDR block with a '/26' suffix"
        )

    network_policy = vmwareengine_v1.NetworkPolicy()
    network_policy.vmware_engine_network = f"projects/{project_id}/locations/{region}/vmwareEngineNetworks/{region}-default"
    network_policy.edge_services_cidr = ip_range
    network_policy.internet_access.enabled = internet_access
    network_policy.external_ip.enabled = external_ip

    request = vmwareengine_v1.CreateNetworkPolicyRequest()
    request.network_policy = network_policy
    request.parent = f"projects/{project_id}/locations/{region}"
    request.network_policy_id = f"{region}-default"

    client = vmwareengine_v1.VmwareEngineClient()
    return client.create_network_policy(request)

Habilita el servicio de acceso a Internet en una región

Para inhabilitar el servicio de acceso a Internet en una región, haz lo siguiente:

Console

  1. Accede al portal de VMware Engine.
  2. Ve a Red > Configuración regional.
  3. En la fila correspondiente a la región de interés, selecciona Edit.
  4. Cambia Acceso a Internet a Inhabilitado.
    • Debes inhabilitar el servicio de IP pública antes de inhabilitar el acceso a Internet.
    • Debes borrar cualquier dirección IP pública asignada y las puertas de enlace de VPN de punto a sitio antes de inhabilitar el servicio de IP pública.
  5. Haga clic en Submit.

El estado de los servicios cambia a Disabled cuando se completa la operación. En general, sucede después de varios minutos.

gcloud

Con la herramienta de gcloud, ejecuta el siguiente comando para actualizar la política de red:

gcloud vmware network-policies update NETWORK_POLICY_NAME \
  --no-internet-access --location REGION

Reemplaza lo siguiente:

  • NETWORK_POLICY_NAME: Es el nombre de esta política de red.
  • REGION: Es la región de la red.

API

curl -X PATCH -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/networkPolicies/NETWORK_POLICY_NAME?updateMask=internetAccess.enabled,externalIp.enabled -d "{
  "internetAccess: {
    "enabled": false
 },
  "externalIp": {
    "enabled": false
   }
}"

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID del proyecto de esta solicitud.
  • REGION: Es la región de la red.
  • NETWORK_POLICY_NAME: Es el nombre de esta política de red.

Python

from google.api_core import operation
from google.cloud import vmwareengine_v1

def update_network_policy(
    project_id: str, region: str, internet_access: bool, external_ip: bool
) -> operation.Operation:
    """
    Updates a network policy in a given network.

    Args:
        project_id: name of the project you want to use.
        region: name of the region you want to use. I.e. "us-central1".
        internet_access: should internet access be allowed.
        external_ip: should external IP addresses be assigned.

    Returns:
        An operation object representing the started operation. You can call its .result() method to wait for
        it to finish.
    """

    client = vmwareengine_v1.VmwareEngineClient()
    request = vmwareengine_v1.UpdateNetworkPolicyRequest()
    request.update_mask = "internetAccess.enabled,externalIp.enabled"
    network_policy = vmwareengine_v1.NetworkPolicy()
    network_policy.name = (
        f"projects/{project_id}/locations/{region}/networkPolicies/{region}-default"
    )
    network_policy.vmware_engine_network = f"projects/{project_id}/locations/{region}/vmwareEngineNetworks/{region}-default"
    network_policy.internet_access.enabled = internet_access
    network_policy.external_ip.enabled = external_ip

    request.network_policy = network_policy

    return client.update_network_policy(request)

Usa una conexión local para acceder a Internet de carga de trabajo

De manera opcional, puedes dirigir el tráfico vinculado a Internet desde las VM de carga de trabajo en VMware Engine a través de una conexión local. El tráfico se dirige en función del estado de lo siguiente:

  • El anuncio de ruta predeterminado (0.0.0.0/0) desde las instalaciones
  • Servicio de IP pública de VMware Engine
  • Servicio de acceso a Internet de VMware Engine
  • Controles del servicio de VPC en la conexión de intercambio de tráfico de VPC entre tu red de VPC y VMware Engine

Habilita el enrutamiento del tráfico de Internet a través de una conexión local

Para acceder a Internet desde las VM de carga de trabajo a través de una conexión local, debes completar dos pasos:

  1. Anuncia la ruta predeterminada (0.0.0.0/0) desde una ubicación local a través de una conexión local (Cloud VPN o Cloud Interconnect). Verifica la puerta de enlace de Cloud VPN o Cloud Router en la que finaliza la conexión local a tu VPN.
  2. Inhabilita el acceso a Internet y el servicio de IP pública para la red de VMware Engine.

Console

  1. Accede al portal de VMware Engine
  2. Ve a Red > Configuración regional.
  3. Haz clic en el ícono Editar de la región en la que deseas habilitar el acceso a Internet mediante una conexión local.
  4. Cambia la opción IP pública a Inhabilitada.

  5. Cambia Acceso a Internet a Inhabilitado.

  6. Haga clic en Submit.

  7. Habilita los Controles del servicio de VPC en la conexión de intercambio de tráfico de VPC entre tu red de VPC y VMware Engine mediante el comando gcloud services vpc-peerings enable-vpc-service-controls:

    gcloud services vpc-peerings enable-vpc-service-controls \
       --network=VPC_NETWORK \
       --service=servicenetworking.googleapis.com

gcloud

Con la herramienta de gcloud, ejecuta el siguiente comando para actualizar la política de red:

gcloud vmware network-policies update NETWORK_POLICY_NAME \
  --no-internet-access --no-external-ip-address --location REGION

Reemplaza lo siguiente:

  • NETWORK_POLICY_NAME: Es el nombre de esta política de red.
  • REGION: Es la región de la red.

Luego, habilita los Controles del servicio de VPC en la conexión de intercambio de tráfico de VPC entre tu red de VPC y VMware Engine con el comando gcloud services vpc-peerings enable-vpc-service-controls:

gcloud services vpc-peerings enable-vpc-service-controls \
   --network=VPC_NETWORK \
   --service=servicenetworking.googleapis.com

API

curl -X PATCH -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/networkPolicies/NETWORK_POLICY_NAME?updateMask=internetAccess.enabled,externalIp.enabled -d "{
  "internetAccess: {
    "enabled": false
   },
  "externalIp: {
    "enabled": false
   }
}"

Luego, habilita los Controles del servicio de VPC en la conexión de intercambio de tráfico de VPC entre tu red de VPC y VMware Engine con el comando gcloud services vpc-peerings enable-vpc-service-controls:

gcloud services vpc-peerings enable-vpc-service-controls \
   --network=VPC_NETWORK \
   --service=servicenetworking.googleapis.com

Python

Configura internet_access y external_ip como False.

from google.api_core import operation
from google.cloud import vmwareengine_v1

def update_network_policy(
    project_id: str, region: str, internet_access: bool, external_ip: bool
) -> operation.Operation:
    """
    Updates a network policy in a given network.

    Args:
        project_id: name of the project you want to use.
        region: name of the region you want to use. I.e. "us-central1".
        internet_access: should internet access be allowed.
        external_ip: should external IP addresses be assigned.

    Returns:
        An operation object representing the started operation. You can call its .result() method to wait for
        it to finish.
    """

    client = vmwareengine_v1.VmwareEngineClient()
    request = vmwareengine_v1.UpdateNetworkPolicyRequest()
    request.update_mask = "internetAccess.enabled,externalIp.enabled"
    network_policy = vmwareengine_v1.NetworkPolicy()
    network_policy.name = (
        f"projects/{project_id}/locations/{region}/networkPolicies/{region}-default"
    )
    network_policy.vmware_engine_network = f"projects/{project_id}/locations/{region}/vmwareEngineNetworks/{region}-default"
    network_policy.internet_access.enabled = internet_access
    network_policy.external_ip.enabled = external_ip

    request.network_policy = network_policy

    return client.update_network_policy(request)

Luego, habilita los Controles del servicio de VPC en la conexión de intercambio de tráfico de VPC entre tu red de VPC y VMware Engine con el comando gcloud services vpc-peerings enable-vpc-service-controls:

gcloud services vpc-peerings enable-vpc-service-controls \
   --network=VPC_NETWORK \
   --service=servicenetworking.googleapis.com

Inhabilita el enrutamiento del tráfico de Internet a través de una conexión local

Para inhabilitar el enrutamiento de tráfico de Internet desde tus VM de carga de trabajo a través de una conexión local, deja de anunciar la ruta predeterminada (0.0.0.0/0) y, luego, inhabilita los controles del servicio de VPC en la conexión de intercambio de tráfico de VPC.

Para inhabilitar los Controles del servicio de VPC en la conexión de intercambio de tráfico de VPC entre tu red de VPC y VMware Engine, usa el siguiente comando gcloud services vpc-peerings disable-vpc-service-controls:

gcloud services vpc-peerings disable-vpc-service-controls \
    --network=VPC_NETWORK \
    --service=servicenetworking.googleapis.com

¿Qué sigue?