Reenvío de DNS saliente de FQDN de Cloud DNS

1. Introducción

ef2d068c413a15bd.png

En este codelab, se te guiará para configurar zonas de reenvío de salida de Cloud DNS con un nombre de dominio completamente calificado (FQDN) como destino de reenvío. Esta función te permite dirigir el tráfico de DNS a las direcciones IP resueltas a partir de un nombre de DNS, en lugar de codificar de forma rígida las direcciones IP en la configuración de tu zona de reenvío. Esto es particularmente útil cuando cambian las direcciones IP del solucionador de DNS de backend, ya que puedes actualizar el registro DNS del FQDN y Cloud DNS detectará los cambios automáticamente.

Al finalizar este codelab, podrás configurar zonas de reenvío de Cloud DNS que usen lo siguiente:

  • Es un destino de FQDN que coincide con una zona privada con registros A/AAAA.
  • Es un objetivo de FQDN respaldado por políticas de enrutamiento de Cloud DNS (ubicación geográfica o round robin ponderado) para la afinidad regional o la distribución del tráfico.

Descripción general del reenvío de FQDN

El reenvío de Cloud DNS te permite resolver nombres DNS privados alojados fuera de Google Cloud (por ejemplo, en las instalaciones o en otras nubes) desde los recursos de Google Cloud. Tradicionalmente, esto admitía el reenvío a una lista de direcciones IP de destino. El reenvío de FQDN extiende esta función, ya que te permite especificar un FQDN como destino de reenvío en una zona de reenvío.

Cuando se especifica un FQDN, Cloud DNS lo resuelve en direcciones IP con una búsqueda interna, que usa la lógica de resolución de la red de origen. Esto significa que el destino del FQDN puede coincidir con una zona privada, una política de enrutamiento de DNS (ubicación geográfica o round robin ponderado) o incluso un nombre de dominio público de Internet. Luego, Cloud DNS reenvía la consulta a la IP de destino resuelta.

Qué compilarás

Reenvío de FQDN regional con una nueva zona privada

Crearás una configuración que logra afinidad regional para el tráfico de DNS. Esto implica crear una zona de DNS privada y configurar una política de enrutamiento por ubicación geográfica dentro de ella, y, luego, vincular una zona de reenvío a este destino de FQDN. Esto garantiza que el tráfico de una región específica (por ejemplo, us-east1) se reenvíe a un servidor DNS regional correspondiente.

Reenvío de FQDN con una zona privada existente

Aprenderás a crear una zona de reenvío que apunte a un FQDN respaldado por un registro A/AAAA dentro de una zona de DNS privada existente. En este ejemplo, se muestra el reenvío de consultas a direcciones IP definidas de forma estática que se resuelven con un destino de reenvío de FQDN.

Qué aprenderás

El concepto de redirección de FQDN

Comprenderás que el reenvío de FQDN extiende el reenvío de DNS, ya que te permite especificar un destino de reenvío de FQDN en lugar de solo direcciones IP como destinos de reenvío para las consultas salientes.

Beneficios del reenvío de FQDN

Aprenderás que esta función elimina la necesidad de realizar actualizaciones manuales cuando cambian las direcciones IP del agente de resolución de DNS de backend, ya que Cloud DNS detecta automáticamente los cambios del registro DNS del FQDN. También permite un ajuste de escala más flexible de la infraestructura de DNS, ya que permite que los servidores de DNS estén detrás de un nombre compartido o se ajusten de forma dinámica.

Integración con las políticas de enrutamiento de Cloud DNS

Aprenderás cómo el reenvío de FQDN se puede combinar con las políticas de enrutamiento de Cloud DNS (ubicación geográfica o round robin ponderado) para lograr afinidad regional, optimizar el rendimiento de las implementaciones geográficamente diversas y distribuir el tráfico según los pesos configurados.

Sintaxis de comandos de Google Cloud CLI

Te familiarizarás con el comando gcloud dns managed-zones create y sus marcas relevantes (--forwarding-targets, --private-forwarding-targets) para configurar zonas de reenvío de FQDN.

Requisitos previos

Para completar este codelab, necesitarás lo siguiente:

2. Cómo prepararte

Acerca de las situaciones de reenvío de FQDN

El reenvío de FQDN de Cloud DNS admite varios casos de uso:

  • Zona privada con registro A/AAAA: Si el FQDN coincide con un registro A/AAAA en una zona privada, las direcciones IP resueltas se agregan a la lista de reenvío, y el comportamiento es idéntico al reenvío directo a las direcciones IP de destino.
  • Zona privada con política de ubicación geográfica: Las políticas de ubicación geográfica te permiten especificar la ubicación geográfica de origen y proporcionar respuestas correspondientes, lo que verifica la distribución del tráfico según la ubicación geográfica. Esto es clave para la afinidad y el reenvío de DNS regionales.
  • Zona privada con política de round robin ponderado (WRR): Las políticas de WRR permiten especificar diferentes pesos por dirección IP para un nombre de DNS, lo que verifica que el tráfico se distribuya según los pesos configurados.
  • Zona pública con registro A/AAAA: Si el FQDN no coincide con ningún nombre privado visible para la misma red, Cloud DNS intenta resolverlo con la Internet pública.

Información sobre el comando de Google Cloud CLI para el reenvío de FQDN

