Como configurar um servidor DNS com Bind usando servidores Linux

DNS servidores (Domain Name System) nos permitem chegar a um endereço IP específico a partir de um nome de domínio, desta forma, podemos acessar diferentes sites colocando o seu nome de domínio diretamente na barra de endereços do navegador. Também temos a possibilidade de configurar um servidor DNS na rede local doméstica ou profissional, para chegar aos diferentes computadores da rede local através de um nome de domínio específico, sem ter sempre que lembrar os endereços IP privados. Hoje, neste artigo, vamos mostrar como podemos configurar um servidor DNS em um Linux servidor usando Bind9, o servidor DNS mais popular e usado.

Configurar um servidor DNS com Bind usando servidores Linux

O que é Bind?

O Bind, ou também conhecido como Berkeley Internet Name Domain, é um software responsável por realizar a tarefa de servidor DNS. Bind é atualmente um padrão, e é amplamente utilizado em sistemas operacionais Linux e também em Unix, portanto, se você tem um servidor baseado em Linux ou Unix e precisa de um servidor DNS para lidar com as consultas da rede local, então o Bind é o que você deve usar. A versão atual do Bind é a versão Bind9, e é a mais usada em todos os servidores, as versões anteriores são consideradas inseguras e “obsoletas”, por isso não é recomendado usá-las.

O Bind não substitui servidores DNS como os que podemos usar do Google (8.8.8.8), Cloudflare (1.1.1.1) ou outros, mas sim os complementa. Os clientes da rede local terão como servidor DNS o servidor Bind que configuramos em um servidor Linux, posteriormente, neste Bind poderemos configurar diferentes regras para chegar aos computadores locais através de seus endereços IP privados. Se um cliente na rede local faz uma solicitação de DNS a um site da Internet, logicamente o servidor DNS não terá todos os endereços IP da Internet em seu banco de dados, neste caso, os servidores DNS públicos são configurados para lidar com essas solicitações, encaminhando o servidor com Bind o pedido e iremos devolvê-lo automaticamente ao cliente que fez o pedido.

DNS do Windows

A versão que se utiliza atualmente é o Bind 9, foi escrito de raiz para evitar problemas das versões anteriores, além disso, inclui funcionalidades muito importantes como DNSSEC para fornecer segurança aos domínios que utilizam criptografia, inclui também melhorias no processamento paralelo de diferentes Consultas DNS, suporte total para redes IPv6 e muito mais. Claro que esta última versão do Bind traz melhorias de segurança muito importantes, desta forma, estaremos protegidos contra possíveis ataques que poderiam ocorrer nas versões anteriores.

Pré-requisitos antes de instalar o Bind

Antes de iniciar a configuração do servidor DNS com Bind9 em nosso sistema operacional, é aconselhável colocar um IP fixo em nosso servidor, caso contrário, se o servidor DHCP alterar nosso endereço IP, os clientes da rede local perderão o acesso ao nosso DNS do servidor porque eles não estarão “apontando” para nosso endereço IP privado. Para colocar um IP fixo temos duas possibilidades:

  • Configure o DHCP Estático no roteador / firewall que temos, colocando nosso endereço MAC da placa de rede e o endereço IP que queremos que sempre obtenha.
  • Configure estaticamente nosso servidor Linux, neste caso, o servidor DHCP do roteador / firewall deve ter uma faixa de DHCP que está fora do nosso endereço IP privado que definimos.

Para configurar estaticamente um endereço IP no Linux, temos que editar o arquivo de configuração “/ etc / network / interfaces” e colocar o seguinte:

auto lo
iface lo inet loopback

carro ens 33
iface eth0 inet estática
endereço 192.168.1.2
máscara de rede 255.255.255.0
192.168.1.1 portal
DNS-nameservers 192.168.1.2

Em seguida, temos que reiniciar o serviço para aplicar as alterações corretamente (se tivermos alterado o IP que temos atualmente):

sudo service networking restart

Assim que nosso endereço IP da rede local for corrigido, podemos instalar o Bind.

Instalação do Bind no Linux e inicialização

A primeira coisa que temos que fazer para configurar um servidor DNS (bind) no Linux é instalá-lo a partir dos repositórios, vamos instalar tanto o servidor DNS Bind9 quanto os pacotes sugeridos pelo sistema operacional Debian, portanto, nós deve colocá-lo no console a seguir:

sudo apt install bind9 bind9-doc resolvconf python-ply-doc

Depois de instalar todos os pacotes anteriores, temos que ir ao diretório do programa, onde teremos que começar a configurar os arquivos necessários:

cd /etc/bind/

É aconselhável acesse este diretório como root (sudo su) para evitar problemas de permissão negados ao copiar arquivos ou modificar os existentes. Se fizermos um “ls -l” para listar todos os arquivos que temos aqui, veremos o seguinte:

Como você pode ver, temos um grande número de arquivos de configuração diferentes, cada um deles é especificamente orientado para uma tarefa, na documentação oficial do Bind9 você pode encontrar a finalidade de cada um deles. Vamos supor que você esteja sempre no modo superusuário (root) para editar ou copiar arquivos sem restrições.

Configurar encaminhadores de Bind usando servidores DNS públicos

A primeira coisa que faremos é configurar os servidores DNS de encaminhamento, ou seja, os servidores DNS públicos para encaminhar consultas à Internet. O arquivo de configuração responsável por esta tarefa é “named.conf.options”, a primeira coisa que fazemos é fazer um backup do arquivo, caso o editemos errado e tudo pare de funcionar:

