Categorias
Dicas Tecnologia Tutorial

Como criar um servidor DNS local com cache no Windows Server

Olá meus queridos leitores do blog. Hoje iremos abordar um tema massa, o mundo mágico e incrível do DNS. Neste post não irei explicar qual DNS usar para “acelerar sua conexão” ou informar o que é um servidor DNS, porém tenho o alvo de informar para vocês como criar o seu próprio servidor DNS com cache para resolver nomes em sua rede local de forma que possamos aprender e estudar como funciona esse sistema, além é claro, que realmente esse método pode acelerar sua conexão.

Lembrando que não explico aqui como configurar o DNS para ser autoritativo de domínios, e não estou usando a ferramenta de DNS do próprio Windows pois achei melhor e mais rápido usar outro que será explicado a seguir. Então, caso esteja procurando como configurar seu servidor DNS para receber domínios, não é este post que você deve ler.

Introdução

Antes de começar, você deve saber que tudo informado neste post é com o intuito de aprendizado, nada aqui é para você usar em “produção” em seus clientes, pois sempre existem formas mais seguras de se fazer tal procedimento. Vamos precisar de um servidor Windows Server para que possamos continuar, porém se você tiver apenas um servidor linux com o Bind, acredito que também deverá funcionar pois as configurações são as mesmas.

Bom, dentro do Windows, baixe a versão mais atualizada do BIND DNS. Porquê estou usando o Bind? Bom, por se tratar de uma configuração mais simples e por ser mais leve em relação a ferramenta que o próprio Windows nos disponibiliza, para esta funcionalidade.

Instalando o Bind DNS

Após baixar, extraia o conteúdo do ZIP e execute o arquivo: BINDInstall.exe que irá aparecer como mostra na seguinte imagem:

Instalação BIND DNS Resolver
Instalação BIND DNS Resolver

Preencha assim: No campo Target Directory, indique como: C:\bind, no campo Service Account Name coloque o usuário do servidor com as devidas permissões. Para instalar, eu coloquei o usuário Administrador do servidor mesmo. No seu caso, digite o nome de usuário e nos campos Service Account Password e Confirm Service Account Password digite a senha.

Nas caixas de seleção, marque a caixa Automatic Startup, Keep Config Files After Uninstall e Start BIND Service After Install. Feito isso, clique no botão Install e aguarde o BIND ser instalado no seu servidor.

Configurando o BIND DNS resolver

Quero que saiba, que estamos instalando o BIND como um encaminhador independente. O que isso significa? Como sabemos, nossa conexão de internet possui geralmente os servidores DNS da própria operadora que nos fornece internet, ou podemos optar por usar servidores DNS gratuitos como o OpenDNS, Google DNS, CloudFlare DNS e entre outros. Esses servidores DNS tem a principal função de resolver nomes em IP mais rapidamente fornecendo privacidade e rapidez, assim significa que se tivermos um servidor DNS mais rápido, nossa internet em casa ou no trabalho poderá ficar mais rápida.

Agora imagine a seguinte situação: Seu provedor não possui um servidor DNS na rede para servir aos seus clientes e vamos imaginar que você use os servidores DNS da Google, que de onde você está pingam entre 120ms a 140ms. Esse ping não é horrível, porém podemos melhorar ele e assim dar um toque de mais rapidez na sua internet que pode sim ser notável. Para isso, vamos configurar o BIND para que ele receba a solicitação de resolução de nomes, armazene tudo e assim quando você realizar a pesquisa, seu ping ao DNS será de dentro de sua própria rede local, onde o ping pode ser no máximo 1ms, melhorando o tráfego e tem outra vantagem: Você não corre riscos de ser infectado com envenenamento de DNS (DNS cache poisoning), como já aconteceu com o Google, relembre.

Bom, vamos ao que interessa. Na sua máquina servidora, onde você acabou de instalar o Bind, navegue até a pasta C:\bind e veja as pastas que foram criadas. Existem apenas duas certo? pasta “bin” e a pasta “etc”. Pasta “bin” é onde fica os binários do servidor Bind e as ferramentas utilitárias que iremos usar mais em frente. E a pasta “etc” fica a pasta de configurações do nosso servidor.

Inicialmente vamos criar uma chave única de criptografia para evitar que o seu servidor Bind seja confundido e que ofereça mais segurança. Para isso, abra a pasta “bin” e segure a tecla “Shift” do seu teclado ao mesmo tempo clique com o botão direito do mouse em qualquer local dentro da pasta e selecione a opção “Abrir janela de comando aqui”. Feito isso, digite o seguinte comando na tela de prompt de comando:

