Servidor DNS Recursivo, Autoritativo e Reverso com Bind9 (IPv4+IPv6) + Fail2ban

bind_configure_tw_mostov

Distribuição utilizada: Debian 8 Jessie / Debian 9 Stretch – Instalação Limpa (Tutorial de instalação aqui)

Ante de iniciar a instalação vamos entender melhor o que é cada um.

DNS RECURSIVO
O DNS recursivo é responsável por procurar os endereços IPs de servidor que você solicitou acesso. Exemplo o DNS que esta configurado na sua máquina.

DNS AUTORITIVO
É o que possui autoridade sobre um nome de domínio, assim como ns1.remontti.net.br é o DNS autoritativo de seu domínio remontti.net.br.
O DNS autoritativo dita qual será o apontamento da tabela de DNS do seu site. Ele vai responder por o domínio que você configurou nele.

DNS REVERSO
Normalmente o DNS atua resolvendo o nome do domínio de um host para um endereço IP correspondente. Já o DNS Reverso resolve o endereço IP, buscando o nome de domínio associado ao host. Ou seja, quando temos disponível o endereço IP de um host e não sabemos o endereço do domínio(nome dado à máquina ou outro equipamento que acesse uma rede), tentamos resolver o endereço IP através do DNS reverso que procura qual nome de domínio está associado aquele endereço. Os servidores que utilizam o DNS Reverso conseguem verificar a autenticidade de endereços, verificando se o endereço IP atual corresponde ao endereço IP informado pelo servidor DNS. Isto evita que alguém utilize um domínio que não lhe pertence para enviar spam, por exemplo.

Para que o DNS Reverso funcione que no registro.br você designa seu bloco apontando para o(os) seu(s) servidor(es) DNS. Se você for um provedor o correto seria você ter ao menos dois servidores DNS em sua rede, uma Master e outro Slave. Neste tutoria foi explicar como criar os dois! 😉

Vamos iniciar com a instalação do nosso servidor Master, lembrando que para isso estou usando a Distribuição linux Debian 8, com uma instalação que eu chamo de limpa, ou seja no processo de instalação foi instalado apenas o sistema básico.

Cenário para nosso exemplo

Domínio: remontti.net.br
Blocos que serei responsável IPv4 250.250.0.0/23 (255.255.254.0) / IPv6 2000:FFF::/32 minha rede ainda conta com alguns blocos de IPs inválidos bem como 192.168.0.0/16, 172.16.0.0/12 e 10.0.0.0/8 que por ventura também irei autorizar consultas recursivas.

Tenho ainda meus servidores, quais ficarão configurado com os seguintes IPs IPv4/IPv6:
ROUTER GW -> 250.250.0.1 / 2000:fff:250:250:0::1
SERV DNS MASTER -> 250.250.0.2 / 2000:fff:250:250:0::2 (ns1)
SERV DNS SLAVE -> 250.250.0.3 / 2000:fff:250:250:0::3 (ns2)
SERV WEB + FTP -> 250.250.0.4 / 2000:fff:250:250:0::4 (www,ftp)
SERV ZABBIX -> 250.250.0.5 / 2000:fff:250:250:0::5 (zabbix)
SERV E-MAILS -> 250.250.0.6 / 2000:fff:250:250:0::6 (mail,imap,pop,smtp)
SERV HOSPEDAGEM * -> 250.250.0.7 / 2000:fff:250:250:0::7 (ns3)

* Inclui outros servidor para demonstrar como irei apontar para eles alguns nos domínios que seremos autoritarivo, lá na frente você vai compreender melhor.

INSTALAÇÃO SERVIDOR DNS MASTER (NS1)

Pronto! Nosso servidor recursivo já está funcionando, porém ele está aberto, e isso não é nada legal! Você não vai querer qualquer um utilizando seu servidor para resolver nomes. Vamos resolver isso bem simples.

Antes de mais nada vamos alterar o DNS do nosso servidor fazendo com que ele consulte em si próprio. Essa alteração deve ser feita no arquivo /etc/resolv.conf, eu irei utilizar o editor vim, mas fique a vontade de usar o seu preferido.

Altere para:

Feito isso você pode fazer um ping para um domínio e ver se ele resolveu o host.
Agora “mão na massa”! Vamos começar acessando nosso diretório de instalação do Bind que fica em /etc/bind/

As configurações principal é armazenado nos seguintes arquivos:
named.conf
named.conf.local
named.conf.options

Iremos alterar o named.conf.options, o próprio nome já se auto descreve o que vamos encontrar nele.
Sempre gosto de preservar o arquivo original, então vamos fazer um backup antes de modifica-lo.

Agora vamos as alterações, vou deixar explicado como comentários dentro no nosso arquivo.

Pronto nosso servidor Recursivo já está funcionando! Caso você não queria seu servidor sendo recursivo apenas altere allow-recursion e allow-query-cache para apenas localhost. Esta também será feita no servidor Slave (ns2).

Agora precisamos apenas dar um restart no bind para que as opções tenham efeito.

IP REVERSO (NS1 Master)
Vamos a configuração do nosso reverso. Particularmente gosto de dentro da pasta /etc/bind/ criar alguns diretórios quais separo as configurações.

Somos “donos” do bloco 250.250.0.0/23 que representam dois blocos /24 (250.250.0.0/24 + 250.250.1.0/24). Para facilitar vou fazer a configuração em dois arquivos separando cada bloco /24. É possível colocar tudo em um mesmo arquivo? Sim, mais eu particularmente não gosto 😀
Vamos ter que dar nomes a todos nossos 512 IPs representado pelo nosso /23, no exemplo não vou criar todos, vou por um […] q representa que você deve completar com os demais ips, também vou usar como parado o nome para os IP o próprio endereço IP porém com um abreviação “rev-250-250-X-Y” com exceção nossos servidor já conhecido, ns1, ns2, mail … Vale lembrar que todos esses nomes de hosts serão configurado exatamente posterior na configuração sobre o domínio. Para que quando vc consulte o nome de um IP ele resolva em um nome e ao você consultar este nome ele resolva em um IP, por isso o nome de reverso!
Primeiro arquivo 250.250.0.rev

