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 Google Cloud CLI y las APIs

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 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 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 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 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 la shell:

    gcloud auth application-default login
    

    O bien, usa 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 tus 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. Accede a la consola de Google Cloud.
  2. En el menú de navegación principal, ve a Políticas de red.
  3. 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 la fila y selecciona Editar.
  4. 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.
  5. Cambia Acceso a Internet a Habilitado y, de manera opcional, habilita el Servicio de dirección IP externa.

  6. 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).

  7. 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 política de red.
  • NETWORK_ID: 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”.
  • 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 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_ID: Es la red para 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. Accede a la consola de Google Cloud.
  2. En el menú de navegación principal, ve a Políticas de red.
  3. En la fila correspondiente a la política de red relevante, haz clic en el ícono de Más.
  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. 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 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
  • 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

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 a la consola de Google Cloud.
  2. En el menú de navegación principal, ve a Políticas de red.
  3. En la fila correspondiente a la política de red relevante, haz clic en el ícono de Más.
  4. Cambia la opción IP pública a Inhabilitada.

  5. Cambia Acceso a Internet a Inhabilitado.

  6. Haz clic en Guardar.

  7. 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 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 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 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 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_NAME \
   --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)

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 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 fundamental para enrutar el tráfico de Internet a través de una conexión local o de VPC en tu proyecto.

Cuando están habilitados 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 de usuario del servicio intercambia tráfico con VMware Engine):

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

Ejemplo:

Si quieres habilitar los Controles del servicio de VPC para un intercambio de tráfico de conexión de 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 de las 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, 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?