Servicio de direcciones IP públicas

El servicio de red de dirección IP pública (externa) permite conectarse desde Internet para una máquina virtual (VM) de carga de trabajo, un dispositivo de administración o un balanceador de cargas que se ejecutan en tu nube privada. Por ejemplo, si ejecutas un servidor web en la VM de carga de trabajo, puedes entregar el tráfico web con una dirección IP pública a través de Internet. De forma predeterminada, el servicio de red de IP pública está inhabilitado.

Asignar una dirección IP pública a un recurso también proporciona los siguientes beneficios:

  • Prevención de ataques de denegación de servicio distribuido (DSD). Esta protección se habilita de forma automática para la dirección IP pública
  • Supervisión de tráfico siempre activa y mitigación en tiempo real de ataques comunes a nivel de red
  • Protección y mitigación de ataques en toda la escala de la red global. La red se puede usar para distribuir y mitigar el tráfico de ataques en las regiones

Comportamiento

Una dirección IP pública solo se puede asignar a una privada, y la primera se dedicará a esa dirección IP privada hasta que anules la asignación. Un recurso asociado a una dirección IP pública siempre usa la dirección IP pública para acceder a Internet. Puedes reservar hasta 100 direcciones IP públicas para la red de VPC principal conectada a VMware Engine.

De forma predeterminada, se rechaza el tráfico entrante en una dirección IP pública y solo se permite el acceso saliente a Internet. A fin de permitir el tráfico entrante, crea una regla de firewall para la dirección IP pública al puerto específico.

Requisitos previos de gcloud y de la API

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 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 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, 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. Para configurar la información de ADC, ejecuta esos comandos en tu shell

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

Habilita el servicio de red IP pública en una región

Antes de poder asignar una dirección IP pública a una VM de carga de trabajo, debes habilitar el servicio de red de IP pública en la región:

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. Si esa región no aparece en la tabla de resumen, haz clic en Agregar región.
  4. Cambia el Servicio de IP pública a Habilitado.
    • Para habilitar el servicio de IP pública, también debes habilitar el servicio de red de acceso a Internet.
    • Es posible habilitar el servicio de 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 los servicios perimetrales, ingresa el rango de direcciones que se usará cuando se dirija la puerta de enlace de IP pública de VMware Engine (rango de direcciones /26).
  6. Haga clic en Enviar.

El estado del servicio de red cambia a Habilitado cuando se completa la operación, generalmente 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 NETWORK_NAME --edge-services-cidr IP_RANGE \
    --location REGION --external-ip-access --internet-access

Reemplaza lo siguiente:

  • NETWORK_POLICY_NAME: Es el nombre de esta red. política
  • NETWORK_NAME: Es la red para esta solicitud. debe tener el formato REGION-default
  • 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
  • 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.
  • 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. Un RFC Bloque CIDR de 1918 con un “/26” el prefijo es obligatorio.
  • NETWORK_NAME: Es la red a la que corresponde esta política de red. se aplica, debe tener el formato >REGION-default

Python

Crea una política de red nueva con external_ip y internet_access configurada en True con la siguiente función:

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)

Asigna una dirección IP pública

A fin de asignar una dirección IP pública para una VM de carga de trabajo, haz lo siguiente:

  1. Accede al portal de Google Cloud VMware Engine.
  2. Ve a Red > IP públicas.
  3. Haz clic en Allocate.
  4. En el campo Nombre, ingresa un nombre para identificar la entrada de la dirección IP pública.
  5. Selecciona la Nube privada que contiene la VM de carga de trabajo.
  6. Selecciona la ubicación en la que deseas entregar la IP pública asignada.
  7. En el campo Dirección local adjunta, ingresa la dirección IP local de la VM a la que deseas asignar esta dirección IP pública.
  8. Haz clic en Enviar para iniciar la tarea de asignar la dirección IP pública.

Puedes verificar el estado de la tarea en la página Actividad > Tareas. Cuando se complete la asignación, la entrada nueva aparecerá en la página de IP públicas bajo el estado Operativo.