En esta página se muestra cómo configurar los ajustes de DNS de un dominio con Cloud DNS y Cloud Tools for PowerShell. En este artículo se explica un ejemplo sencillo de cómo crear una zona gestionada para controlar un dominio y sus subdominios, y cómo añadir registros de recursos a la zona para proporcionar información que determine el comportamiento del servidor DNS al gestionar solicitudes a los dominios de la zona.
En este documento se da por hecho que tienes un nombre de dominio y una dirección IP a los que puedes dirigir el nombre de dominio. Si no lo tienes, puedes registrar un nombre de dominio a través de Google Domains u otro registrador de dominios que prefieras.
Consulta la referencia de cmdlets de Cloud Tools for PowerShell para obtener más información sobre los cmdlets de Cloud DNS. Para obtener más información sobre Cloud DNS en general, consulta la descripción general de Cloud DNS.
Crear una zona gestionada para tu dominio
Todo el espacio de nombres DNS se compone de muchos dominios, entre los que pronto se incluirá el tuyo. Las zonas gestionadas de Cloud DNS modelan zonas DNS y sirven como contenedores para organizar registros DNS (como entradas A, CNAME o TXT) del mismo sufijo de nombre DNS. Por ejemplo, los registros de "example.com." y de subdominios como "first.example.com." podrían estar en la misma zona, ya que comparten el sufijo "example.com.". Ten en cuenta el punto final, que es necesario y significa un nombre de DNS absoluto.
Para empezar, configura una zona gestionada para organizar los registros DNS que crearás para tu nombre de dominio. Puedes crear una zona gestionada y añadirla a tu proyecto de consola Google Cloud con el cmdlet Add-GcdManagedZone
:
Add-GcdManagedZone ` -Name "my-new-zone" ` -DnsName "example.com." ` -Description "This is my first zone."
De esta forma, se crea una zona con los detalles especificados y se añade al proyecto actual de la configuración activa de la CLI de gcloud. Sin embargo, también puedes especificar otro ID de proyecto si quieres. Además, se crearán registros NS y SOA predeterminados en la zona.
Sin embargo, para publicar los nuevos registros de la zona en Internet, también debes actualizar los servidores de nombres de tu dominio para usar Cloud DNS. Aunque tu dominio esté registrado en Google Domains, tendrás que actualizar sus servidores de nombres.
Para encontrar los servidores de nombres de Cloud DNS asignados a tu dominio, usa el cmdlet Get-GcdManagedZone
en la zona gestionada que rige el dominio para obtener información sobre la zona:
Get-GcdManagedZone -Zone "my-new-zone"
Añadir y quitar conjuntos de registros de recursos
Los registros de recursos DNS proporcionan información que determina el comportamiento del servidor DNS cuando gestiona las solicitudes enviadas a un dominio. Por ejemplo, los registros DNS se pueden usar para indicar al servidor a qué dirección IP se resuelve un dominio, indicar los servidores de intercambio de correo utilizables de un dominio y mucho más.
En Cloud DNS, puede añadir o eliminar registros DNS en una zona para configurar este comportamiento. Para añadir o eliminar conjuntos de registros de recursos inmutables, no se opera directamente en los registros de una zona. En su lugar, puedes crear registros de recursos independientes o recuperar los que ya tengas con los cmdlets New-GcdResourceRecordSet
y Get-GcdResourceRecordSet
, respectivamente. Después, puedes enviar solicitudes de cambio con estos registros a una zona específica mediante el cmdlet Add-GcdChange
.
Crear conjuntos de registros de recursos
Puedes usar el cmdlet auxiliar New-GcdResourceRecordSet
para crear un conjunto de registros de recursos que puedes incluir en un cambio y, a continuación, añadirlo a una zona gestionada o quitarlo de ella.
Por ejemplo, si quieres crear un registro A para que tu dominio dirija a una dirección IPv4 externa con el formato #.#.#.# (si tienes una dirección IPv6, usa un registro AAAA), puedes usar el siguiente comando:
$ARecord = New-GcdResourceRecordSet ` -Name "example.com." -Rrdata "107.1.23.134" -Type "A"
Del mismo modo, para crear un registro CNAME para el subdominio www de forma que "www.example.com." se resuelva en la misma IP y se comporte igual que "example.com.", puedes usar el siguiente comando:
$CNAMERecord = New-GcdResourceRecordSet ` -Name "www.example.com." -Rrdata "example.com." -Type "CNAME"
Los tipos de registros de recursos admitidos que puedes crear e incluir en los cambios de una zona son A, AAAA, CNAME, MX, NAPTR, NS, PTR, SOA, SPF, SRV y TXT. Para obtener ayuda sobre qué registros necesitas y cómo crearlos, consulta los formatos de registros de recursos admitidos en Cloud DNS.
Obtener conjuntos de registros de recursos
Si quieres recuperar un conjunto de registros de recursos de una zona, puedes usar el cmdlet Get-GcdResourceRecordSet
para devolver todos los registros de una zona y, a continuación, indexar los resultados:
$allRecords = Get-GcdResourceRecordSet -Zone "my-new-zone" $record0 = $allRecords[0]
Si solo quieres registros de un tipo específico, puedes filtrar los resultados de la siguiente manera:
$ARecord = Get-GcdResourceRecordSet -Zone "my-new-zone" -Filter "A"
Aplicar cambios a una zona gestionada
Los cmdlets New-GcdResourceRecordSet
y Get-GcdResourceRecordSet
devuelven conjuntos de registros de recursos, pero no añaden ni quitan registros de nada. Para ello, usa el cmdlet Add-GcdChange
:
Add-GcdChange ` -Zone "my-new-zone" -Add $record1,$record2 -Remove $record0
Por ejemplo, para añadir los registros A y CNAME que has creado anteriormente a nuestra zona, haz lo siguiente:
Add-GcdChange -Zone "my-new-zone" -Add $ARecord,$CNAMERecord
Si más adelante quieres cambiar la dirección IPv4 a la que se resuelve tu dominio, puedes crear un nuevo registro de tipo A y, a continuación, añadirlo a la zona gestionada mientras eliminas el registro A antiguo:
$oldARecord = Get-GcdResourceRecordSet -Zone "my-new-zone" -Filter "A" $newARecord = New-GcdResourceRecordSet ` -Name "example.com." -Rrdata "104.1.34.167" -Type "A" Add-GcdChange -Zone "my-new-zone" -Remove $oldARecord -Add $newARecord
Cada llamada al cmdlet Add-GcdChange
devuelve el objeto de solicitud de cambio recién ejecutado. También puedes pasarle a la cmdlet Add-GcdChange
un objeto de solicitud de cambio para ejecutarlo directamente en lugar de listas de conjuntos de registros de recursos:
Add-GcdChange -Zone "my-new-zone" -ChangeRequest $change0
No se recomienda crear objetos de solicitud de cambio manualmente, pero son útiles si quieres volver a aplicar un cambio que se haya hecho anteriormente o en otra zona.
Puede obtener todos los objetos de solicitud de cambio anteriores que se aplicaron a una zona mediante el cmdlet Get-GcdChange
:
$allChanges = Get-GcdChange -Zone "my-new-zone"
Puedes elegir un cambio específico indexando el resultado anterior o especificar qué cambio quieres recuperar con un ChangeId. Las solicitudes de cambio suelen numerarse a partir del 0 según el orden en que se envían a la zona:
$firstChange = Get-GcdChange -Zone "my-new-zone" -ChangeId 0 Add-GcdChange -Zone "my-new-zone" -ChangeRequest $firstChange
Eliminar zonas gestionadas
En ocasiones, puede que quieras eliminar una zona gestionada por completo. Esto puede deberse a varios motivos. Supongamos que tienes la zona gestionada "user1-zone" para el subdominio "user1.example.com.", pero el usuario 1 elimina su cuenta. En ese caso, querrás eliminar este subdominio y todos los registros DNS asociados.
Para quitar una zona gestionada de tu proyecto, usa el cmdlet Remove-GcdManagedZone
:
Remove-GcdManagedZone -Zone "user1-zone"
Si la acción se realiza correctamente, el comando no devuelve nada.
Sin embargo, este cmdlet no funciona inmediatamente en las zonas gestionadas que Cloud DNS considera "no vacías" o en las zonas que contienen registros de tipo distinto a NS o SOA (registros no predeterminados). Por ejemplo, no podría eliminar "my-new-zone", al que ha añadido registros de tipo A y CNAME, sin conceder permiso al cmdlet durante el procesamiento o sin usar el modificador -Force
:
Remove-GcdManagedZone -Zone "my-new-zone" -Force
El cmdlet Remove-GcdManagedZone
también acepta entradas de canalización para las zonas que se van a eliminar. Por ejemplo, el siguiente comando elimina por la fuerza todas las zonas gestionadas del proyecto actual. Esto puede ser útil si ya no mantienes ninguno de los dominios configurados en un proyecto:
Get-GcdManagedZone | Remove-GcdManagedZone -Force