Preste atenção em 0.250.250.in-addr.arpa. essa linha (são duas no arquivo a baixo) ela deve ser alterada com o inverso do seu IP, se seu bloco fosse ex.: 100.200.300.0/24 ficaria 300.200.100.in-addr.arpa. fica ligado 😛
Outra coisa importante é o serial (2017010100) ele esta presente em todos os arquivos e deve ser alterado toda vez que for alterado. Ele segue o padrão [ano-mes-dia-sequencial].

Segundo arquivo 250.250.1.rev (observe 1.250.250.in-addr.arpa)

Se possui bloco maiores e diferente, e com um padrão de nomes iguais o modo GENERATE ajuda muito, ficando da seguinte forma:

Barabada não!? 🙂

Não podemos esquecer nosso reverso do IPv6!

Terceiro arquivo 2000.fff.rev

Este site http://rdns6.com/hostRecord pode ser bem útil para gerar seus PTRs.
Para finalizar acertando as permissões.

Precisamos informar nossas zones “lincar nossos arquivos” para serem interpretado pelo bind, esse arquivo é o named.conf.local, como estamos configurando nosso servidor master essas zonas serão do tipo (type) master e para informar o arquivo onde está a configuração da zone usamos o parâmetro file /caminho-completo/arquivo

Adicione nele:

Restart o serviço.

Vamos ver se ele já está resolvendo nosso IP então!

screenshot_20161001_151657

Vamos configurar agora nosso domínio autoritativo remontti.net.br.
Para ficar organizado vou criar a pasta master também.

Criamos então nosso arquivo remontti.net.br.hosts na pasta master.

Usando GENERATE:

Criamos uma zone para nosso dominio remontti.net.br em named.conf.local

Adicione ao final do arquivo:

Restart o serviço.

Testamos agora para ver se está resolvendo nosso nomes

screenshot_20161001_152458

Parabéns! Seu servidor master está pronto!

INSTALAÇÃO SERVIDOR DNS SLAVE (NS2)

Praticamente o processo se repete, com algumas alterações.

Alterar o DNS do servidor:

Altere para:

Criamos um backup do named.conf.options

No named.conf.options unica coisa que vai alterar é em allow-transfer, como esse servidor é slave, ele não não tem a necessidade de informar o IP de outro(s) servidores que slaves. Como dito antes, se você não quiser que seu servidor seja recursivo apenas altere allow-recursion e allow-query-cache para localhost.

IP REVERSO (SLAVE)

Para organizar criamos duas pastas slave-rev para nossos reveros e slave para nossos dominios slave e alteramos as permissões para nosso user bind poder escrever nelas.

Não é mais necessário criar os arquivos pois esses serão transferidos do nosso servidor master. Basta informarmos em nossas zonas do arquivo named.conf.local, que serão do tipo (slave) e apontaremos o IP do master para que nosso servidor slave faça a transferência do master.

Adicione nele:

Restart o serviço e veja se dentro dos diretórios slave e slave-rev os arquivos foram criados.

screenshot_20161001_154900

Vamos aos testes.

screenshot_20161001_155323

No nosso cenário temos um servidor de hospedagem nesse terei dois domínios, então também quero que meu servidor slave responda por eles. Para isso basta nos adicionar no nosso arquivo named.conf.local:

Restarte o bind e não esqueça que é necessário que seu servidor de hospedagem tenha o IP do seu servidor slave para poder fazer os allow-transfer.

Não esqueça também de alterar nas configurações da sua placa de rede dos seus servidores (dns-nameservers e dns-search).

DICA DE SEGURANÇA:

As consultas recursivas são fechada para outros IPs que não esteja na sua ACL permetidos, porém esses IPs tem resposta com negação. Para visualizar esses logs faça o seguinte:

Agora crie o diretório que ficarão os logs e de permissão:

Agora quando alguem não autorizado tentar usar seu DNS sera gerado um log.

Agora vamos a instalação do fail2ban para coloca ordem na casa.

Vamos habilitar o modulo para começar a proteção, vale lembrar que o modulo SSH já vem ativo por padrão.

Debian 9

Para debian 8 altere as linhas no arquivo /etc/fail2ban/jail.conf.

Se você gosta da coisa “violenta” como eu mude o padrão para DROP!

Procure:

Agora reinicie o serviço

Os IPs que tiverem tentando usar seu DNS serão avisado 5x depois irão tomar um DROP 😛
Para ver as regras do iptables use:

DICA ROOT SERVERS E KEYs ATUALIZADO:
Atualize os root servers ele é a alma do seu servidor. Faça isso tanto nos Master quanto no Slave.

Dica de leitura:
https://pt.wikipedia.org/wiki/Servidor-raiz

NÃO TEM IPv6 CONFIGURADO?:
Se seu servidor não tiver IPv6 configurado recomendo que desative o ipv6 no bind (o que é triste) mas se não tem…

em OPTIONS=”-u bind” adicione um -4 OPTIONS=”-4 -u bind”

listen-on-v6 { any; };
#para:
listen-on-v6 { none; };

FIM! 🙂

Gostou? Deixe seu comentário ficarei feliz em saber que lhe ajudei, e se tiver qualquer pergunta deixe-a também, se preferir acesse o menu Consultoria lá você encontra meios de falar comigo!

Abraço!

Fonte: https://ftp.isc.org/isc/bind/9.9.5/doc/arm/
http://www.zytrax.com/books/dns/ch7/statements.html

EXEMPLOS EXTRAS:
Delegando um bloco menor ex /26 para outros servidor.

Entenda melhor. Assista: https://www.youtube.com/watch?v=VIa1dHtmQ4U (~20min)

Base: rfc2317:

Rudimar Remontti

Trabalho atualmente como Gerente de Redes em um Provedor de Internet no Rio Grande do Sul.

Você pode gostar...