> rndc-confgen

Pronto, feito isso o sistema cria uma chave de segurança exclusiva única pronta para ser usada em seu servidor e salva em um arquivo nomeado de “rndc.key” dentro da pasta “etc”. Agora, abra seu editor de texto (pode ser o notepad) como um novo arquivo em branco e cole o seguinte código dentro:

options {
Directory "C:\bind\etc";
recursion yes;
allow-transfer { none; };
allow-recursion { trusted; };
auth-nxdomain no;
allow-query { trusted; };
dnssec-enable yes;
dnssec-validation auto;
allow-query-cache { 10.0.0.0/24; localhost; };
listen-on port 53 {
localhost;
};
};
acl "trusted" {
127.0.0.1;
10.0.0.0/24;
localhost;
};
logging {
channel queries_log {
file "c:\bind\log\queries.log" size 10m;
print-severity yes;
print-time yes;
};
category queries { queries_log ; };
};
zone "." IN {
type hint;
file "named.root";
};

Este código é o arquivo de configuração do servidor DNS. Ele tem instruções para armazenamento de cache e salvamento de logs úteis. Vou explicar agora como editar este arquivo para que você consiga usar o servidor Bind DNS resolver em sua rede local.

Assim que você colar o código acima no seu editor, a primeira coisa a ser feita é ir no diretório “etc” e abrir o arquivo rndc.key com o seu editor e copiar o que tem dentro e colar juntamente com o código acima. Geralmente, o código é assim:

key "rndc-key" {
algorithm hmac-md5;
secret "9999999999999";
};

Feito isso, o segundo passo é verificar a sua rede local. Qual sua faixa de rede? 192.168.1.0 ? 10.0.0.1 ? Isso você precisa ver em seu IP local. Se caso sua rede for 192.168.1.1 em diante mude a faixa que corresponde no arquivo. Onde estiver 10.0.0.0 você muda para a sua faixa de rede em uso (sem retirar o /24).

Próximo passo é você criar uma pasta nomeada de “log” dentro da pasta Bind no diretório que você instalou. Essa pasta irá armazenar os logs de consultas feitas no seu servidor Bind DNS para que sirva de consulta e debug.

Feitas as configurações acima, salve o arquivo com o código dentro da pasta “c:\bind\etc” nomeado de “named.conf

Agora vamos gerar um arquivo com os root-servers atualizados. Root-servers são os conhecidos como servidores DNS Raiz que possuem a função de auxiliar os servidores DNS recursivos (este que estamos fazendo) à resolver nomes da internet. Sempre que o servidor DNS Bind precisar resolver algum domínio em IP e que não estiver em cache, ele irá acessar recursivamente algum destes servidores raiz para obter a resposta. Acesse este endereço: https://www.internic.net/domain/named.root e copie exatamente o conteúdo que aparecer na tela e crie um novo arquivo e cole dentro salvando com o nome “named.root” dentro da pasta “c:\bind\etc”.

 

Veja como ficaria a tipologia de rede no esquema apresentado
Veja como ficaria a tipologia de rede no esquema apresentado

Validando as configurações e primeiro teste

Agora já temos o nosso arquivo de configuração devidamente configurado, vamos realizar os teste e ver se realmente está tudo funcionando! Para isso, ainda com seu prompt de comando aberto na pasta “bin” rode o seguinte comando:

> named-checkconf

Ao realizar o comando acima, não deve retornar erro algum. Caso informe erro, você deve ter configurado algo errado no arquivo named.conf. Volte e reveja novamente os códigos do arquivo. Caso não informe nada, significa que está tudo certo e vamos prosseguir para o próximo passo.

Agora vamos iniciar o serviço do Bind no Windows. Para isso, acesse o Painel de Controle, depois Ferramentas Administrativas e clique no programa Serviços. Procure agora pelo serviço “ISC BIND” clique com o direito e selecione em iniciar. Feito isso, volte ao Painel de Controle e abra as suas conexões de rede, vá ao adaptador no qual seu servidor está conectado à internet, clique com o direito, depois selecione Propriedades. Abra agora as configurações de IPv4 e clicando duas vezes na opção, vamos ter a opção de definir o DNS fixo. Existe dois locais para inserir o DNS (primário e secundário), mas iremos preencher apenas com o primário com o seguinte endereço: 127.0.0.1

Bom, servidor iniciado, configurações feitas, o servidor já responde como um servidor recurso, hora de fazer um teste se realmente a resolução de nomes está criando os cachês e diminuindo a velocidade das requisições. Com o prompt de comando ainda aberto do teste anterior, rode o seguinte comando:

> nslookup facebook.com

Esse comando faz com que pergunte ao Sistema Operacional para resolver nomes e se está apontando realmente para o servidor local. Analise a resposta e verifique se corresponde com a resposta abaixo, como mostra na imagem:

Teste servidor dns local nslookup
Teste servidor dns local nslookup

Caso tenha respondido como mostra a imagem acima, toda nossa configuração está correta, sabemos que o sistema operacional busca pelo servidor DNS local. Abaixo iremos realizar outro teste para determinar se o servidor DNS local possui erros e qual o tempo de resposta de uma requisição. Lembrando que, quando menor o tempo de uma requisição, mais rápido a resolução de nomes e mais rápido sua conexão.

PRIMEIRO TESTE

Caro leitor, veja agora a grande façanha deste servidor DNS local. A imagem abaixo mostra que realizamos uma consulta DNS, que não temos cachê, e a consulta demora 2718 msec para nosso servidor loca ir lá nos servidores root, procurar o IP do domínio e trazer pra nós. Veja:

Teste ferramenta dig servidor dns local
Teste ferramenta dig servidor dns local

SEGUNDO TESTE

Veja agora que irei realizar o mesmo comando, no mesmo local, não mudei absolutamente nada, e veja agora o tempo de resposta do nosso servidor DNS: exatamente 0 msec – ou seja, isso quer dizer meu amigo caro leitor, que o nosso servidor está realizando o cachê perfeitamente e armazenando as consultas locais, a zero milissegundos.

Teste ferramenta dig servidor dns local 2
Teste ferramenta dig servidor dns local 2

Considerações finais

Por hoje é isso pessoal, antes de finalizar completamente esta postagem super interessante, gostaria de dar alguns avisos:

1) Fique ciente que você acabou de instalar seu próprio servidor de DNS local e, logicamente, o cachê dele está praticamente vazio. Para isso, claro que inicialmente você vai perceber uma “leve” demora em acessar os sites. Isso acontece pois o servidor está indo buscar as informações em outro servidor para armazená-las em sua memória e isso tende a demorar mesmo, porém quando você acessar o mesmo domínio novamente, o servidor local já vai ter a informação guardada e com certeza vai agilizar sua velocidade. Por isso fica a dica: Não se estresse de primeira e use sua internet normalmente por pelo menos 1 mês para que o servidor DNS já tenha um cachê bem rico.

2) “- Ah Matheus, se eu desligar o meu servidor DNS o cachê vai ser apagado?” Resposta: Com certeza. Por isso, algumas pessoas erroneamente fazem este mesmo procedimento que descrevi em seu próprio computador, que você desliga e liga todos os dias, então nenhum cachê vai ser armazenado ali e nada adiantará. O certo é montar pelo menos um PC que simule um servidor que funcione 24h por dia.

Qualquer dúvida ou informação, pode comentar aí embaixo que fico à disposição para esclarecer! Abraço pessoal!

 

Por Websign Sistemas de Gestão

WEBSIGN trabalha criando sistemas de gestão online para grandes e pequenas empresas, visando mais organização em seus processos e demandas.

3 respostas em “Como criar um servidor DNS local com cache no Windows Server”

Olá preciso de uma ajuda

Eu fiz exatamente como esta no tutorial, porem no momento de iniciar o bind nos serviços da o erro


O windows não pode inciar o serviço ISC BIND em computador local
Erro 1067: O processo foi finalizado de forma inesperada.

Tentei diversas forma como liberar a portas 53 udp de entrada e saida no firewall e nao deu resultado
Poderia me ajudar a resolver esse erro ?

Desde ja muito obrigado pela ajuda !!!!
Christian Edipo

Olá amigo, boa tarde
Realizei o tutorial exatamente e conferi varias vezes se tem algum erro, mas nao achei

no momento que voou ativar o servidor nos serviços (ISC BIND) da o erro 1067 e não estou conseguindo arrumar esse erro, poderia me ajudar ?

Desde ja muito obrigado
Christian Edipo

Oi Christian, tudo bom? Obrigado pela sua participação.
Bom, quando o serviço não inicia é devido a algum erro de configuração no seu arquivo named.conf ou problemas de permissão no diretório do Bind. Para isso, dê permissões totais na pasta de instalação do Bind. Outra coisa que pode ser, vá em Serviços, procure pela entrada do BIND ISC e clique com o direito, abra propriedades e escolha a aba “Logon” e escolha logar como administrador.

Qualquer dúvida pode perguntar que te ajudo!

Deixe uma resposta