O DNS (Domain Name System) é um sistema no qual todos os nomes de domínio dos servidores são organizados em uma hierarquia específica. Por que precisamos dele? Imagine ter que se conectar a um dispositivo com o endereço IP 91.206.179.207. Você poderia inserir esse endereço na linha de comando para obter as informações necessárias, mas memorizar muitas combinações numéricas desse tipo é muito difícil. Por isso, foram criados servidores especiais para converter nomes de domínio em endereços IP. Assim, quando você digita hostman.com na barra de endereços do navegador, os dados da requisição são enviados a um servidor DNS, que procura correspondências em seu banco de dados. Em seguida, o servidor DNS retorna o endereço IP necessário ao seu dispositivo, e só então o navegador acessa diretamente o recurso.
Configurar o seu próprio DNS permite uma configuração do sistema mais flexível e precisa, além de evitar a dependência de terceiros. Neste artigo, veremos como configurar o DNS usando o servidor de nomes BIND no Ubuntu.
Zona: Parte da hierarquia DNS hospedada em um servidor DNS. Define os limites dentro dos quais um servidor ou grupo de servidores é responsável.
Servidores raiz: Servidores DNS que contêm informações sobre domínios de nível superior (.ru, .com, etc.).
Domínio: Parte nomeada da hierarquia DNS, um nó específico que pode incluir outros nós. Os endereços DNS são lidos da direita para a esquerda e começam com um ponto, com os domínios também separados por pontos. Por exemplo, o domínio poddomen.domen.ru deve ser lido como .ru.domen.poddomen. Normalmente, o nome de domínio reflete a estrutura da hierarquia DNS, mas o ponto final é omitido.
FQDN (Fully Qualified Domain Name): Nome de domínio totalmente qualificado, que inclui todos os domínios pai.
Registro de recurso (Resource Record): Unidade de armazenamento de informações, basicamente um registro que associa um nome a informações de serviço. Ele consiste em:
Nome (NAME): O nome ou endereço IP proprietário da zona
Time to Live (TTL): Tempo durante o qual um registro permanece em cache DNS antes de ser removido
Classe (CLASS): Tipo de rede, geralmente IN (Internet)
Tipo (TYPE): Finalidade do registro
Dados (DATA): Informações adicionais
Registro A: Mapeia um nome de host para um endereço IPv4. Cada interface de rede pode ter apenas um registro A.
website.com. 520 IN A 91.206.179.207
Registro AAAA: Igual ao registro A, mas para IPv6.
CNAME: Registro de nome canônico, um alias de um nome real usado para redirecionamento.
MX: Especifica os servidores de e-mail do domínio. O campo NAME contém o domínio de destino, e o campo DATA contém a prioridade e o host que recebe os e-mails.
website.com. 17790 IN MX 10 mx.website.com.
website.com. 17790 IN MX 20 mx2.website.com.
NS: Aponta para o servidor DNS responsável pelo domínio.
PTR: Mapeia um endereço IP para um nome de domínio (resolução reversa).
SOA: Descreve as configurações principais da zona.
SRV: Contém os endereços de servidores que fornecem serviços internos do domínio, como Jabber.
Para seguir as instruções deste artigo, você precisa de pelo menos dois servidores Ubuntu no mesmo data center. Qualquer um desses servidores pode ser solicitado na Hostman.
Usaremos dois servidores Ubuntu 20.04, que atuarão como servidores DNS primário e secundário, ns1 e ns2, respectivamente. Além disso, haverá servidores adicionais que utilizarão os servidores DNS configurados.
Você deve ter privilégios de superusuário em cada servidor.
Usaremos o bind9 como servidor DNS. Instale o pacote bind9 a partir do repositório Linux:
sudo apt update && sudo apt upgrade -y
sudo apt install bind9
Também é recomendável instalar ferramentas de monitoramento de rede:
sudo apt install dnsutils
Após a instalação, inicie o serviço bind9:
sudo service bind9 start
O principal arquivo de configuração do servidor é /etc/bind/named.conf. Ele descreve as configurações gerais e normalmente é dividido em vários outros arquivos para facilitar a administração.
Este arquivo contém os parâmetros gerais do servidor:
options {
dnssec-validation auto;
auth-nxdomain no;
directory "/var/cache/bind";
recursion no; # desativa consultas recursivas ao servidor
listen-on {
172.16.0.0/16;
127.0.0.0/8;
};
forwarders {
172.16.0.1;
8.8.8.8;
};
};
Para verificar se tudo foi configurado corretamente, use o utilitário named-checkconf:
sudo named-checkconf
Se não houver erros, o servidor BIND começará a funcionar.
O servidor DNS primário armazena a cópia principal do arquivo de zona. Todas as zonas serão armazenadas no diretório /etc/bind/master-zones. Crie o diretório:
sudo mkdir /etc/bind/master-zones
Crie um arquivo para descrever a zona:
sudo touch /etc/bind/master-zones/test.example.com.local.zone
E adicione os registros SOA, NS e A:
$ttl 3600
$ORIGIN test.example.com.
test.example.com. IN SOA (
ns.test.example.com.
abuse.test.example.com.
2022041201
10800
1200
604800
3600 )
@ IN NS ns.test.example.com.
@ IN NS ns2.test.example.com.
@ IN A 172.16.101.3
ns IN A 172.16.0.5
ns2 IN A 172.16.0.6
Em seguida, verifique a zona com o utilitário named-checkzone:
sudo named-checkzone test.example.com. /etc/bind/master-zones/test.example.com.local.zone
Este é outro arquivo incluído na configuração principal do servidor. Nele, definimos as zonas locais:
zone "test.example.com." {
type master;
file "/etc/bind/master-zones/test.example.com.local.zone";
};
Após inserir os dados necessários, verifique a configuração e reinicie o bind9 (a opção -z verifica os arquivos de zona):
sudo named-checkconf
sudo named-checkconf -z
sudo service bind9 restart
sudo service bind9 status
As views permitem o gerenciamento flexível da resolução de nomes a partir de diferentes sub-redes. No arquivo /etc/bind/named.conf, adicione:
include "/etc/bind/named.conf.options";
acl "local" { 172.16.0.0/16; };
view "local" {
include "/etc/bind/named.conf.local";
match-clients { local; };
};
Reinicie o bind9:
sudo service bind9 restart
Após a reinicialização do servidor, você pode solicitar o registro SOA do servidor 172.16.0.5 a partir de outro computador na rede local:
dig @172.16.0.5 -t SOA test.example.com
Neste ponto, a configuração do servidor DNS primário está concluída.
Neste guia, configuramos o DNS em um servidor com Ubuntu usando o pacote bind9. Após seguir todos os passos, os dois servidores DNS configurados podem ser usados para resolução de nomes na rede. Para utilizar esses servidores DNS personalizados, configure seus outros servidores para usar 172.16.0.5 e 172.16.0.6 como servidores DNS.
Essa configuração pode servir como base para futuras melhorias, como a configuração de um servidor de e-mail.