Módulo 7 · 7.1
DNS para o seu VPS e DNS inverso
Módulo 7: Domínio, servidor web e https · Tempo de leitura: 10 minutos
Objetivo de aprendizagem: No final desta lição, saberá apontar um domínio ou subdomínio para o seu VPS com registos A e AAAA, configurar corretamente o DNS inverso do seu servidor e verificar que o nome e o endereço correspondem nos dois sentidos.
Conceitos-chave: registo A, registo AAAA, TTL, subdomínio por serviço, www, nome de anfitrião do servidor, PTR, DNS inverso, forward-confirmed reverse DNS (FCrDNS), CAA, esquecer o IPv6
Do endereço IP ao nome
Até agora acedeu ao seu servidor através do endereço IP, por exemplo ssh anna@192.0.2.10. Para um site, um certificado (lição 7.3) e os serviços do módulo 9 precisa de um nome. Essa ligação é feita no DNS do seu domínio, junto da entidade que gere o seu DNS: o seu registrar, a sua empresa de alojamento ou um serviço de DNS. O próprio VPS não tem nada a ver com isso; o seu servidor não "sabe" que nomes apontam para ele.
Aprendeu as bases do DNS no curso de DNS. Para um VPS precisa sobretudo de dois registos:
| Registo | O quê | Exemplo |
|---|---|---|
| A | nome para endereço IPv4 | web1.example.com. 3600 IN A 192.0.2.10 |
| AAAA | nome para endereço IPv6 | web1.example.com. 3600 IN AAAA 2001:db8::10 |
Normalmente o seu VPS tem um endereço IPv4 e um endereço IPv6 fixos. Nesse caso, crie ambos os registos. Os visitantes com IPv6 (nos Países Baixos, uma grande parte das ligações domésticas e das redes móveis) utilizam então o IPv6, e os restantes o IPv4.
Que nomes deve criar?
Uma organização habitual para um VPS com um site e alguns serviços:
web1.example.com. A 192.0.2.10 ; o próprio servidor (nome de anfitrião, PTR)
web1.example.com. AAAA 2001:db8::10
example.com. A 192.0.2.10 ; o website
example.com. AAAA 2001:db8::10
www.example.com. CNAME example.com.
status.example.com. CNAME web1.example.com. ; Uptime Kuma (lição 9.4)
kluis.example.com. CNAME web1.example.com. ; Vaultwarden (lição 9.4)Esta organização contém algumas escolhas:
- O servidor tem um nome próprio (
web1), separado do site. Esse nome é utilizado para o SSH, para o DNS inverso e como nome de anfitrião do sistema. Se mais tarde o site mudar para outro servidor,web1continua correto. - Um subdomínio por serviço. O Uptime Kuma e o Vaultwarden recebem cada um o seu próprio nome. Isto é muito mais simples (e mais seguro) do que colocar serviços sob um caminho como
example.com/kluis: cada serviço tem o seu próprio certificado, os cookies não se misturam e pode mais tarde mudar um serviço para outro servidor alterando um único registo. - CNAME para os subdomínios. Um CNAME para
web1significa que, se o endereço IP do servidor mudar, apenas tem de alterar os registos deweb1. No nome de domínio simples (example.com) não pode existir um CNAME; aí coloca A e AAAA.
O nome de anfitrião do próprio sistema é definido no servidor:
anna@web1:~$ sudo hostnamectl set-hostname web1.example.com
anna@web1:~$ hostname -f
web1.example.comVerifique também que /etc/hosts não contém um nome antigo. Um nome de anfitrião correto é sobretudo importante se o servidor alguma vez enviar correio eletrónico.
TTL: a rapidez com que uma alteração chega a todo o lado
O TTL (time to live) é o número de segundos durante os quais os resolvers podem memorizar uma resposta. Com 3600, pode demorar até uma hora até que todos vejam um novo endereço. Se vai mudar um site para o seu VPS, defina o TTL para 300 (cinco minutos) um dia antes, aguarde pelo menos o TTL antigo, altere o endereço e depois volte a aumentar o TTL. Este é exatamente o plano de passos do curso de DNS, lição 6.3.
Verifique com dig (curso de DNS, lição 8.2) o que o resto da Internet vê, e faça a consulta a um resolver público em vez de ao seu próprio computador:
anna@laptop:~$ dig +short A example.com @1.1.1.1
192.0.2.10
anna@laptop:~$ dig +short AAAA example.com @1.1.1.1
2001:db8::10No Windows: Resolve-DnsName example.com -Type AAAA -Server 1.1.1.1.
A armadilha: um registo AAAA sem IPv6 funcional
Se criar um registo AAAA, o serviço tem mesmo de estar acessível por IPv6. Um erro frequente: o registo existe, mas o servidor web só escuta em IPv4, ou a firewall não deixa passar o IPv6 (lição 5.2), ou o IPv6 não está configurado no VPS. Os visitantes com IPv6 veem então um site lento ou que não abre, enquanto para si "funciona normalmente", porque em casa talvez só tenha IPv4. Também o Let's Encrypt tenta primeiro o IPv6 quando existe um registo AAAA (lição 7.3). Se o seu servidor der uma resposta diferente por IPv6 e por IPv4, o pedido de certificado falha.
Por isso, teste o IPv6 separadamente, a partir de outra máquina com IPv6: curl -6 -I https://example.com. Se não tiver IPv6, utilize um teste online como o internet.nl.
DNS inverso: do endereço de volta ao nome
O DNS inverso liga um endereço IP de volta a um nome, através de um registo PTR (curso de DNS, lição 4.6). Esse registo não está na zona do seu domínio, mas na zona do endereço IP, que pertence à entidade que gere o endereço: o seu fornecedor de VPS. Por isso, o PTR é definido no painel do fornecedor e não no seu próprio DNS.
Porque deve fazê-lo?
- Correio eletrónico. Os servidores de correio que recebem mensagens recusam ou desconfiam de correio vindo de um endereço sem um DNS inverso correto. Se o seu VPS enviar correio (nem que seja uma notificação de um formulário), isto é obrigatório (consulte o curso E-mail em ordem, lição 5.1).
- Identificação. Nos registos e em traceroutes, os outros veem
web1.example.comem vez de um nome genérico do fornecedor. - Boa prática. Alguns serviços e filtros de spam atribuem pontos negativos a endereços com um PTR genérico ou inexistente.
A regra é o forward-confirmed reverse DNS (FCrDNS): o endereço aponta com PTR para um nome, e esse nome aponta com A ou AAAA de volta para o mesmo endereço. Portanto, crie primeiro os registos A e AAAA e só depois peça o PTR, tanto para IPv4 como para IPv6.
anna@laptop:~$ dig +short -x 192.0.2.10
web1.example.com.
anna@laptop:~$ dig +short A web1.example.com
192.0.2.10
anna@laptop:~$ dig +short -x 2001:db8::10
web1.example.com.
anna@laptop:~$ dig +short AAAA web1.example.com
2001:db8::10Se as quatro consultas devolverem a resposta esperada, a correspondência nos dois sentidos está correta.
CAA: quem pode emitir certificados?
Com um registo CAA (curso de DNS, lição 5.2) indica que emissores de certificados podem emitir certificados para o seu domínio. Se utilizar apenas o Let's Encrypt:
example.com. 3600 IN CAA 0 issue "letsencrypt.org"Não é obrigatório, mas é uma camada adicional cuidada. Atenção: se já tiver um registo CAA com outro emissor, o Let's Encrypt recusa o seu pedido. Por isso, verifique primeiro com dig CAA example.com.
Na prática: DNS inverso no ecrã do VPS
Na WebOké, o DNS inverso é configurado no ecrã do VPS, no separador "ISO e rDNS". Se o DNS do seu domínio também estiver na WebOké, o painel pode criar de imediato os registos A e AAAA por si; se o DNS estiver noutro local, crie primeiro esses registos e depois introduza o nome completo. Noutros fornecedores, esta opção chama-se "Reverse DNS", "rDNS" ou "PTR" no painel de cliente; em alguns, tem de a pedir através de um ticket. Funciona sempre da mesma forma: primeiro o nome para o endereço, depois o endereço para o nome.
Resumo
- Um nome é ligado ao seu VPS com um registo A (IPv4) e um registo AAAA (IPv6), no DNS do seu domínio.
- Dê ao servidor um nome próprio (
web1.example.com) e a cada serviço o seu subdomínio; os CNAME para o nome do servidor facilitam as mudanças. - Reduza o TTL antes de uma mudança e verifique com
digjunto de um resolver público. - Não crie um registo AAAA se o serviço não funcionar realmente por IPv6; teste o IPv6 separadamente.
- O PTR é definido junto do seu fornecedor de VPS; a correspondência nos dois sentidos tem de estar correta (FCrDNS), para IPv4 e IPv6.
Questionário
Exercício
Exercício Z7.1: A, AAAA e PTR do seu servidor. Dê ao seu servidor um nome próprio (por exemplo web1.<jouwdomein>), crie os registos A e AAAA e configure o DNS inverso junto do seu fornecedor. No exercício, introduza o nome do seu servidor, os endereços IPv4 e IPv6 e o nome que obteve com dig -x para ambos os endereços. O programa consulta em tempo real os registos A e AAAA e o PTR de ambos os endereços e verifica que tudo corresponde nos dois sentidos. Se o seu servidor não tiver IPv6, verifica apenas o IPv4 e indica-o a laranja.
Para saber mais
- Enviar e-mail a partir do seu VPS e configurar o DNS inverso
- IPv6 na WebOké
- Curso gratuito de DNS 3.1: Registos A e AAAA
- Curso gratuito de DNS 4.6: DNS inverso (PTR): do número de volta ao nome
- Curso gratuito de DNS 5.2: CAA: quem pode emitir certificados?
- Curso gratuito de DNS 8.2: Consultar o DNS com dig e nslookup