Para crear una zona de reenvío con un destino de reenvío de FQDN usando comandos de la CLI de gcloud, usarás el comando gcloud dns managed-zones create. Las marcas clave para especificar un destino de FQDN son --forwarding-targets o --private-forwarding-targets. Consulta el documento para obtener detalles sobre los métodos de enrutamiento estándar y privado.

  • --forwarding-targets: Es una lista de direcciones IPv4 o IPv6, o un nombre de dominio del servidor de nombres de destino al que la zona reenviará las consultas. Se ignora para la visibilidad pública. Las direcciones que no sean RFC1918 se reenviarán al destino a través de Internet. Las direcciones RFC1918 se reenviarán a través de la VPC.
  • --private-forwarding-targets: Es una lista de direcciones IPv4 o IPv6, o un nombre de dominio del servidor de nombres de destino al que la zona reenviará las consultas. Se ignora para la visibilidad pública. Se accederá a todas las direcciones especificadas para este parámetro a través de la VPC.

Ejemplo de sintaxis:

gcloud dns managed-zones create NAME \
    --description=DESCRIPTION \
    --dns-name=DNS_SUFFIX \
    --networks=VPC_NETWORK_LIST \
    --forwarding-targets=DEFAULT_FQDN_TARGET \
    --visibility=private

Ten en cuenta que puedes especificar --private-forwarding-targets en lugar de --forwarding-targets.

Configura tu proyecto de Google Cloud Platform

Accede a gcloud CLI.

gcloud auth login

Crear un proyecto

gcloud projects create my-codelab-project

Habilita la API de Cloud DNS. Es posible que el cambio tarde unos minutos en aplicarse.

gcloud services enable dns.googleapis.com

En este codelab, se usa la red de VPC predeterminada que se crea con un proyecto nuevo. También puedes crear una red nueva para usarla.

3. Configura el reenvío regional de FQDN (con una zona privada nueva)

En este caso, se muestra cómo lograr el reenvío de DNS regional, lo que garantiza que el tráfico de una región específica se reenvíe a un servidor DNS dentro de esa misma región.

Crea una zona de DNS privado

Primero, crea una zona del DNS privada (por ejemplo, foo.com) que alojará tu FQDN y su política de enrutamiento por ubicación geográfica asociada. Esta zona debe ser visible para tu red predeterminada.

gcloud dns managed-zones create my-zone \
    --description="Private Zone for FQDN outbound DNS forwarding." \
    --dns-name=foo.com. \
    --networks=default \
    --visibility=private

Crea un conjunto de registros de política de enrutamiento por ubicación geográfica dentro de la zona privada

A continuación, crea un conjunto de registros (por ejemplo, geo.foo.com) dentro de my-zone y aplica una política de enrutamiento de ubicación geográfica. En este ejemplo, se configuran direcciones IP para asia-east1 y asia-west1.

gcloud dns record-sets create geo.foo.com. \
    --ttl="30" \
    --type="A" \
    --zone="my-zone" \
    --routing-policy-type="GEO" \
    --routing-policy-data="asia-east1=192.168.0.1;us-central1=192.168.0.2"

Nota: Si la delimitación geográfica está inhabilitada (opción predeterminada y recomendada), las consultas se dirigirán a la región en buen estado más cercana si un destino en la región original no está en buen estado.

Crea una zona de reenvío con el FQDN de destino

Crea una zona de reenvío (geo.test.com.) visible en la misma red predeterminada y establece geo.foo.com. (el FQDN con la política de enrutamiento basada en la ubicación geográfica) como su destino de reenvío.

gcloud dns managed-zones create my-geo-fwd-zone \
    --description="Forwarding zone for FQDN outbound DNS forwarding for routing policy." \
    --dns-name=geo.test.com. \
    --networks=default \
    --private-forwarding-targets=geo.foo.com. \
    --visibility=private

Cualquier consulta de DNS que coincida con geo.test.com ahora se reenvía a la IP resuelta (por ejemplo, 192.168.0.1 o 192.168.0.2) de geo.foo.com, según la región de origen de la consulta.

4. Configura el reenvío de FQDN (con una zona privada existente)

Tener una zona de DNS privada existente

Supongamos que ya tienes una zona de DNS privada llamada my-zone (foo.com.) visible para la red default.

Crea un registro de recursos de DNS dentro de esta zona privada

Crea un registro de tipo A para a.foo.com en tu my-zone existente.

gcloud dns record-sets create a.foo.com. \
    --ttl="30" \
    --type="A" \
    --zone="my-zone" \
    --rrdatas=1.2.3.4

Crea una zona de reenvío y especifica el destino del FQDN

De manera similar al caso del FQDN regional, crea una zona de reenvío y especifica a.foo.com. como el destino de reenvío.

gcloud dns managed-zones create my-a-fwd-zone \
    --description="Forwarding zone for FQDN outbound DNS forwarding for A record." \
    --dns-name=a.test.com. \
    --networks=default \
    --private-forwarding-targets=a.foo.com. \
    --visibility=private

Cualquier consulta de DNS que coincida con a.test.com. se reenviará a las direcciones IP resueltas 1.2.3.4 de a.foo.com.

5. Limpia

Antes de que se pueda borrar una zona privada, primero se deben borrar todos los ResourceRecordSets dentro de la zona privada (con la excepción de los registros NS y SOA, que se generan automáticamente y siempre deben existir en la zona privada).

Borra la política de enrutamiento por ubicación geográfica en la zona privada.

gcloud dns record-sets delete "geo.foo.com." --type="A" --zone="my-zone"

Borra el registro A en la zona privada.

gcloud dns record-sets delete "a.foo.com." --type="A" --zone="my-zone"

Borra la zona privada.

gcloud dns managed-zones delete "my-zone"

Borra la zona de reenvío de la política de enrutamiento por ubicación geográfica.

gcloud dns managed-zones delete "my-geo-fwd-zone"

Borra la zona de reenvío del registro A.

gcloud dns managed-zones delete "my-a-fwd-zone"

6. Felicitaciones

¡Felicitaciones! Aprendiste a usar correctamente el reenvío de DNS saliente del FQDN.

Lecturas adicionales

Documentos de referencia