Configurar enlaces DNS

En esta página se describe cómo configurar las vinculaciones de DNS para las redes de VMware Engine estándar.

Cada nube privada implementa un servidor Cloud DNS que se usa para la resolución de todos los dispositivos de gestión. Puedes configurar este servidor como servidor DNS para todas las cargas de trabajo de VMware configurando enlaces DNS. Para ello, debes hacer lo siguiente:

  1. Obtener la dirección IP del servidor DNS de Private Cloud
  2. Configurar permisos de enlace de DNS para permitir que un principal de usuario se enlace a la VPC de la intranet
  3. Configurar el DNS para las cargas de trabajo de VMware o el ajuste de DNS DHCP del segmento NSX

Antes de empezar

Solo puedes configurar las vinculaciones de DNS con la herramienta gcloud o la API.

Requisitos de gcloud y de la API

Para usar la herramienta de línea de comandos gcloud o la API para gestionar tus recursos de VMware Engine, te recomendamos que configures las herramientas como se describe a continuación.

gcloud

  1. Configura tu ID de proyecto predeterminado:

    gcloud config set project PROJECT_ID
    
  2. Definir 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 la documentación de referencia del SDK de Google Cloud.

API

En los ejemplos de API de este conjunto de documentación se usa la herramienta de línea de comandos cURL para consultar la API. Se necesita un token de acceso válido como parte de la solicitud cURL. Hay muchas formas de obtener un token de acceso válido. En los siguientes pasos se utiliza la herramienta gcloud para generar un token de acceso:

  1. Inicia sesión en Google Cloud:

    gcloud auth login
    
  2. Generar token de acceso y exportarlo 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

Los ejemplos de código de Python de esta documentación usan la biblioteca VMware Engine para comunicarse con la API. Para poder usar este método, la biblioteca debe estar instalada y las credenciales de aplicación predeterminadas deben estar configuradas.

  1. Descarga e instala la biblioteca de Python:

    pip install google-cloud-vmwareengine
    
  2. Configura la información de ADC ejecutando esos comandos en tu shell:

    gcloud auth application-default login
    

    También puedes usar un archivo de clave 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 los ejemplos de código en GitHub.

Obtener la IP de un servidor DNS de carga de trabajo de una nube privada

Consola

Para obtener la dirección IP del servidor DNS de tu nube privada, sigue estos pasos.

  1. En la Google Cloud consola, ve a la página Nubes privadas.

    Ir a Private Cloud

  2. Haz clic en Seleccionar un proyecto y, a continuación, selecciona la organización, la carpeta o el proyecto que contenga la nube privada a la que quieras conectarte.

  3. Haga clic en el nombre de la nube privada.

  4. En la página Resumen de la nube privada, en Servidores DNS de Private Cloud, haz clic en Copiar para copiar la dirección IP del servidor DNS de Private Cloud.

gcloud

Para obtener la dirección IP del servidor DNS de tu nube privada con la CLI de Google Cloud, usa el comando gcloud vmware private-clouds describe:

 gcloud vmware private-clouds describe PRIVATE_CLOUD_ID \
  --project=PROJECT_ID \
  --location=REGION

Haz los cambios siguientes:

  • PRIVATE_CLOUD_ID: el nombre de la nube privada de esta solicitud
  • PROJECT_ID: el ID de proyecto de esta solicitud
  • REGION: la región de la nube privada. Si se trata de una nube privada ampliada, especifica la zona de esta nube privada.

API

Para obtener la dirección IP del servidor DNS de tu nube privada mediante la API de VMware Engine, haz una solicitud GET:

curl -X GET -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" "https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/privateCloud/PRIVATE_CLOUD_ID"

Haz los cambios siguientes:

  • PROJECT_ID: el ID de proyecto de esta solicitud
  • REGION: la región de la nube privada. Si se trata de una nube privada ampliada, especifica la zona de esta nube privada.
  • PRIVATE_CLOUD_ID: nombre de la nube privada de esta solicitud.

Configurar permisos de enlace de DNS

Solo puedes configurar y gestionar los permisos de enlace de DNS con la herramienta gcloud o directamente con la API REST. No se pueden configurar enlaces a través de la consola.

Conceder permiso de vinculación de DNS

Para que un usuario pueda configurar enlaces DNS, debes conceder a un principal de usuario el permiso para enlazarse a la VPC de la intranet. En este caso, el principal de usuario es la dirección de correo electrónico del usuario que vinculará la zona DNS privada con la VPC de la intranet.

gcloud

gcloud vmware dns-bind-permission grant \
  --user=USER