cp /etc/bind/named.conf.options /etc/bind/named.conf.options.copia

Agora vamos editar o arquivo adicionando os servidores DNS na seção de encaminhadores, como você pode ver aqui:

forwarders {
8.8.8.8;
1.1.1.1;
};

Seria o seguinte:

Depois de modificá-lo, reiniciamos o serviço Bind9 para verificar se tudo funciona corretamente e não retorna nenhum erro:

sudo service bind9 restart

Agora vamos verificar se estão funcionando corretamente, para fazer isso, executamos um comando nslookup, e devemos ver que nosso servidor DNS resolveu um domínio corretamente, no nosso caso o endereço IP do servidor é 192.168.231.130:

Depois de configurar o Bind para encaminhar as resoluções de sites da Internet para o DNS público, veremos como configurá-lo para resolver domínios internos.

Configure o Bind para resoluções locais

O arquivo de configuração que devemos configurar agora se chama.conf.local, é aconselhável fazer uma cópia de segurança caso algo dê errado ao configurá-lo, para isso executamos:

cp /etc/bind/named.conf.local /etc/bind/named.conf.local.copia

Depois de fazer o backup, teremos que editar o arquivo de configuração named.conf.local para prosseguir com a configuração. Neste arquivo de configuração teremos que colocar a zona a que estamos nos referindo, e também o arquivo de configuração de bind que contém todas as configurações, portanto, poderíamos deixar assim:

zone "redlocal.com" {
type master;
file "/etc/bind/db.redlocal";
};

É importante que o “arquivo” se refira ao arquivo de configuração que importamos e que vamos configurar agora.

Agora temos que copiar o banco de dados que temos em “db.local” dar o nome de ” db.redlocal ”Que definimos no arquivo anterior.

cp /etc/bind/db.local /etc/bind/db.redlocal

Agora vamos editar este arquivo de configuração que vem por padrão com muitas informações e o adaptamos aos nossos interesses.

A primeira coisa que temos que fazer é modificar o SOA que vem na parte superior pelo nome de domínio que escolhemos localmente, neste caso, seria “red.redlocal.com”, então vamos editar o arquivo de configuração geral com os domínios e subdomínios que desejamos. Nosso arquivo de configuração seria o seguinte:

;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA ns1.redlocal.com. root.red.redlocal.com. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;

@ IN NS ns1.redlocal.com.
@IN A 192.168.231.130
ns1 EM A 192.168.231.130
roteador IN A 10.11.1.1
pc1 EM A 10.11.1.2

Depois de salvar o arquivo de configuração, verificamos a sintaxe com o seguinte comando:

named-checkzone redlocal.com /etc/bind/db.redlocal

Agora reiniciamos o processo de vinculação com o seguinte comando:

sudo service bind9 restart

Temos tudo pronto para iniciar a bateria de testes e verificar se fizemos tudo certo. Para verificar se tudo funciona bem, devemos executar os seguintes comandos:

host router.redlocal.com

Ele nos mostrará o seguinte, o endereço IP do roteador:

root@bron-debian:/etc/bind# host router.redlocal.com
router.redlocal.com has address 10.11.1.1

Também podemos fazer o mesmo com o PC1:

host pc1.redlocal.com

Veremos isso:

root@bron-debian:/etc/bind# host pc1.redlocal.com
pc1.redlocal.com has address 10.11.1.2

Uma vez que tenhamos conseguido resolver os domínios locais corretamente, retornando o endereço IP correspondente, podemos pingar sem problemas através do domínio:

root@bron-debian:/etc/bind# ping router.redlocal.com
PING router.redlocal.com (10.11.1.1) 56(84) bytes of data.
64 bytes from 10.11.1.1 (10.11.1.1): icmp_seq=1 ttl=128 time=0.413 ms
64 bytes from 10.11.1.1 (10.11.1.1): icmp_seq=2 ttl=128 time=0.401 ms
^C
--- router.redlocal.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 28ms
rtt min/avg/max/mdev = 0.401/0.407/0.413/0.006 ms

Agora vamos configurar a resolução reversa dos domínios.

Resolução reversa de domínio

Agora vamos configurar o servidor DNS para resolver domínios ao contrário, colocando o endereço IP e informando a qual domínio esse endereço IP pertence. Para atingir nosso objetivo, devemos adicionar o seguintes linhas para o arquivo /etc/bind/named.conf.local que usamos anteriormente:

zone "192.in-addr.arpa" {
type master;
file "/etc/bind/db.192";
};

Devemos também copiar o arquivo de configuração padrão para editá-lo. A partir do arquivo db.127, criamos o db.192:

cp /etc/bind/db.127 /etc/bind/db.192

Depois de criá-lo, basta editá-lo com as seguintes informações:

;
; BIND reverse data file for local loopback interface
;
$TTL 604800
@ IN SOA ns1.redlocal.com. root.red.redlocal.com. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns1.redlocal.com.
ns1 IN A 192.168.231.130
130.231.168 IN PTR redlocal.com

Depois de salvar o arquivo de configuração, verificamos a sintaxe com o seguinte comando:

named-checkzone 192.168.231.130 /etc/bind/db.192

Devemos obter algo assim:

named-checkzone 168.192.in-addr.arpa db.192
zone 168.192.in-addr.arpa/IN: loaded serial 1
OK

Agora reiniciamos o processo de vinculação com o seguinte comando:

sudo service bind9 restart

E verificamos se funcionou corretamente:

host 192.168.231.130

Esperamos que este tutorial completo do Bind tenha ajudado você a configurar seu próprio servidor DNS localmente.