Servicio de direcciones IP públicas

El servicio de red de dirección IP pública (externa) te permite conectarte desde Internet a una máquina virtual (VM) de carga de trabajo, un dispositivo de administración o un balanceador de cargas que se ejecute 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.

gcloud y requisitos previos de la API

Para usar la herramienta de línea de comandos de gcloud o la API a fin de administrar los recursos de VMware Engine, 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. Establece 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 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 de 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 el 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 se deben configurar las credenciales predeterminadas de la aplicación.

  1. Descarga y, luego, 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 usar 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 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:

Consola

  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 política de red.
  • NETWORK_NAME: Es la red para esta solicitud, que debe tener el formato REGION-default.
  • IP_RANGE: Es el rango CIDR que se usará para el acceso a Internet y las puertas de enlace de IP externas, en notación CIDR. Se requiere un bloque CIDR de RFC 1918 con un prefijo “/26”
  • 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 política de red.
  • PROJECT_ID: Es el ID del proyecto de esta solicitud.
  • REGION: Es la región de la red.
  • IP_RANGE: Es el rango CIDR que se usará para el acceso a Internet y las puertas de enlace de IP externas, en notación CIDR. Se requiere un bloque CIDR RFC 1918 con un prefijo “/26”.
  • NETWORK_NAME: La red a la que se aplica esta política de red debe tener el formato >REGION-default.

Python

Crea una política de red nueva con external_ip y internet_access configurados como 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.