141 Resultados

  1. Parabéns amigo, tutorial top! Estou tendo um problema, acredito que seja da configuração da máquina (Debian 9). Quando eu retiro o dns do resolv.conf e coloco localhost ele para de resolver, quando eu coloco um DNS qualquer, ele resolve como o DNS colocado.

  2. diego disse:

    Bom dia, primeiramente parabéns pelo trabalho 🙂 esse domínio vai aparecer nos velocímetros exemplo: ookla? meu domínio no bind9 pode ser só uma nome sem .com.br exemple: REMONTTI?

  3. Ricardo disse:

    Muito bom esse post, saberia dizer se para a zona reversa do ipv6, tem como eu usar o recurso $ GENERATE $ igual ao ipv4?

    • Sim, porem não para gerar milhares de combinações. ex:

  4. Thiago disse:

    Rudimar, ja viu o https://pi-hole.net.
    Nossa instalei ele no Ubuntu muito TOP, estou apanhando pra implementar ele com o bind em vez de FTL do pi-hole.
    Você ja viu ele?

  5. ronny disse:

    Parabéns amigo pelo Post, mt show. Amigo configurei aqui porém está ignorando a zona reversa.
    /etc/bind/reverse/45.174.0.rev:6: ignoring out-of-zone data (0.174.45.in-addr.arpa)

    segue parte da conf

    $ORIGIN .
    $TTL 86400 ; 1 day
    0.174.45.in-addr.arpa IN SOA ns1.remontti.net.br. hostmaster.remontti.net.br. (
    2019040500 ; serial
    10800 ; refresh (3 hours)
    3600 ; retry (1 hour)
    2419200 ; expire (4 weeks)
    300 ; minimum (5 minutes)
    )
    NS ns1.infinitynt.com.br.
    NS ns2.infinitynt.com.br.

    $ORIGIN 0.174.45.in-addr.arpa.
    0         PTR 0-0-174-45.infinitynt.com.br.
    1         PTR 1-0-174-45.infinitynt.com.br.
    2         PTR 2-0-174-45.infinitynt.com.br.
    3         PTR 3-0-174-45.infinitynt.com

    sabe oq pode ser? dez de já agradeço

  6. Leandro disse:

    Olá, Rudimar.

    Primeiramente, gostaria de agradecer por compartilhar os seus conhecimentos. Conteúdo muito bom!

    Não sei se vc consegue me ajudar, muitos menos, se eu consigo exemplificar uma dificuldade que estou tento para criar a minha zona DNS dentro do CWP 7.

    Contratei uma VPS da OVH.

    instalei o CWP7, onde o bind já vem nativo.
    dentro do painel do centos já vem apontando o ns1.centos.exemplo.com. Alterei para o meu dominio e ele cria a “seguinte” zona automaticamente.

    ; Zone file for meudominio.com.br
    $TTL 14400
    @ 86400 IN SOA ns1.centos.exemplo.com. meu.email.com. (
    2019040457 ; serial, todays date+todays
    3600 ; refresh, seconds
    7200 ; retry, seconds
    1209600 ; expire, seconds
    86400 ) ; minimum, seconds

    @ 86400 IN NS ns1.centos.exemplo.com.
    @ 86400 IN NS ns2.centos.exemplo.com.

    Coloquei meu dominio.com.br dentro do painel do cliente da ovh. Lá ele cria automaticamente outra Zona.

    $TTL 3600
    @ IN SOA dns.ovh.exemplo.com. tech.ovh.exemplo.com. (2019040400 86400 3600 3600000 60)
    3600 IN NS dns.ovh.exemplo.com..
    3600 IN NS dns2.ovh.exemplo.com..
    3600 IN A 111.000.00.0
    600 IN TXT “1|www.meudominio.com.br”
    ftp 3600 IN CNAME meudominio.com.br.
    mail 3600 IN CNAME ssl0.exemplo.com.

    Eles me forneceram um IP referente ao servidor da VPS. 222.000.00.0
    No exemplo da zona do dns criado pelo painel da ovh, o IP é 111.000.00.0

    Minha dúvida é como juntar isso tudo em uma Zona DNs só e, principalmente, como criar a zona reversa com todas essas informações.

    Peço desculpas se não consegui explicar direito, não sou um profissional da área. Mas se consegui, seria muito bem-vinda uma orientação.

    Desde já, agradeço.

    Um abraço.

    • Não sei se entendi muito bem, mas vc precisa ser donos dos ips para fazer o reverso, eles precisam estar delegado para vc/seu servidor e vc fazer a configuracao do mesmo, no fina do tutorial tem um ex, de como o dono do ip teria q fazer.

      • Leandro disse:

        Primeiramente, te agradeço pelo retorno.

        Sim, eles me delegaram o ip e um reverso… no exemplo citei o IP 222.000.00.0… “esse” veio no email com o acesso root.

        Seus exemplo foram baseados no Debian e a minha “licença” foi adquirida com o CentOS… o Bind instalado no CWP não contem os mesmos caminhos e arquivos… por exemplo: etc/bind/named.conf.options, não existe.

        Se eu instalar somente o bind, perco o CWP e vise e versa…crio conflito.

        Como comentei anteriormente, sem ver, realmente é difícil…rsrs.

        Vou repassar novamente seguindo as suas orientações e pesquisar mais sobre o assunto. Realmente tentar entender o conceito como um todo.

        Muito obrigado.
        Grande abraço

  7. MARCELO disse:

    Tudo muito bem detalhado, obrigado por compartilhar seu conhecimento Remontti!!! tem alguma dica do que possa estar ocorrendo: fiz todo o procedimento conforme o tutorial e testes internamente na rede e utilizando o servidor responde normalmente o reverso,posteriormente foi publicado os servidores no REGISTRO BR sem erros acusados na pagina, mas já faz 2 dias da publicação no registro, porém quando faço testes de outro local na internet para ver meu reverso de alguns de meus ips os mesmos não retornam o nome do host, tem idéia do que possa ser?

  8. wellington Pontes disse:

    Grande aula essa .
    meu amigo segui todos os seus passos e depois de alguns dias estou recebendo esse tipo de mensagem quando eu fico monitorando os logs

    “36405 (x25.txhfazji.com): rate limit drop NXDOMAIN response to ( ip x.x.x.x )
    “36395 (x27.imttkypo.com): rate limit slip NXDOMAIN response to ( ip x.x.x.x )

    estou usando DNS como recursivo apenas para minha rede interna porém é muita log que sobe , estava lendo sobre e acredito que possa ser um DDoS vindo do cliente ou a maquina dele virou um botnet

  9. Luiz disse:

    Primeiramente vlw pelo ótimo tutorial, mas estou tendo problemas, tenho um servidor cloud da uol com 1 ip público, confuso na parte dos blocos de ip, não entendi essa parte, queria saber como faço para descobrir o bloco de ip

  10. Aldoir disse:

    Parabéns, Rudimar. Teu tutorial ficou perfeito. Super completo. Só precisei seguir os passos e o DNS está funcionando perfeitamente. Obrigado mesmo.

  11. fabio disse:

    Olá, parabéns pelo seu Blog! Muito bom.
    Meu cenário é o seguinte. Compro link dedicado de uma empresa e recebo apenas 1 IP público e este não está designado à minha empresa no registro.br. Tenho um DNS server unbound na minha rede trabalhando de forma recursiva. Existe alguma forma de, considerando meu cenário, eu conseguir fazer com que o nome da minha empresa apareça nos sites de teste de velocidade?

  12. Rodrigo disse:

    Parabéns pelo blog, estava procurando algo do tipo e seu blog me parece bem organizado.
    Vou tentar replicar o seu ambiente.
    🙂

  13. Muito Fera, muito solícito, colocou meu server em ordem e ainda de quebra configurou no registro br. Muito Obrigado Rudimar.

  14. Morosini, Guilhermmy disse:

    Ótimo post, deixo meus parabéns pela iniciativa. Com atenção, seguindo cada passo, não ha erro.

  15. Andre Luiz disse:

    Amigo, muito obrigado pelo belíssimo passo-a-passo. Eu ia contratar um servidor DNS pago, mas acho que sua ajuda vai solucionar meus problemas… aqui, eu instalei só o Recursivo por enquanto.
    Se possível me tirar uma dúvida… tem alguma forma de eu ver o quanto o DNS está sendo usado?

  16. Roberto disse:

    Olá Rudimar, estou com um problema, acredito que seja alguma configuração de qui fiz de forma incorreta, quando desativo o Recursivo o Reverso também para de funcionar, poderia me dar uma luz? hehehe

  17. Olá Rudimar, como faço para que o Registro.br leia o meu reverso? É como se ele nao lesse o dns1.eitelecom.com.br

  18. Robertp disse:

    Boa tarde Rudimar, estou com problema no meu servidor, na resolução de paginas esta dando erro de NXDOMAIN, saberia me dizer onde pode ser que eu tenha errado, para estar apresentando este erro? Desde já agradeço

  19. José Ricardo disse:

    Ótimo tutorial, o mais completo que achei. Porém tenho uma dúvida, hoje tomei a frente de um ISP que estava abandonado pelo antigo administrador, o mesmo não configurou os reversos para o bloco de IP do provedor e o recursivo apresentou falhas e tive que desativar. A pergunta é a seguinte, tenho um servidor Dell 2950, estou pensando em subir um promox nele e dividir em 4 servidores (4x400gb, 4 cores e 4 giga de ram para cada) 1 recursivo, 2 reversos e 1 win7lite, dessa maneira funcionária corretamente?

  20. Erik P. Ghijs disse:

    Rudimar Remontti, bom dia

    Antes, quero parabenizá-lo pelo excelente trabalho, estou querendo montar um DNS autoritativo, reverso em dns cache na mesma maquina, isso e possível? como?, eu ja tenho o DNS cache funcionando inclusive aplique alguma o fail2ban como vc menciona acima e tb fiz alguns bloqueio no iptables seguinto este link:(https://www.vultr.com/docs/how-to-setup-fail2ban-on-debian-9-stretch e https://www.logcg.com/en/archives/1681.html), pois nao consegui utilizar sua regra do fail2ban.

    Abaixo segue minhas configurações, não sou nenhum especialista, então fique a vontade para sugerir melhorias na conf como na segurança, nos outros comentários vi que vc não aconselha utilizar Forwarders, pq? eu achei que ele somava no bind no meu caso com chave, pq toda vez que reiniciamos o bind9 o cache zera?, exite uma manira de não zera?, exite algum site online que possa testa todo meu DNS tanto nas config como segurança?

    Obrigado,

    # vi /etc/bind/named.conf.options

    // ACLs (Access Control Lists)

    // ACL “permite-recursiva” vão ficar os hosts estao autorizado a fazer
    // consultas recursivas atraves deste servidor.
    acl permite-recursiva {
    170.xxx.xxx.xxx/22;
    10.0.254.0/24;
    localhost;
    localnets;
    };

    // ACL “tranf-secundarios” serao os hosts que estao autorizados a receber
    // transferencias de zona a partir do servidor.
    #acl tranf-secundarios {
    # xxx.xxx.xxx.xxx;
    #};

    options {
    directory “/var/cache/bind”;
    managed-keys-directory “/var/cache/bind/dynamic”;
    auth-nxdomain no;
    listen-on-v6 { none; };
    listen-on { permite-recursiva; };
    allow-query { any; };
    recursion yes;
    forwarders {

    // DNS Cloudflare
    1.1.1.1;
    1.0.0.1;

    // Google servers
    8.8.8.8;
    8.8.4.4;

    // Gtei Level3
    4.2.2.1;
    4.2.2.2;
    4.2.2.3;
    4.2.2.4;
    4.2.2.5;
    4.2.2.6;
    209.244.0.3;
    209.244.0.4;

    // GigaDNS
    189.38.95.95;
    189.38.95.96;

    //Opendns
    208.67.222.222;
    208.67.222.220;

    //DNS watch
    84.200.69.80;
    84.200.70.40;
    };

    // Limita o uso da memoria RAM
    datasize 256M;

    version “Nao Disponivel”;

    ### DNSSEC ###
    dnssec-enable no;
    dnssec-validation no;
    dnssec-lookaside auto;

    rate-limit {
    ipv4-prefix-length 32;
    window 10;
    responses-per-second 25;
    errors-per-second 5;
    nxdomains-per-second 5;
    slip 2;
    };

    };

    #Controles
    include “/etc/bind/rndc.key”;
    controls {
    inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { rndc-key; };
    };

    #LOGS
    logging {
    channel query_log {
    file “/var/log/security.log” versions 3 size 30m;
    severity info;
    print-time yes;
    };
    category default {
    query_log;
    };

    channel xfer-log {
    file “/var/log/named.log”;
    print-category yes;
    print-severity yes;
    print-time yes;
    severity info;
    };
    category xfer-in { xfer-log; };
    category xfer-out { xfer-log; };
    category notify { xfer-log; };

    channel update-debug {
    file “/var/log/named-update-debug.log”;
    severity debug 3;
    print-category yes;
    print-severity yes;
    print-time yes;
    };
    channel security-info {
    file “/var/log/named-auth-info.log”;
    severity info;
    print-category yes;
    print-severity yes;
    print-time yes;
    };
    category update { update-debug; };
    category security { security-info; };

    };

    • Forwarders só vai encaminhar, seu servidor só é uma ponte. É natural o cache esvaziar quando reiniciar o serviço. dnssec-enable é obrigatoriamente estar ativo para conversar com os roots servers… Precisaria ajustes melhores…

      forward

      forward ( only | first );
      forward is only relevant in conjunction with a valid forwarders statement. If set to ‘only’ the server will only forward queries, if set to ‘first’ (default) it will send the queries to the forwarder and if not answered will attempt to answer the query. This statement may be used in a zone, view or a global options clause.

      forwarders

      forwarders { ip_addr [port ip_port] ; [ ip_addr [port ip_port] ; … ] };
      forwarders { 10.2.3.4; 192.168.2.5; };
      forwarders defines a list of IP address(es) (and optional port numbers) to which queries will be forwarded. Only relevant when used with the related forward statement. This statement may be used in a zone, view or a global options clause.

  21. Peterson Reimberg disse:

    Boa tarde, Rudimar.

    Seu blog é muito legal parabéns pelo conteúdo e organização.

    Gostaria de configurar meus servidores DNS da seguinte maneira:

    NS1 (Master) este cara seria o Reverso e o Autoritativo.
    NS2 (Slave) este cara iria trabalhar apenas como Reverso.

    Como efetuo a configuração para funcionar corretamente?

    Aguardo seu retorno

  22. Gustavo disse:

    Bom dia; parabéns pelo conteúdo, muito bem produzido e de extrema utilidade, se puder me ajudar em mais uma questão, fiz a configuração do DNS Reverso porem quando dou o comando: dig -x iP @localhost, ele da o seguinte erro: connection timed out; no servers could be reached. saberia me dizer a causa desse erro?

    • Tente colocar o ips que vc usou na ACL direto na string { } em vez de usar o nome da ACL .
      Tive alguns relatos com este mesmo erro, e a solução foi esta, pelo que percebi “belo” windows+putty a levando algum carácter do capeta que faz ele não entender a ACL.

    • Aldoir disse:

      Boa noite gustavo
      Tente checar os arquivos de configuração:
      named-checkconf /etc/bind/named.conf.local
      named-checkconf /etc/bind/named.conf.options
      named-checkconf /etc/bind/arquivo_do_reverso
      etc..
      e ainda faça check das zonas:
      named-checkzone seudominio.com.br /etc/bind/arquivo.do.seudominio.com.br
      etc..

  23. luiz disse:

    Primeiramente parabéns pelas dicas com bind! Adaptei o seu exemplo para a minha realidade e dentro da rede funcionou perfeitamente. Agora quando tento acessar de fora da empresa, um domínio que está hospedado no servidor, simplesmente não funciona. Eu utilizo um domínio válido, registrado no registro.br. (Apontei os DNS master e slave também no registro.br mas mesmo assim não funciona) Você poderia me ajudar???

  24. Pedro Vila Real disse:

    Boa tarde,
    Primeiro gostaria de agradecer pelo post, muito bom.
    Mais estou tendo um problema, na parte da edição do vim /etc/bind/named.conf.options.
    Eu substitui o conteúdo, pelo descrito no site, porém a resolução de nomes não funciona no próprio servidor.
    Eu substitui o meu bloco de ips pelo seu. Você tem algum comando que possa testar o named.conf.options?

  25. Fabio Araujo disse:

    Boa tarde,
    Subir os meus servidores DNS reverso já tem uns dias e hoje recebir um email informando sobre Alerta: servico mDNS habilitado, como posso fazer pra resolver esse problema.

    Desde já grato pela a atenção.

  26. Cleber disse:

    Bom dia, ótimo tuto parabéns, uma duvida o servidor dns diminui o ping? configurei aqui mas se usar dig ele da 0ms e se uso ping ele da o mesmo tempo que um dns publico, exemplo ping http://www.google.com é isso mesmo ou falta alguma coisa?

  27. Emerson disse:

    Pessoal me tire uma duvida, vejo muitos falarem que não é para utilizar o dns publico na empresa por motivos de segurança, no caso é para configurar um servidor de dns na empresa para resolver os hostnames externos, eu utilizo no resolv.conf o dns da google 8.8.8.8, mas gostaria de saber quando eu configurar o bind para ser meu servidor dns ele resolveria os nomes locais e nomes externos ele resolveria como?, pois para resolver os nomes externos tenho que colocar o opção abaixo, não seria a mesma coisa eu colocando no resolv.conf de qualquer forma ele não encaminharia para o dns da google?

    forwarders {
    8.8.8.8;
    208.67.222.222;
    };

    • A principal vantagem que você terá um tempo de resposta baixo (recursivo). Quanto a segurança vejo muita gente fazendo servidor de DNS e fazendo tudo errado, deixando recursivo aberto, usando distribuições que usam pacotes instáveis cheio de vulnerabilidade (quanto a isso o debian sempre vai estar na frente quando se fala em pacotes seguros. total seguro? não! mas com certeza vai e relação a outras distros) e ai a segurança já era, melhor vc usar um dns publico.
      Usar forwarders? NÃO! Se é pra montar um servidor com forwarders melhor continue então usando dns publico!
      “Monte um servidor DNS de verdade!” Se precisar consultoria entre em contato pelo telegram @remontti
      Antes de tudo entenda com um DNS funciona:
      -> https://www.youtube.com/watch?v=ACGuo26MswI
      -> https://www.youtube.com/watch?v=epWv0-eqRMw

  28. Guilherme disse:

    Aguém tem exemplo de GENERATE pra PTR do ipv6?

  29. Boa tarde Rudimar, belo post, estou seguindo seu tutu para a montagem de um server DNS recursivo e autoritativo, porem empaquei na hora de dar um dig -x X.X.XX @localhost, ele esta me retonando a segunte mensagem (; <> DiG 9.10.3-P4-Debian <> -x 179.106.3.4 @localhost ;; global options: +cmd ;; connection timed out; no servers could be reached), ja revisei todos tudo mas não estou passando dai, porem se eu colocar DNS 8.8.8.8 ele me retorna o resultado do DIG mas não faz consulta locar como quero, você teria alguma ideia do que poderia ser ?

  30. Ledson Alves disse:

    Segui todas as configurações, testei outras mas sempre me retorna o Answer 0….
    Não estou conseguindo configurar o Reverso e Autoritativo, poderia me dar alguma ajuda??

  31. Ledson Alves disse:

    Em uma caso que a rede esta em OSPF e os servidores estão em /30, como ficaria nesse caso a configuração dos arquivos do reverso
    ;;;;;;;;;;;;;;;;;;;;;;;
    ;;;; 100.200.0.rev ;;;;
    ;;;;;;;;;;;;;;;;;;;;;;;

    $ORIGIN .
    $TTL 86400 ; 1 day
    0.200.100.in-addr.arpa IN SOA ns1.exemplo.com.br. hostmaster.exemplo.com.br. (
    2018010300 ; serial
    10800 ; refresh (3 hours)
    3600 ; retry (1 hour)
    2419200 ; expire (4 weeks)
    300 ; minimum (5 minutes)
    )
    NS ns1.exemplo.com.br.
    NS ns2.exemplo.com.br.

    $ORIGIN 0.200.100.in-addr.arpa.
    0 PTR 100-200-0-000.exemplo.com.br.
    21 PTR ns1.exemplo.com.br.
    25 PTR ns2.exemplo.com.br.
    29 PTR zabbix.exemplo.com.br.
    33 PTR radius.exemplo.com.br.

    ; Os gerados auto
    $ORIGIN 0.250.250.in-addr.arpa.
    $GENERATE 50-255 $ PTR 250-250-0-$.exemplo.com.br.

  32. Marquynhos disse:

    Parabéns Cara.. Excelente seu tutorial.. Ajuda muito nós iniciantes..

  33. Este é o melhor procedimento para configuração de servidor DNS! Sempre recorro a esta página para seguir o procedimento e configurar corretamente um servidor DNS completo!

  34. caique disse:

    Na hora que vc deixa ( […] complete com todos os IPs/Nomes ) preciso declarar todos os ips ? , pois no meu bloco de Ips possuem 1024 ips que seriam /22, teria que declarar 1024 ips? pq isso provavelmente levaria horas , não ah uma maneira de declarar apenas uma vez um bloco inteiro? obg

  35. LuanBenato disse:

    Ola amigo como vai, em como eu faço para atualizar meu Bind9 e manter ele sempre atualizado?

    Parabens pelo trabalho

  36. Luan disse:

    Opa, ola amigo sigo seu blog deixa eu tirar uma duvida, o bind 9 como faz para atualizar ele e manter sempre as verçoes mais recente , ex. dia 11 teve a atualização das chaves DNSsec , sera que ele atualizou altomaticamante, se nao, como faz ?

    fico no agrardo grande abraço OTIMO trabalho.

  37. Geyson Phillype disse:

    Olá,

    Grato pela conteúdo, fiz aqui deu tudo certo!
    Mais com meu link cair o registro.br me aviso que não vai anunciar mais por com de perda de comunição!
    Contratei uma VPS, como ficaria um exemplo de configuração com DNS fora da rede?

  38. Douglas de Souza disse:

    Ola, amigo!
    parabens pelo blog, e por este tutorial de excelente qualidade!

    bom… estou configurando o bind9 aqui, numa vps debian, seguindo seu tutorial… fiz tudo conforme prescrito, mas nao consegui alterar o dns, para o dns do proprio servidor… e ao fazer um teste, vejo que e nao esta funcionando as zonas autoritativas, so funciona resursivo….
    queria saber, portanto, se e’ obrigatorio alterar o dns, para o dns do proprio servidor, para que esta funcionalidade de certo, ou senao, se pode esta ocorrendo outro problema…
    tento alterar o dns pelo /etc/resolv.conf, mas quando reinicio a maquina, nao surti efeito; volta as configuracoes anteriores, com o dns que ja estava anteriormente, o dns do proprio servidor… e se altero o dns pelo arquivo /etc/network/interfaces quando reinicio, nao consigo me conectar mais ao vps via ssh, dai tenho que formatar o servidor, para poder voltar e fazer tudo do zero…
    Ja conferi as configuracoes do bind, mas aparentemente esta tudo OK…
    entao, tenho esta duvida, se e’ mesmo obrigatorio alterar o dns, para que o servidor use seu proprio dns, e se for pelo mais dicas para faze-lo… ou entao, o que mais poderia ser o problema?

    bom, queria contar com tua ajuda, e aguardo anciosamente por sua resposta…

    cumprimentos,
    Douglas de Souza

  39. Matheus disse:

    Ola, Rudimar! Tudo certo?

    Bom, primeiramente gostaria de parabeniza-lo pelo seu blog, que tem um conteudo aprofundado e bem elaborado; que o faz se diferenciar de muitos outros blogs com informacoes superficiais, que vemos por ai.
    Mas entao, meu caro….acontece que estou com um problema aqui no para configurar o bind9 e queria ver se pode me ajudar…
    Acontece que gostaria de deixar o bind9 funcionando como um DNS recursivo aberto, e ter acesso a logs com todos os sites acessados… Eu fiz as configuracoes do seu tutorial, deixando o rescursivo habilidado no arquivo de opcoes, mas dai o DNS funcionou apenas em paginas que tenho autoridade, paginas em geral so fica carregando e nao funciona…
    Mas ai fico a entender, que isto pode ser, porque o DNS autoritativo nao pode ser acessado senao por maquinas especificadas na configuracao, seria isto? Mas ai, depois formatei o VPS, e fiz tudo do zero, apenas instalando o bind9, sem fazer configuracoes de dns autoritativo, que tem uma parte no inicio do seu tutorial, que voce diz que ja esta funcionando recursivo, mas ao testar vi que mesmo assim nao funciona de forma recursiva… Ja ate mesmo desativei o iptables e o ufw, para descartar a possibilidade de firewall estar bloqueando alguma porta. E ja testei em duas VPSs diferentes e nao deu certo. Estou fazendo no Ubuntu 16.04…

    Enfim, no que poder me ajudar, ficarei muito grato… Ja coloquei seu blog como favorito e estarei acompanhando o mesmo frequentemente…
    Desde ja agradeco…
    E um forte abraco!

    • Para deixar ele recursivo aberto, basta vc instalar o bind9, é por no named.cond.options

      allow-recursion { any; };
      allow-query-cache { any; };
      allow-query { any; };

      Mas tenha em mente que seu DNS vai virar escravo dos chinês/russo 🙂

      Não sei ql a finalidade… Mas tá aí sua solução.

      • Matheus disse:

        Aehehe! show de bola, meu caro!!! A solucao estava no { any; }; que nao tinha colocado….
        Mas agora sim!, desta forma que voce falou deu certo!
        E so mais uma coisa… sobre logs, voces saberia me dizer como habilitar…? gostaria de visualizar as paginas acessadas, ips, hora, o que for possivel… . isto para tambem ter algum controle de que chineses e russos nao estao no territorio sem meu concentimento… ahahhahh rsrs

        Mais uma vez, muito obrigado! 🙂

  40. Rafael disse:

    Rudimar, eu nao consigo acessar o editor vim /etc/bind/named.conf.options, pelo terminal o que pode ser?

  41. Emerson Rodrigo Batista Ribeiro disse:

    // ACL “permite-recursiva” vão ficar os hosts estão autorizados a fazer
    // consultas recursivas através deste servidor.
    acl permite-recursiva {
    127.0.0.1;
    ::1;
    250.250.0.0/23;
    2000:fff::/32;
    192.168.0.0/16;
    172.16.0.0/12;
    10.0.0.0/8;
    quando uso o allow-recursion permite-recursiva , preciso colocar os ips ou ele pega da acl,

    Otimo blog vc está de parabéns

  42. Emerson Ribeiro disse:

    ola td bem, quando dei o comando ls -lh slave* não é possivel acessar slave*, outra duvida , quando vc usa a frase entre “” , temos que colocar assim tb correto?
    ex // Reverso IPv4

    zone “0.250.250.in-addr.arpa” {
    type slave;
    file “/etc/bind/slave-rev/250.250.0.rev”;
    masters { 250.250.0.2; };
    allow-notify { 250.250.0.2; }
    e parabéns , me ajudou muito

  43. ola boa tarde , e parabéns está me ajudando muito só me surgiu uma duvida , que acho que é até boba mas vamos lá

    $ORIGIN remontti.net.br.
    $TTL 10800 ; 3 hours

    250-250-0-0 A 250.250.0.0
    esse ip representa o que ?

  44. Alex disse:

    Grande Rudimar! Seria bom acrescentar em seu post essa nova informação. http://www.telesintese.com.br/melhora-da-seguranca-no-dns-pode-levar-apagao-da-internet/ . Já está 100% com isso fecha nos 110% kkkkk. Abraço

  45. Gaspar Poletto disse:

    Muito bom amigo!! Preciso de ajuda pois quando dou um tracert de dentro da minha rede aparece router.gw…. ,as quando dou de fora da rede não aparece.

  46. Jonathan disse:

    como fazer o $GENERATE do ipv6 pra por nome em todos os ips ?

    • $GENERATE tem pouco a oferecer na geração de endereços reversos IPv6, e é praticamente impossível você gerar reverso de todas as possíveis combinações, isso tb demandaria um alto gasto de hardware do servidor, por isso o recomendado é fazer apenas o reverso dos endereços estáticos.

  47. Rodrigo disse:

    Rudimar seu blog é demais, este post então nem se fala

    so tenho uma duvida, para eu colocar no registro.br apontando para os ips, sempre da tempo esgotado, o que seria?

    • Valeu!!! 🙂
      Verifica se não tem nenhum firewall na frente.
      Ou pode ter algum erro.
      Verifica: /etc/init.d/bind9 status

      • Rodrigo disse:

        Esta dando este log

        ● bind9.service – BIND Domain Name Server
        Loaded: loaded (/lib/systemd/system/bind9.service; enabled; vendor preset: enabled)
        Active: active (running) since Sat 2017-08-05 12:17:14 -03; 9s ago
        Docs: man:named(8)
        Process: 506 ExecStop=/usr/sbin/rndc stop (code=exited, status=1/FAILURE)
        Main PID: 584 (named)
        Tasks: 7 (limit: 4915)
        CGroup: /system.slice/bind9.service
        └─584 /usr/sbin/named -f -u bind

  48. Fábio disse:

    Muito bacana seu site. Conteúdo de qualidade, parabéns!

  49. Thiago disse:

    Para a delegação de DNS menores que /24 (256 IP`s), utiliza-se a norma RFC-2317 para delegar. Como seria feito essas configurações? Preciso delegar para um cliente um /27.
    Encontrei algo parecido abaixo, más não entendi bem.

    Se alguém puderes ajudar, desde já agradeço!

    Segue o que encontrei;

    ORIGEM $ 32-47.0.168.192.in-addr.arpa.
    @ IN SOA ns1.[dominio_ip2]. .[seu_email]. (…)
    @ NS ns1.dominio_2.
    @ NS ns2.dominio_2.
    ;
    32 PTR host1.dominio_2.
    33 PTR host2.dominio_2.
    ;…
    47 PTR host3.dominio_2.

    • Assista: https://www.youtube.com/watch?v=VIa1dHtmQ4U (~20min)

      Veja um ex.:http://www.zytrax.com/books/dns/ch9/reverse.html

      Conforme a rfc2317 ficaria:

      • Thiago disse:

        Rudimar Remontti,

        Muito Obrigado, até que em fim consegui fazer funcionar.
        É sempre bom contar com pessoas assim como você, humilde e por sua vez com um conhecimento espetacular.

        Obrigado de coração, no que precisar estou à disposiçao.
        Sou um profissional mais voltado para roteamento, BGP, OSPF, Redes DWDM… No que precisar pode contar comigo.

  50. Parabéns Rudimar, fico top. muito bem explicado. é bom de tempos em tempos que alguém que entenda atualize esse tipo de tutorial. tem vários, mas muito confusos. o seu ficou muito claro. Obrigado!

  51. amigo como fica a questao de delegar /30 para um cliente no registro.br

  52. José Eduardo Siqueira Baum disse:

    Não precisa fazer nenhum apontamento no recursivo para os reversos?

  53. José Eduardo S. Baum disse:

    Desculpe minha ignorância, mas e e eu quisesse separar o recursivo do autoritativo reverso do provedro como ficaria as configurações do recursivo?

    • José Eduardo S. Baum

      No seus autoritativo no arquivo named.local.options vc não permite consultas recursivas:

      E no recursivo você informa os blocos de ips da sua rede que podem consultar… Ou use um ACL com o bloco/ips.

  54. luan benato disse:

    Opa , entao eu resouvi de outra maneira ,

    Retirando a seguintes linhas
    // Evita problemas com pacotes UDP grande com mais de 512-byte
    server ::/0 {
    edns no;
    };
    server 0.0.0.0/0 {
    edns no;
    };

    e habilitando o dnssec como vem no padrao do Bind9 9.8 >

    //Suporte a DNSSEC
    dnssec-validation auto;

    E o seguinte site acusa que esta OK
    https://dnssec.vs.uni-due.de/

    O que teria de Opções para aumentar a Segurança ?
    Obrigado.

    • LUAN:
      Bacana! Você fechando as consulta recursivas para apenas sua rede já deixa bem seguro.
      Mas se você quiser elevar a segurança você pode instalar o fail2ban e em /etc/fail2ban/jail.conf vc procura pelo bind vai encontrar no próprio arquivo uma “documentação” do que deve ser feito. (Basicamente é colocar o bind gerar logs em um dir para que o fail monitore esses logs) baseado nos erros de reject o fail vai criar regras de firewall (iptables) bloqueando os ips q ficam tentando usar seu dns (por mais q ele nao responda) mas tento um firewall ele vai negar ja a conexão.

  55. luan benato disse:

    Amigo , saberia me informar como habilitar DNSSEC ?

  56. Fabio Araujo disse:

    Boa tarde,

    Amigo como vai tudo bem ?

    Então realizei todos os processos do dns reverso que você posto no seu site, fiquei com uma pequena duvida, como faço dentro do bind pra quando eu digita um site ele automaticamente responder com outro?

    Fico muito grato pelo o conteúdo do site Remontti me ajudou bastante fiz os procedimentos e ficou legal. valeu mesmo

    Fico muito grato se me ajuda com esse ajuste.

    Um forte abraço….

  57. Ednei disse:

    Muito bom,

    So um detalhe no meu quando trasnferiu as zonas ela veio toda desformatada do master para o slave o que pode ser.

  58. Gilvan Muniz disse:

    Meu caro muito bom o conteúdo, mas se possível gostaria de uma ajuda. No meu caso o slave não cria os arquivos. Dei a permissão chown. Mas não cria. Estou só configurando um Master que está em uma vps e um slave que está em outra. Qual as maiores chances de erro? O master rodou direitinho.

    • Gilvan Muniz
      Verifica se você está autorizando o IP do SLAVE no MASTER. allow-transfer

      Veja também se no seu SLAVE você está apontando para o ip do MASTER. No tutorial tinha um erro encontrado pelo Gaspar Poletto, onde esta apontando para o próprio servidor SLAVE.

  59. Gaspar Poletto disse:

    Um Duvida na configuração dos IP Reverso do Slave, segundo a sua lista de ips o IP 250.250.0.3 é o IP do servidor slave.
    Então gostaria de saber se no lugar do 250.250.0.3 no arquivo de configuração do reverso do slave não seria o IP 250.250.0.2?

  60. Lairon Costa disse:

    Excelente tutorial Rudimar, vou configurar uma Ubiquiti EdgePro como servidor DNS e acredito que estas discas serão de grande serventia. Parabéns!

  61. Alex disse:

    Obrigado Rudimar Remontti! Resolvido com seu exemplo. Mais uma vez parabéns.

  62. Alex disse:

    Excelente tutorial! Ajudou bastante e adicionei seu site nos favoritos também. Parabéns! Mas tenho uma duvida se eu quiser fazer o reverso de forma automática com alguns IP já cadastrado.
    Exemplo:

    50.168.192.in-addr.arpa. 86400 IN SOA ns1.teste.com.br. hostmaster.teste.com.br. (
    2015070702 ;serial
    10800 ;refresh
    1800 ;retry
    604800 ;expire
    86400 ) ;minimum
    50.168.192.in-addr.arpa. 86400 IN NS ns1.teste.com.br.
    50.168.192.in-addr.arpa. 86400 IN NS ns2.teste.com.br.
    1.50.168.192.in-addr.arpa. 86400 IN teste.teste.com.br.

    $GENERATE 2-255 $ PTR clientes.192-168-50-$.static.teste.com.br.

    Não funciona! Não resolve nem o teste.teste.com.br e nem os dinâmicos gerados pelo GENERATE. Se eu tirar a linha 1.50.168.192.in-addr.arpa. 86400 IN teste.teste.com.br. funciona o GENERATE normal.

    • Obrigado Alex. Que bom ter ajudado!

      Para usar o GENERATE você pode seguir o exemplo abaixo:

      Equivale:
      3 PTR ns3.teste.com.br.
      4 PTR ns4.teste.com.br.
      5 PTR ns5.teste.com.br.
      […]
      255 PTR ns255.teste.com.br.

      Pode ler mais sobre o assunto em: https://ftp.isc.org/isc/bind/9.9.5/doc/arm/Bv9ARM.ch06.html#id2599541

  63. Erick disse:

    Muto bom cara, já adicionei seu blog nos favoritos, ultimamente estou migrando do Unbound para o Bind por causa de um sevidor Samba DC AD, este tuto me ajudou bastante

  1. 30 de janeiro de 2017

    […] – Ter configurado DNS Autoritativo e Reverso sobre seus IPS. (Não necessariamente no mesmo servidor) 2 – Debian 8 Jessie recomendo uma instalação […]

  2. 20 de fevereiro de 2017

    […] Agora vem a parte legal!! Configurar nosso servidor para resolver nomes (Sevidor DNS) e nele configurar alguns domínios “fake” quais poderemos acessar. Vale lembrar que você não deve fazer isso em uma máquina com IP válido, caso fizer isso vai estar deixando consultas recursivas aberta para o mundo “escravizar-lo”, não vou entrar em detalhes das configurações avançadas do bind, o intuito aqui é ensinar pessoas a ter um cenário para programação web, em um ambiente local. Se deseja saber como configurar um servidor DNS acesse: Servidor DNS Recursivo, Autoritativo e Reverso com Bind9 (IPv4+IPv6). […]

  3. 24 de outubro de 2018

    […] No exemplo vou usar o domínio teste.remontti.com.br, então tenha o subdomínio teste configurado em seu DNS Server […]

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *