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 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 de Google Cloud CLI

Para usar la herramienta de línea de comandos de gcloud o la API para administrar tu VMware Engine recursos, te recomendamos configurar 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 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 cURL para cada solicitud. Existen muchas maneras de obtener un token de acceso válido: lo siguiente pasos, usa la herramienta gcloud para generar un token de acceso:

  1. Accede a Google Cloud:

    gcloud auth login
    
  2. Genera el 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 en 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 y, luego, instala la biblioteca de Python:

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

    gcloud auth application-default login
    

    O bien, 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 mira muestras de código en GitHub.

Configura el servicio de acceso a Internet

Para permitir que las VMs de tu carga de trabajo tengan acceso a Internet, crea o actualizar 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 un la política de red existente haz clic en el botón Más al final de una fila y selecciona Editar.

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

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

  5. En el campo CIDR de Edge Services, ingresa el rango de direcciones que se usará cuando abordar 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 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_ID \
    --edge-services-cidr=IP_RANGE \
    --location=LOCATION \
    --internet-access

Reemplaza lo siguiente:

  • NETWORK_POLICY_NAME: Es el nombre de esta red. política de la empresa.
  • NETWORK_ID: 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 Internet. de servicio y externas, en notación CIDR. Un RFC Bloque CIDR de 1918 con un “/26” el prefijo es obligatorio.
  • LOCATION: global para las 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 red. política de la empresa. Debe tener el formato REGION-default.
  • PROJECT_ID: Es el ID del proyecto de esta solicitud.
  • LOCATION: global para las redes heredadas o la región de una red estándar
  • IP_RANGE: Es el rango de CIDR que se usará para Internet. de servicio y externas, en notación CIDR. Un RFC Bloque CIDR de 1918 con un “/26” el prefijo es obligatorio.
  • NETWORK_ID: Es la red de esta red. política

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 Más ícono.

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

Reemplaza lo siguiente:

  • NETWORK_POLICY_NAME: Es el nombre de esta red. política
  • LOCATION: global para las 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 las redes heredadas o la región de una red estándar
  • NETWORK_POLICY_NAME: Es el nombre de esta red. política

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 tus 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. Inhabilitar el acceso a Internet y el servicio de IP pública para el 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 Más ícono.

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

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 LOCATION

Reemplaza lo siguiente:

  • NETWORK_POLICY_NAME: Es el nombre de esta red. política
  • LOCATION: global para las 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 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/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 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_NAME \
   --service=servicenetworking.googleapis.com

Python

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

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 de VPC en tu proyecto.

Cuando los Controles del servicio de VPC están habilitados, Google Cloud realiza los siguientes cambios de enrutamiento en la red de VPC del productor de servicios (en este caso, el proyecto de usuario del servicio intercambiaba tráfico con VMware Engine):

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

Ejemplo:

Habilitar los Controles del servicio de VPC para una conexión que intercambia tráfico con una red llamada “my-network” 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 del tráfico de Internet desde las VMs de tu carga de trabajo a través de un conexión local, dejar de anunciar la ruta predeterminada (0.0.0.0/0) y inhabilitar 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 tus red de VPC y VMware Engine, usa el 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?