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 función de 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 20 bits de máscara de subred (/26).

Requisitos de la API y Google Cloud CLI

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

gcloud

  1. Establece tu ID del proyecto predeterminado:

    gcloud config set project PROJECT_ID
    
  2. Configura una región y una zona predeterminadas:

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

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

API

Los ejemplos de la API de este conjunto de documentación usan la herramienta de línea de comandos cURL para consultar la API. Se requiere un token de acceso válido como parte de la solicitud cURL. Existen muchas maneras de obtener un token de acceso válido. En los siguientes pasos, se usa la herramienta 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
    

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 de esta documentación usan la biblioteca de VMware Engine para comunicarse con la API. Para poder usar este enfoque, se debe instalar la biblioteca y se deben configurar las Credenciales predeterminadas de la aplicación.

  1. Descarga e instala la biblioteca de Python:

    pip install google-cloud-vmwareengine
    
  2. Ejecuta esos comandos en tu shell para configurar la información de ADC:

    gcloud auth application-default login
    

    También puedes usar un archivo de claves de la 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 VMs de carga de trabajo tengan acceso a Internet si creas o actualizas una política de red.

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. En la consola de Google Cloud, ve a la página Políticas de red.

    Ir a Políticas de red

  2. Haz clic en Crear para crear una política nueva. Si quieres editar una política de red existente, haz clic en el ícono Más al final de una fila y selecciona Editar.

  3. Completa los detalles de tu política de red, incluida la elección de la red y la región a las que se aplica la política.

  4. Cambia Acceso a Internet a Habilitado y, de forma opcional, habilita el Servicio de dirección IP externa.

  5. En el campo CIDR de servicios perimetrales, ingresa el rango de direcciones que se usará cuando se dirija la puerta de enlace de Internet de VMware Engine (rango de direcciones /26).

  6. Haz clic en Crear.

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 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_ID \
    --edge-services-cidr=IP_RANGE \
    --location=LOCATION \
    --internet-access

Reemplaza lo siguiente:

  • NETWORK_POLICY_NAME: Es el nombre de esta política de red.
  • NETWORK_ID: La red a la que se aplica esta política de red.
  • IP_RANGE: Es el rango de CIDR que se usará para el acceso a Internet y las puertas de enlace de acceso de IP externas, en notación CIDR. Se requiere un bloque de CIDR de RFC 1918 con un prefijo "/26".
  • LOCATION: global para redes heredadas o la región de una red estándar

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/LOCATION/networkPolicies?networkPolicyId=NETWORK_POLICY_NAME

'{
  "vmwareEngineNetwork":"projects/PROJECT_ID/locations/LOCATION/vmwareEngineNetworks/NETWORK_ID",
  "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.
  • LOCATION: global para redes heredadas o la región de una red estándar
  • IP_RANGE: Es el rango de CIDR que se usará para el acceso a Internet y las puertas de enlace de acceso de IP externas, en notación CIDR. Se requiere un bloque de CIDR de RFC 1918 con un prefijo "/26".
  • NETWORK_ID: La red de esta política de red.

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. En la consola de Google Cloud, ve a la página Políticas de red.

    Ir a Políticas de red

  2. En la fila correspondiente a la política de red relevante, haz clic en el ícono Más.

  3. 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.
  4. Haz clic en Guardar.

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 gcloud, ejecuta el siguiente comando para actualizar la política de red:

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

Reemplaza lo siguiente:

  • NETWORK_POLICY_NAME: Es el nombre de esta política de red.
  • LOCATION: global para redes heredadas o la región de una red estándar

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/LOCATION/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.
  • LOCATION: global para redes heredadas o la región de una red estándar
  • 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 VMs 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. En la consola de Google Cloud, ve a la página Políticas de red.

    Ir a Políticas de red

  2. En la fila correspondiente a la política de red relevante, haz clic en el ícono Más.

  3. Cambia la opción IP pública a Inhabilitada.

  4. Cambia Acceso a Internet a Inhabilitado.

  5. Haz clic en Guardar.

  6. Si usas una red heredada de VMware Engine: 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 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 LOCATION

Reemplaza lo siguiente:

  • NETWORK_POLICY_NAME: Es el nombre de esta política de red.
  • LOCATION: global para redes heredadas o la región de una red estándar

Si usas una red heredada de VMware Engine: 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

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/LOCATION/networkPolicies/NETWORK_POLICY_NAME?updateMask=internetAccess.enabled,externalIp.enabled

"{
  "internetAccess: {
    "enabled": false
   },
  "externalIp: {
    "enabled": false
   }
}"

Si usas una red heredada de VMware Engine: 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_NAME \
   --service=servicenetworking.googleapis.com

Python

Establece internet_access y external_ip en 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)

Si usas una red heredada de VMware Engine: 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

Habilitar los Controles del servicio de VPC es esencial para enrutar el tráfico de Internet a través de una conexión local o una VPC en tu proyecto.

Cuando se habilitan los Controles del servicio de VPC, Google Cloud realiza los siguientes cambios de enrutamiento en la red de VPC del productor de servicios (en este caso, el proyecto del usuario del servicio vinculado con VMware Engine):

  • Quita la ruta predeterminada IPv4 (destino 0.0.0.0/0, puerta de enlace de Internet predeterminada de salto siguiente).
  • Comienza a reenviar el tráfico de Internet con la ruta predeterminada de intercambio de tráfico entre VPC.

Ejemplo:

Para habilitar los Controles del servicio de VPC para una conexión de intercambio de tráfico con una red llamada "mi-red" en el proyecto actual, usa el comando gcloud services vpc-peerings enable-vpc-service-controls:

gcloud services vpc-peerings enable-vpc-service-controls \
    --network=my-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 VMs 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.

Si usas una red heredada de VMware Engine: Inhabilita 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. Para ello, usa el siguiente comando gcloud services vpc-peerings disable-vpc-service-controls:

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

¿Qué sigue?