Como gerenciar registros

O gerenciamento de registros DNS para a API do Cloud DNS envolve o envio de solicitações de alteração à API. Nesta página, você verá uma descrição sobre como fazer alterações, incluindo adições e exclusões na sua coleção de registros de recursos. Você também verá como enviar as alterações desejadas para a API usando os comandos import, export e transaction.

Antes de começar

Você já precisa ter criado uma zona gerenciada e concluído os pré-requisitos da tarefa.

Observe que é possível adicionar ou remover registros DNS em um conjunto de registros ao criar e executar uma transação que especifique as operações que quer realizar. Uma transação é um grupo de uma ou mais alterações de registro que precisam ser propagadas em conjunto. Para que seus dados nunca fiquem no estado intermediário, a transação tem sucesso ou falha.

Como adicionar um registro

Ao adicionar um registro, é possível incluir dois valores ou strings ao conjunto de registros para o mesmo nome de DNS. Ao adicionar conjuntos de registros, é necessário incluir um espaço entre o primeiro e o segundo valor.

Console

Para criar um conjunto de registros no Console do Cloud, faça o seguinte:

  1. Acesse a página do Cloud DNS.
  2. Clique no nome da zona gerenciada em que você quer adicionar o registro.
  3. Na tela de detalhes da zona, clique em Adicionar conjunto de registros.
  4. Na tela "Criar conjunto de registros", no campo Nome do DNS, insira o subdomínio da zona de DNS. Por exemplo, mail. O ponto é adicionado automaticamente no final.

    Para criar um registro DNS curinga, insira um asterisco. Por exemplo, *.example.com.

  5. Selecione o Tipo de registro de recurso. Por exemplo, MX.

  6. No campo TTL, insira um valor numérico para o time to live (TTL) de registro do recurso, que é o tempo que ele pode ser armazenado em cache. Este valor precisa ser um número inteiro positivo. No menu suspenso Unidade TTL, selecione a unidade de tempo. Por exemplo, 30 minutes.

  7. Dependendo do tipo de registro de recurso selecionado, preencha os campos restantes conforme descrito na tabela.

  8. É possível inserir mais informações clicando em Adicionar item.

  9. Clique em Criar.

gcloud

  1. Para iniciar uma transação, use o comando gcloud dns record-sets transaction start:
gcloud dns record-sets transaction start --zone="my-zone-name"
  

em que

  • --zone é o nome da zona gerenciada com os conjuntos de registros que você quer gerenciar.
  1. Para adicionar um conjunto de registros como parte de uma transação, use o comando gcloud dns record-sets transaction add:
gcloud dns record-sets transaction add 10.2.3.4 --name="test.example.com" \
  --ttl="30" \
  --type="A" \
  --zone="my-zone-name"
  

em que

  • --name é o DNS ou nome de domínio do conjunto de registros a ser adicionado;
  • --ttl é o TTL (tempo de vida) em número de segundos para o conjunto de registros;
  • --type é o tipo de registro descrito na tabela.
  • --zone é o nome da zona gerenciada com os conjuntos de registros que você quer gerenciar.
  1. Para executar a transação, use o comando gcloud dns record-sets transaction execute:
gcloud dns record-sets transaction execute --zone="my-zone-name"

Para adicionar uma transação curinga:

gcloud dns record-sets transaction add --zone="my-zone-name" \
    --name="*.example.com." \
    --type=CNAME \
    --ttl=300 "sinkhole.example.com"
 

em que

  • --name é o DNS ou nome de domínio do conjunto de registros a ser adicionado;
  • --ttl é o tempo de vida em número de segundos para o conjunto de registros;
  • --type é o tipo de registro descrito na tabela.
  • --zone é o nome da zona gerenciada com os conjuntos de registros que você quer gerenciar.

API

Para atualizar uma transação com novos conjuntos de registros de recurso, use o método create.

POST https://dns.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/managedZone/changes
{
  "deletions": [
    {
      "name": "test.example.com.",
      "type": "A",
      "ttl": "30",
      "rrdatas": [
        "198.51.100.5"
      ]
    }
  ]
  "additions": [
    {
      "name": "test.example.com.",
      "type": "A",
      "ttl": "30",
      "rrdatas": [
        "203.0.113.1"
      ]
    }
  ]
}

Em que PROJECT_ID é o ID do projeto e managedZone é o nome ou ID da sua zona gerenciada.

Lista de tipos de registro DNS compatíveis.

Clique aqui para testar no APIs Explorer.

Como remover um registro

Console

Para remover registros ou conjuntos de registros do Console do Cloud:

  1. Acesse a página do Cloud DNS.
  2. Clique no nome da zona com o conjunto de registros que você quer excluir. Os registros da zona estão listados na página de detalhes da zona.
  3. Clique na caixa de seleção ao lado do registro que você quer excluir.
  4. Clique em Excluir grupo de registros.

gcloud

Para remover uma transação, use o comando gcloud dns record-sets transaction remove:

gcloud dns record-sets transaction remove 10.2.3.4 --name="test.example.com" \
    --ttl="number of seconds" \
    --type="record type" \
    --zone="zone name"
  

em que

  • --name é o DNS ou nome de domínio do conjunto de registros a ser removido;
  • --ttl o tempo de vida em número de segundos para o conjunto de registros;
  • --type é o tipo de registro descrito na tabela.

Para substituir o registro atual, emita o comando remove seguido pelo comando add.

API

Para atualizar uma transação com conjuntos de registros de recurso excluídos, use o método create.