Sustituye USER por el correo del usuario que va a vincular la zona DNS privada con la VPC de la intranet. Por ejemplo, example1@gmail.com.

API

Haz una solicitud POST al método dnsBindPermissions:grant e indica la dirección de correo del usuario en el cuerpo de la solicitud.

curl -X POST -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/dnsBindPermission:grant -d '
{
"principal": {
  "user": "USER"
}
}'

Haz los cambios siguientes:

  • PROJECT_ID: el proyecto de esta solicitud.
  • USER: el correo del usuario al que quieres revocar los permisos. Por ejemplo, example1@gmail.com.

Revocar permiso de vinculación de DNS

Revoca el permiso de enlace de DNS que se había concedido al usuario.

gcloud

gcloud vmware dns-bind-permission revoke \
  --user=USER

Sustituye USER por el correo del usuario al que quieras revocar los permisos. Por ejemplo, example1@gmail.com.

API

Envía una solicitud POST a dnsBindPermissions:revoke y proporciona la dirección de correo electrónico del usuario en el cuerpo de la solicitud.

curl -X POST -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/dnsBindPermission:revoke -d '
{
"principal": {
  "user": "USER"
}
}'

Haz los cambios siguientes:

  • PROJECT_ID: el proyecto de esta solicitud.
  • USER: el correo del usuario al que quieres revocar los permisos. Por ejemplo, example1@gmail.com.

Describe el permiso de enlace de DNS

Describe los permisos de enlace de DNS de un proyecto y qué principal de usuario tiene acceso para configurar los enlaces de DNS.

gcloud

gcloud vmware dns-bind-permission describe

API

Realiza una solicitud GET al recurso dnsBindPermissions.

curl -X GET -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/dnsBindPermission

Sustituye PROJECT_ID por el proyecto de esta solicitud.

Vincular la zona DNS de la nube privada con la red de VPC de la intranet de VMware Engine

Una vez que hayas concedido a un principal de usuario los permisos para configurar las vinculaciones de DNS, el usuario podrá crear una vinculación entre la zona de DNS privada de Cloud DNS y la red de VPC de la intranet de VMware Engine. VMware Engine usa el peering de DNS para facilitar la resolución de Cloud DNS.

Localizar la URL de la VPC de la intranet

Necesitas la URL de la VPC de la intranet de la red para crear el nuevo enlace. Para encontrar la VPC de la intranet de la red de VMware Engine, consulta los detalles de la red de VMware Engine.

Consola

Para localizar la URL de la VPC de la intranet mediante la consola de Google Cloud , sigue estos pasos:

  1. En la Google Cloud consola, ve a la página Redes de VMware Engine.

    Ir a redes de VMware Engine

  2. Haga clic en Seleccionar un proyecto y, a continuación, seleccione la organización, la carpeta o el proyecto que contenga la red de VMware Engine.

  3. Busca la red de VMware Engine, haz clic en la opción Acción y selecciona Copiar URL de red de VPC de intranet.

gcloud

gcloud vmware networks describe VMWARE_ENGINE_NETWORK

Sustituye VMWARE_ENGINE_NETWORK por la red que quieras describir. Como parte de la respuesta, gcloud devuelve los detalles de la red que contiene la URL de la VPC de la intranet.

API

Haz una solicitud GET al recurso vmwareEngineNetworks y proporciona el nombre de la red:

curl -X GET -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/vmwarenEngineNetworks/NETWORK_ID

Haz los cambios siguientes:

  • PROJECT_ID: el proyecto de esta solicitud
  • NETWORK_ID: la cadena que se va a describir.

Vinculación

El flujo de trabajo previsto, una vez configurados los permisos de enlace, consiste en añadir un peering de DNS a la red de VPC de la intranet de la red de VMware Engine en tu proceso de gestión de zonas de Cloud DNS estándar para cada zona.

gcloud

gcloud dns managed-zones create peering-DOMAIN  \
--dns-name="DOMAIN" \
--visibility="private" \
--networks="INTRANET_VPC_URL" \
--target-project="PROJECT_ID" \
--target-network="EXISTING_VPC" \
--description="DESCRIPTION"

Haz los cambios siguientes:

  • DOMAIN: el dominio que se va a ampliar. Por ejemplo, zone1.example.com.
  • INTRANET_VPC_URL: URL de la VPC de la intranet de la red de VMware Engine.
  • EXISTING_VPC: la URL de la red de VPC a la que ya está enlazado el DOMAIN
  • PROJECT_ID: el ID de proyecto de esta solicitud

API

Haz una solicitud PATCH al recurso managedZones y proporciona el nombre de la zona:

