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

Requisitos de gcloud y de la API

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 o zona predeterminada:

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

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

API

Los ejemplos de API en este conjunto de documentos 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 maneras de obtener un token de acceso válido: sigue los pasos que se indican a continuación. 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 de forma correcta

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

    o usa 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 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 se dirija 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 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 red. política de la empresa. Debe tener el formato REGION-default.
  • NETWORK_NAME: Es la red a la que corresponde esta política de red. se aplica a
  • 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. Un RFC Bloque CIDR de 1918 con un “/26” el prefijo es obligatorio.
  • 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 red. política de la empresa. 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 de CIDR que se usará para Internet. de servicio y externas, en notación CIDR. Se requiere un bloque de CIDR de RFC 1918 con un prefijo "/26".
  • NETWORK_NAME: La red a la que se aplica esta política de red debe estar en 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 VMs de tu carga de trabajo a través de una red local completa, 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.

Habilita los Controles del servicio de VPC en la conexión de intercambio de tráfico de VPC entre tus 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
   }
}"

Habilita los Controles del servicio de VPC en la conexión de intercambio de tráfico de VPC entre tus 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

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)

Habilita los Controles del servicio de VPC en la conexión de intercambio de tráfico de VPC entre tus 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?