POST https://dns.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/managedZone/changes
{
  "deletions": [
    {
      "name": "test.example.com.",
      "type": "A",
      "ttl": "30",
      "rrdatas": [
        "198.51.100.5"
      ]
    }
  ]
  "additions": [
    {
      "name": "test.example.com.",
      "type": "A",
      "ttl": "30",
      "rrdatas": [
        "203.0.113.1"
      ]
    }
  ]
}

Em que PROJECT_ID é o ID do projeto e managedZone é o nome ou ID da sua zona gerenciada.

Lista de tipos de registro DNS compatíveis.

Clique aqui para testar no APIs Explorer.

Detalhes sobre como selecionar tipos de registros de recurso

Tipo de registro Insira
A

O endereço IP numérico do host, em formato decimal com ponto.

AAAA

O endereço IP numérico do host, em formato hexadecimal IPv6.

CAA

As autoridades de certificação autorizadas a emitir certificados para o domínio.

CNAME

O nome canônico que tem o nome DNS como alias.

DNSKEY

A chave DNSSEC de outro operador para transferência segura. Esse tipo de conjunto de registros só pode ser adicionado a uma zona com DNSSEC ativo no estado de transferência.

DS

A impressão digital da chave DNSSEC para zona delegada segura. Esse tipo de conjunto de registros não ativa o DNSSEC para uma zona delegada, a menos que você habilite e ative o DNSSEC para ela.

IPSECVPNKEY

A chave de VPN pública IPSec. O DNSSEC é recomendado ao usar esse tipo de conjunto de registros, mas não está ativo para essa zona.

MX

Um número e nome DNS de um Exchange Sever de e-mails, indicando prioridade do servidor. Os servidores com números menores são testados primeiro. Verifique se há um espaço entre o número e o nome DNS.

NAPTR

As regras de ponteiro de nome de autoridade usadas para mapear Uniform Resource Names.

NS

O nome DNS do servidor de nomes autoritativo. Seus registros NS precisam corresponder aos servidores de nomes da zona.

PTR

O nome canônico do recurso, normalmente usado para pesquisa inversa.

SPF

O tipo de conjunto de registros SPF está obsoleto. Em vez disso, use registros TXT que comecem com "v = spf1". Os registros do tipo SPF não são usados por software moderno de e-mail.

SRV

Os dados que especificam o local, ou seja, o nome do host e o número da porta, dos servidores de um determinado serviço. Para mais detalhes, consulte RFC 2782 (em inglês).

SSHFP

O número do algoritmo, número de tipo de impressão digital e impressão digital de chave do servidor SSH. Use esse tipo de registro se tiver ativado o DNSSEC para essa zona.

TLSA

As informações da associação de certificado TLSA de autenticação com base em DNS de entidades nomeadas (DANE, na sigla em inglês).

TXT

Os dados de texto, que podem conter texto arbitrário ou ser usados para definir dados legíveis por máquina, como informações de segurança ou para prevenção de abusos. Um registro TXT pode conter uma ou mais strings de texto, sendo 255 caracteres o tamanho máximo de cada uma. Agentes de e-mail e outros agentes de software concatenam várias strings. Coloque cada string entre aspas. Por exemplo:


"Hello world" "Bye world"

Como importar e exportar conjuntos de registros

É possível usar import e export para copiar conjuntos de registros de ou para uma zona gerenciada. Os formatos de importação/exportação serão o formato do arquivo de zona BIND ou o formato do registro YAML.

Para importar conjuntos de registros, use o comando dns record-sets import. A sinalização --zone-file-format informa a import que espere um arquivo formatado da zona BIND. Se você omitir essa sinalização, import espera um arquivo de registros formatados em YAML:

gcloud dns record-sets import -z=examplezonename \
   --zone-file-format path-to-example-zone-file

Para exportar conjuntos de registros, use o comando dns record-sets export. Use a sinalização --zone-file-format para informar a export para exportar os conjuntos de registros para um arquivo formatado da zona BIND. Por exemplo:

example.com. 21600 IN NS ns-gcp-private.googledomains.com.
example.com. 21600 IN SOA ns-gcp-private.googledomains.com.
cloud-dns-hostmaster.google.com. 1 21600 3600 259200 300
host1.example.com. 300 IN A 192.0.2.91

Se você omitir essa sinalização, export exportará o conjunto de registros para um arquivo de registros formatados em YAML:

gcloud dns record-sets export example.zone -z=examplezonename \
   --zone-file-format
   

Por exemplo:

---
kind: dns#resourceRecordSet
name: example.com.
rrdatas:
- ns-gcp-private.googledomains.com.
ttl: 21600
type: NS
---
kind: dns#resourceRecordSet
name: example.com.
rrdatas:
- ns-gcp-private.googledomains.com. cloud-dns-hostmaster.google.com. 1 21600 3600
  259200 300
ttl: 21600
type: SOA
---
kind: dns#resourceRecordSet
name: host1.example.com.
rrdatas:
- 192.0.2.91
ttl: 300
type: A

Como mostrar o conjunto de registros atual

Para mostrar os registros DNS atuais da sua zona:

gcloud

gcloud dns record-sets list --zone="myzonename"
O comando gera a resposta JSON para o conjunto de registros de recurso dos primeiros 100 registros. É possível especificar estes parâmetros extras:
  • limit: número máximo de conjuntos de registros a serem listados.
  • name: apenas conjuntos de registros de listas com este nome de domínio.
  • type: apenas registros de listas deste tipo. Se presente, o parâmetro --name também precisa estar inserido.

Python

def list_resource_records(project_id, zone_name):
    client = dns.Client(project=project_id)
    zone = client.zone(zone_name)

    records = zone.list_resource_record_sets()

    return [(record.name, record.record_type, record.ttl, record.rrdatas)
            for record in records]

Próximas etapas