curl -X POST -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" https://dns.googleapis.com/v1/projects/PROJECT_ID/managedZones -d "{
"name": "peering-DOMAIN",          
"description": "",
"dnsName": DOMAIN,
"peeringConfig": {
    "targetNetwork": {
        "networkUrl": EXISTING_VPC
    }
  },
  "privateVisibilityConfig": {
    "networks": [
      {
        "networkUrl": INTRANET_VPC_URL
      }
    ]
  }  
}"

Haz los cambios siguientes:

  • PROJECT_ID: el ID de proyecto de esta solicitud
  • DOMAIN: el dominio que se va a ampliar. Por ejemplo, zone1.example.com.
  • INTRANET_VPC_URL: URL de la VPC de la intranet de la red de VMware Engine.
  • EXISTING_VPC: URL de la red de VPC a la que ya está enlazado el DOMAIN

Ejemplos de vinculaciones de DNS

A continuación, se muestran algunos ejemplos de enlaces DNS que puedes usar.

Acreditado

gcloud dns managed-zones create zone1 \
  --dns-name="zone1.example.com." \
  --visibility="private" \
  --description="DESCRIPTION" \
  --networks="EXISTING_VPC"
gcloud dns managed-zones create peering-zone1 \
  --dns-name="zone1.example.com." \
  --visibility="private" \
  --networks="INTRANET_VPC_URL" \
  --target-project="PROJECT_ID" \
  --target-network="EXISTING_VPC" \
  --description="DESCRIPTION"

Reenvío condicional

gcloud dns managed-zones create zone1 \
  --description="DESCRIPTION" \
  --dns-name="zone1.example.com." \
  --visibility="private" \
  --networks=EXISTING_VPC \
  --forwarding-targets="DNS_SERVER_IP1","DNS_SERVER_IP2"
gcloud dns managed-zones create peering-zone1 \
  --dns-name="zone1.example.com." \
  --visibility="private" \
  --networks="INTRANET_VPC_URL" \
  --target-project="PROJECT_ID" \
  --target-network="EXISTING_VPC" \
  --description="DESCRIPTION"

Desviar todas

gcloud dns managed-zones create forward-all \
  --description="" --dns-name="." \
  --visibility="private" \
  --networks="EXISTING_VPC" \
  --forwarding-targets="DNS_SERVER_IP1","DNS_SERVER_IP2"
gcloud dns managed-zones create peering-forward-all \
  --dns-name="." \
  --visibility="private" \
  --networks="INTRANET_VPC_URL" \
  --target-project="PROJECT_ID" \
  --target-network="EXISTING_VPC" \
  --description="DESCRIPTION"

API privada de Google

gcloud dns managed-zones create googleapis \
  --dns-name="googleapis.com." \
  --visibility="private" \
  --description="Direct GCVE traffic to Private IPs for Google API Access" \
  --networks="EXISTING_VPC"
gcloud dns managed-zones create peering-googleapis  \
  --dns-name="googleapis.com." \
  --visibility="private" \
  --networks="INTRANET_VPC_URL" \
  --target-project="PROJECT_ID" \
  --target-network="EXISTING_VPC" \
  --description="DESCRIPTION"
gcloud dns record-sets create private.googleapis.com. \
  --zone="googleapis" \
  --type="A" \
  --ttl="300" \
  --rrdatas="199.36.153.8,199.36.153.9,199.36.153.10,199.36.153.11"
gcloud dns record-sets create *.googleapis.com. \
  --zone="googleapis" \
  --type="CNAME" \
  --ttl="300" \
  --rrdatas="private.googleapis.com."

API de Google restringida

gcloud dns managed-zones create googleapis \
  --dns-name="googleapis.com." \
  --visibility="private" \
  --description="Direct GCVE traffic to Private IPs for Google API Access" \
  --networks="EXISTING_VPC"
gcloud dns managed-zones create peering-googleapis \
  --dns-name="googleapis.com." \
  --visibility="private" \
  --networks="INTRANET_VPC_URL" \
  --target-project="PROJECT_ID" \
  --target-network="EXISTING_VPC" \
  --description="DESCRIPTION"
gcloud dns record-sets create restricted.googleapis.com. \
  --zone="googleapis" \
  --type="A" \
  --ttl="300" \
  --rrdatas="199.36.153.4, 199.36.153.5, 199.36.153.6, 199.36.153.7"
gcloud dns record-sets create *.googleapis.com. \
  --zone="googleapis" \
  --type="CNAME" \
  --ttl="300" \
  --rrdatas="restricted.googleapis.com."