Configura vinculaciones de DNS

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

Cada nube privada implementa un servidor de Cloud DNS que se usa para la resolución de todos los dispositivos de administración. Puedes configurar este servidor como el servidor DNS para todas las cargas de trabajo de VMware mediante la configuración de las vinculaciones de DNS. Para ello, sigue estos pasos:

  1. Obtén la dirección IP del servidor DNS de la nube privada
  2. Configura los permisos de vinculación de DNS para permitir que una principal de usuario se vincule a la VPC de la intranet
  3. Configura DNS para las cargas de trabajo de VMware o la configuración de DNS DHCP del segmento NSX-T

Antes de comenzar

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

Requisitos de gcloud y la API

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.

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

Console

Sigue estos pasos para obtener la dirección IP del servidor DNS de tu nube privada.

  1. Accede a la consola de Google Cloud.
  2. En el menú de navegación principal, haz clic en Nubes privadas.
  3. Haz clic en el nombre de la nube privada a la que deseas conectarte.
  4. En la página Resumen de la nube privada, en Servidores privados de Cloud DNS, haz clic en Copiar para copiar la dirección IP privada del servidor de Cloud DNS.

gcloud

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

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

Reemplaza lo siguiente:

  • PRIVATE_CLOUD_ID: Es el nombre de la nube privada para esta solicitud.
  • PROJECT_ID: Es el ID del proyecto de esta solicitud.
  • REGION: Es 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, realiza 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"

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID del proyecto de esta solicitud.
  • REGION: Es 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: Es el nombre de la nube privada para esta solicitud.

Configura los permisos de vinculación de DNS

Solo puedes configurar y administrar los permisos de vinculación de DNS con la herramienta de gcloud o directamente con la API de REST. No es posible configurar vinculaciones a través de la consola.

Otorgar permiso de vinculación de DNS

Para que un usuario configure vinculaciones de DNS, debes otorgar a una principal de usuario el permiso para vincularse a la VPC de intranet. En este caso, el principal de usuario es la dirección de correo electrónico del usuario que vinculará la zona del DNS privada a la VPC de la intranet.

gcloud

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

Reemplaza USER por el correo electrónico del usuario que vinculará la zona del DNS privado con la VPC de la intranet. Por ejemplo, example1@gmail.com

API

Realiza una solicitud POST al método dnsBindPermissions:grant 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/privateClouds/dnsBindPermission:grant

{
"Principal": {
  "user": "USER"
}
}

Reemplaza lo siguiente:

  • PROJECT_ID: Es el proyecto para esta solicitud.
  • USER: Es el correo electrónico del usuario para el que deseas revocar permisos. Por ejemplo, example1@gmail.com

Revocar permiso de vinculación de DNS

Revoca el permiso de vinculación de DNS que se otorgó al usuario con anterioridad.

gcloud

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

Reemplaza USER por el correo electrónico del usuario al que deseas revocarle permisos. Por ejemplo, example1@gmail.com

API

Realiza 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/privateClouds/dnsBindPermission:revoke

{
"Principal": {
  "user": "USER"
}
}

Reemplaza lo siguiente:

  • PROJECT_ID: Es el proyecto para esta solicitud.
  • USER: Es el correo electrónico del usuario para el que deseas revocar permisos. Por ejemplo, example1@gmail.com

Describir el permiso de vinculación de DNS

Describe los permisos de vinculación de DNS para un proyecto y qué usuario principal tiene acceso para configurar las vinculaciones 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/privateClouds/dnsBindPermission

Reemplaza PROJECT_ID por el proyecto para esta solicitud.

Vincula la zona de DNS de la nube privada a la VPC de intranet de la red de VMware Engine

Una vez que otorgas a un usuario principal los permisos para configurar vinculaciones de DNS, el usuario puede crear una vinculación entre la zona de DNS privada en Cloud DNS y la VPC de intranet de la red de VMware Engine. VMware Engine usa el intercambio de tráfico de DNS para facilitar la resolución de Cloud DNS.

Ubica la URL de VPC de intranet

Necesitas la URL de VPC de intranet de la red para crear la vinculación nueva. Puedes encontrar la VPC de la intranet de VMware Engine si enumeras los detalles de la red de VMware Engine.

Console

Para ubicar la URL de VPC de intranet con la consola de Google Cloud, sigue estos pasos:

  1. Accede a la consola de Google Cloud.
  2. En el menú de navegación principal, haz clic en Redes de VMware Engine.
  3. Ubica la red de VMware Engine, haz clic en la opción Acción y selecciona Copiar URL de la red de VPC de intranet.

gcloud

gcloud vmware networks describe VMWARE_ENGINE_NETWORK

Reemplaza VMWARE_ENGINE_NETWORK por la red que deseas describir. Como parte de la respuesta, gcloud muestra los detalles de la red que contiene la URL de VPC de intranet.

API

Realiza 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

Reemplaza lo siguiente:

  • PROJECT_ID: Es el proyecto para esta solicitud.
  • NETWORK_ID: Es la red que se describirá.

Vinculación

Una vez configurados los permisos de vinculación, el flujo de trabajo previsto consiste en agregar un intercambio de tráfico de DNS a la VPC de intranet de la red de VMware Engine en el proceso de administración de zonas estándar de Cloud DNS 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"

Reemplaza lo siguiente:

  • DOMAIN: Es el dominio que se extiende, ejemplo zone1.example.com.
  • INTRANET_VPC_URL: Es la URL de VPC de intranet para la red de VMware Engine.
  • EXISTING_VPC: La URL de la red de VPC existente a la que ya está vinculado DOMAIN
  • PROJECT_ID: Es el ID del proyecto de esta solicitud.

API

Realiza 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
      }
    ]
  }
}"

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID del proyecto de esta solicitud.
  • DOMAIN: Es el dominio que se extiende, ejemplo zone1.example.com.
  • INTRANET_VPC_URL: Es la URL de VPC de intranet para la red de VMware Engine.
  • EXISTING_VPC: Es la URL de la red de VPC existente a la que ya está vinculado DOMAIN.

Ejemplo de vinculaciones de DNS

Los siguientes son algunos ejemplos de vinculaciones de DNS que puedes usar.

Autorizado

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"

Reenviar todo

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