<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pt-BR">
	<id>https://wiki.brasilpeeringforum.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Fabio+Julian+Ortlieb</id>
	<title>Wiki BPF - Contribuições do(a) usuário(a) [pt-br]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.brasilpeeringforum.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Fabio+Julian+Ortlieb"/>
	<link rel="alternate" type="text/html" href="https://wiki.brasilpeeringforum.org/w/Especial:Contribui%C3%A7%C3%B5es/Fabio_Julian_Ortlieb"/>
	<updated>2026-04-23T01:23:07Z</updated>
	<subtitle>Contribuições do(a) usuário(a)</subtitle>
	<generator>MediaWiki 1.35.14</generator>
	<entry>
		<id>https://wiki.brasilpeeringforum.org/index.php?title=Tutorial_DNS_Hyperlocal&amp;diff=1068</id>
		<title>Tutorial DNS Hyperlocal</title>
		<link rel="alternate" type="text/html" href="https://wiki.brasilpeeringforum.org/index.php?title=Tutorial_DNS_Hyperlocal&amp;diff=1068"/>
		<updated>2019-08-22T15:10:21Z</updated>

		<summary type="html">&lt;p&gt;Fabio Julian Ortlieb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Introdução ===&lt;br /&gt;
A Zona Raiz do Sistema de Nomes de Domínios (DNS) é servida por 12 organizações que operam instâncias ''anycast'' de servidores de nomes autoritativos provendo respostas para a raiz do DNS. Estas instâncias estão distribuídas em mais de [https://root-servers.org/ 1000 localidades ao redor do mundo].  Apesar deste grande número de servidores e alta capacidade provisionada para a resolução da raiz de nomes, ainda existe a possibilidade de que um grande ataque coordenado de negação de serviço (DDoS) possa comprometer o acesso à internet para muitos usuários.&lt;br /&gt;
&lt;br /&gt;
Para minimizar e prevenir esta ameaça, existe a possibilidade de adicionar um fator de resiliência na configuração dos servidores recursivos do provedor de internet através do uso de uma cópia local da zona raiz, chamada de '''Hyperlocal'''. Hyperlocal é apresentado em detalhes na [[rfc:7706/|RFC7706]] e, resumidamente, consiste em executar uma cópia da zona raiz no mesmo servidor de serviços de resolução recursiva. Desta forma, as consultas à zona raiz dos clientes são respondidas localmente sem necessidade comunicação externa entre os servidores. Isso resulta em maior robustez do serviço em caso de ataques e ganhos na velocidade de provimento de respostas às consultas ao DNS dos usuários.&lt;br /&gt;
&lt;br /&gt;
Este tutorial foi criado para compartilhar a prática de implementação de um sistema Hyperlocal para a configuração de servidores de DNS do tipo BIND9. Outras configurações e softwares mencionados na  &amp;lt;nowiki&amp;gt;RFC 7706&amp;lt;/nowiki&amp;gt; não são abordados neste tutorial.&lt;br /&gt;
&lt;br /&gt;
=== Implementação - CentOS ===&lt;br /&gt;
Requisitos para instalação do Hyperlocal:&lt;br /&gt;
* Instalação básica CentOS Linux 7&lt;br /&gt;
* 1vCPU&lt;br /&gt;
* 1GB de RAM&lt;br /&gt;
* 20GB de Disco&lt;br /&gt;
Baixe o ISO do Sistema Operacional no link http://isoredirect.centos.org/centos/7/isos/x86_64/&lt;br /&gt;
&lt;br /&gt;
Sistema operacional instalado e atualizado, agora devemos instalar o Bind9 com o comando:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install bind bind-utils&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A configuração para o funcionamento da zona raiz é bem simples como podemos ver abaixo.&lt;br /&gt;
&lt;br /&gt;
Os arquivos de configuração do Bind no Centos7 por padrão estão no arquivo /etc/named.conf.&lt;br /&gt;
&lt;br /&gt;
No exemplo de configuração abaixo, o servidor Hyperlocal foi configurado com o IPv4 198.51.100.1 e IPv6 2001:db8::1 em sua interface de rede.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
view root {&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; IPs das interfaces onde chegarão as requisições para cópia loca da zona raiz&lt;br /&gt;
match-destinations { 198.51.100.1; 2001:db8::1; };&lt;br /&gt;
           zone &amp;quot;.&amp;quot; {&lt;br /&gt;
               type slave;&lt;br /&gt;
                   file &amp;quot;rootzone.db&amp;quot;;&lt;br /&gt;
                   notify no;&lt;br /&gt;
                   masters {&lt;br /&gt;
                           192.228.79.201; # b.root-servers.net&lt;br /&gt;
                           192.33.4.12;    # c.root-servers.net&lt;br /&gt;
                           192.5.5.241;    # f.root-servers.net&lt;br /&gt;
                           192.112.36.4;   # g.root-servers.net&lt;br /&gt;
                           193.0.14.129;   # k.root-servers.net&lt;br /&gt;
                           192.0.47.132;   # xfr.cjr.dns.icann.org&lt;br /&gt;
                           192.0.32.132;   # xfr.lax.dns.icann.org&lt;br /&gt;
                           2001:500:84::b; # b.root-servers.net&lt;br /&gt;
                           2001:500:2f::f; # f.root-servers.net&lt;br /&gt;
                           2001:7fd::1;    # k.root-servers.net&lt;br /&gt;
                           2620:0:2830:202::132; # xfr.cjr.dns.icann.org&lt;br /&gt;
                           2620:0:2d0:202::132;  # xfr.lax.dns.icann.org&lt;br /&gt;
                   };&lt;br /&gt;
           };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Obs: Os servidores utilizados devem permitir transferência de zona (axfr), como nem todos os root server permitem o axfr,  sendo assim deve ser verificada na versão atual da RFC no link a seguir &amp;lt;nowiki&amp;gt;https://tools.ietf.org/html/rfc7706&amp;lt;/nowiki&amp;gt; os root servers que estão preparados para a sincronização do Hyperlocal.&lt;br /&gt;
&lt;br /&gt;
O processo de atualização acontece uma vez ao dia, e ela requer que seja baixada toda a zona raiz que atualmente chega a ~1.5Mb.&lt;br /&gt;
&lt;br /&gt;
Iniciando o serviço do Bind você pode conferir a criação da base com o comando:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ls /var/named/rootzone.db&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Segue abaixo um exemplo de arquivo de configuração para o BIND já contendo as configurações de Hyperlocal e de recursividade .&lt;br /&gt;
&lt;br /&gt;
É possível melhorar de diversas formas esse exemplo de configuração.&lt;br /&gt;
&lt;br /&gt;
O configuração padrão do Bind com o adicional de views no exemplo seguinte já é bem funcional.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options {&lt;br /&gt;
       listen-on port 53 { any; };&lt;br /&gt;
       listen-on-v6 port 53 { any; };&lt;br /&gt;
       directory       &amp;quot;/var/named&amp;quot;;&lt;br /&gt;
       dump-file       &amp;quot;/var/named/data/cache_dump.db&amp;quot;;&lt;br /&gt;
       statistics-file &amp;quot;/var/named/data/named_stats.txt&amp;quot;;&lt;br /&gt;
       memstatistics-file &amp;quot;/var/named/data/named_mem_stats.txt&amp;quot;;&lt;br /&gt;
       recursing-file  &amp;quot;/var/named/data/named.recursing&amp;quot;;&lt;br /&gt;
       secroots-file   &amp;quot;/var/named/data/named.secroots&amp;quot;;&lt;br /&gt;
       dnssec-enable yes;&lt;br /&gt;
       dnssec-validation yes;&lt;br /&gt;
       /* Path to ISC DLV key */&lt;br /&gt;
       bindkeys-file &amp;quot;/etc/named.iscdlv.key&amp;quot;;&lt;br /&gt;
       managed-keys-directory &amp;quot;/var/named/dynamic&amp;quot;;&lt;br /&gt;
       pid-file &amp;quot;/run/named/named.pid&amp;quot;;&lt;br /&gt;
       session-keyfile &amp;quot;/run/named/session.key&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
       channel default_debug {&lt;br /&gt;
               file &amp;quot;data/named.run&amp;quot;;&lt;br /&gt;
               severity dynamic;&lt;br /&gt;
       };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
acl &amp;quot;MinhaRede_v4&amp;quot; {&lt;br /&gt;
       127.0.0.0/8;&lt;br /&gt;
       198.51.100.0/24;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl &amp;quot;MinhaRede_v6&amp;quot; {&lt;br /&gt;
       ::1;&lt;br /&gt;
       2001:db8::/32;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl &amp;quot;ServidorRecursivo_A&amp;quot; {&lt;br /&gt;
       203.0.113.10;&lt;br /&gt;
       2001:db8::10;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl &amp;quot;ServidorRecursivo_B&amp;quot; {&lt;br /&gt;
       203.0.113.20;&lt;br /&gt;
       2001:db8::20;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
view root {&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; Como exemplo, especificamos abaixo os dois servidores recursivos autorizados a fazer consulta na copia local de zona Raiz &lt;br /&gt;
       match-clients { 127.0.0.1; ServidorRecursivo_A; ServidorRecursivo_B; } ;&lt;br /&gt;
       zone &amp;quot;.&amp;quot; {&lt;br /&gt;
               type slave;&lt;br /&gt;
               file &amp;quot;rootzone.db&amp;quot;;&lt;br /&gt;
               notify no;&lt;br /&gt;
               masters {&lt;br /&gt;
                           192.228.79.201; # b.root-servers.net&lt;br /&gt;
                           192.33.4.12;    # c.root-servers.net&lt;br /&gt;
                           192.5.5.241;    # f.root-servers.net&lt;br /&gt;
                           192.112.36.4;   # g.root-servers.net&lt;br /&gt;
                           193.0.14.129;   # k.root-servers.net&lt;br /&gt;
                           192.0.47.132;   # xfr.cjr.dns.icann.org&lt;br /&gt;
                           192.0.32.132;   # xfr.lax.dns.icann.org&lt;br /&gt;
                           2001:500:84::b; # b.root-servers.net&lt;br /&gt;
                           2001:500:2f::f; # f.root-servers.net&lt;br /&gt;
                           2001:7fd::1;    # k.root-servers.net&lt;br /&gt;
                           2620:0:2830:202::132; # xfr.cjr.dns.icann.org&lt;br /&gt;
                           2620:0:2d0:202::132;  # xfr.lax.dns.icann.org&lt;br /&gt;
                   };&lt;br /&gt;
       };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
view &amp;quot;externa&amp;quot; {&lt;br /&gt;
     match-clients { any; };&lt;br /&gt;
     recursion no;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
view clientes-recursivos {&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; Esta é a view que permite que clientes façam consultas recursivas a este servidor &lt;br /&gt;
       dnssec-validation auto;&lt;br /&gt;
       allow-recursion { MinhaRede_v4; MinhaRede_v6; };&lt;br /&gt;
       recursion yes;&lt;br /&gt;
       &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; Esta é parte aonde instruímos o Bind sobre os servidores a serem utilizados para consulta de zona Raiz.&lt;br /&gt;
       zone &amp;quot;.&amp;quot; {&lt;br /&gt;
               type static-stub;&lt;br /&gt;
               server-addresses { 127.0.0.1; ::1; };&lt;br /&gt;
               &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; Aqui definimos o IP do servidor Hyperlocal aonde serão feitas as consultas recursivas da zona Raiz.&lt;br /&gt;
               &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; Como neste exemplo o Hyperlocal roda neste mesmo servidor, especificamos o endereço de loopback.&lt;br /&gt;
 &lt;br /&gt;
       };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Com essa configuração é possível já sentir os benefícios do Hyperlocal em sua rede, no exemplo acima, configuramos o Hyperlocal e o servidor recursivo na mesma instancia do Bind, para usuários do Unbound é possível fazer a consulta em uma instância Hyperlocal Bind com um pequeno ajuste na configuração, adicione ao final do arquivo de configuração do &amp;quot;unbound.conf&amp;quot; o seguinte trecho para que ele consulte o Hyperlocal:&lt;br /&gt;
 stub-zone:&lt;br /&gt;
        name: &amp;quot;.&amp;quot;&lt;br /&gt;
        stub-prime: no&lt;br /&gt;
        stub-addr: 198.51.100.1&lt;br /&gt;
        stub-addr: 2001:db8::1&lt;br /&gt;
&lt;br /&gt;
=== Conclusão ===&lt;br /&gt;
Em testes o desempenho ficou muito bom. Abaixo algumas comparações consultando domínios inválidos para forçar o recursivo a procurar nos Root Servers.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Teste 1 servidor público Google&lt;br /&gt;
dig @8.8.8.8 domaininvalid.com.br.xxxxxxx&lt;br /&gt;
&amp;lt;nowiki&amp;gt;;;&amp;lt;/nowiki&amp;gt; Query time&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 29 msec&lt;br /&gt;
&lt;br /&gt;
// Teste 2 servidor publico Google&lt;br /&gt;
dig @8.8.8.8 domaininvalid.com.br.xxxxxxx&lt;br /&gt;
&amp;lt;nowiki&amp;gt;;;&amp;lt;/nowiki&amp;gt; Query time&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 27 msec&lt;br /&gt;
&lt;br /&gt;
// Teste 1 no Unbound recursivo sem o Hyperlocal&lt;br /&gt;
dig @172.16.1.1 domaininvalid.com.br.xxxxxxx&lt;br /&gt;
&amp;lt;nowiki&amp;gt;;;&amp;lt;/nowiki&amp;gt; Query time&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 21 msec&lt;br /&gt;
&lt;br /&gt;
// Teste 2 (cached) no Unbound recursivo sem o hyperlocal&lt;br /&gt;
dig @172.16.1.1 domaininvalid.com.br.xxxxxxx&lt;br /&gt;
&amp;lt;nowiki&amp;gt;;;&amp;lt;/nowiki&amp;gt; Query time&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 0 msec&lt;br /&gt;
&lt;br /&gt;
// Teste 1 direto no Hyperlocal&lt;br /&gt;
dig @192.168.0.1 domaininvalid.com.br.xxxxxxx&lt;br /&gt;
&amp;lt;nowiki&amp;gt;;;&amp;lt;/nowiki&amp;gt; Query time&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 0 msec&lt;br /&gt;
&lt;br /&gt;
// Teste 2 (cached) direto no Hyperlocal&lt;br /&gt;
dig @192.168.0.1 domaininvalid.com.br.xxxxxxx&lt;br /&gt;
&amp;lt;nowiki&amp;gt;;;&amp;lt;/nowiki&amp;gt; Query time&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 0 msec &lt;br /&gt;
&lt;br /&gt;
// Teste 1 no Unbound recursivo apontando para o Hyperlocal&lt;br /&gt;
dig @172.16.1.1 domaininvalid.com.br.xxxxxxx&lt;br /&gt;
&amp;lt;nowiki&amp;gt;;;&amp;lt;/nowiki&amp;gt; Query time&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 2 msec&lt;br /&gt;
&lt;br /&gt;
// Teste 2 (cached) no Unbound recursivo apontando para o Hyperlocal&lt;br /&gt;
dig @172.16.1.1 domaininvalid.com.br.xxxxxxx&lt;br /&gt;
&amp;lt;nowiki&amp;gt;;;&amp;lt;/nowiki&amp;gt; Query time&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 0 msec&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
É possível portanto visualizar o melhor desempenho quando feitas consultas utilizando o Hyperlocal, sendo essa uma ótima implementação para manter no provedor.&lt;br /&gt;
&lt;br /&gt;
É importante lembrar que em '''caso haver somente um Hyperlocal''' na rede, o recomendado é '''deixar somente o servidor primário''' apontando para o mesmo afim de '''evitar ponto único de falha''', ou fazer dupla implementação um para cada servidor recursivo.&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Infraestrutura]]&lt;br /&gt;
[[Categoria:DNS]]&lt;/div&gt;</summary>
		<author><name>Fabio Julian Ortlieb</name></author>
	</entry>
	<entry>
		<id>https://wiki.brasilpeeringforum.org/index.php?title=Tutorial_DNS_Hyperlocal&amp;diff=1064</id>
		<title>Tutorial DNS Hyperlocal</title>
		<link rel="alternate" type="text/html" href="https://wiki.brasilpeeringforum.org/index.php?title=Tutorial_DNS_Hyperlocal&amp;diff=1064"/>
		<updated>2019-08-21T19:57:26Z</updated>

		<summary type="html">&lt;p&gt;Fabio Julian Ortlieb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Introdução ===&lt;br /&gt;
A Zona Raiz do Sistema de Nomes de Domínios (DNS) é servida por 12 organizações que operam instâncias ''anycast'' de servidores de nomes autoritativos provendo respostas para a raiz do DNS. Estas instâncias estão distribuídas em mais de [https://root-servers.org/ 1000 localidades ao redor do mundo].  Apesar deste grande número de servidores e alta capacidade provisionada para a resolução da raiz de nomes, ainda existe a possibilidade de que um grande ataque coordenado de negação de serviço (DDoS) possa comprometer o acesso à internet para muitos usuários.&lt;br /&gt;
&lt;br /&gt;
Para minimizar e prevenir esta ameaça, existe a possibilidade de adicionar um fator de resiliência na configuração dos servidores recursivos do provedor de internet através do uso de uma cópia local da zona raiz, chamada de '''Hyperlocal'''. Hyperlocal é apresentado em detalhes na [[rfc:7706/|RFC7706]] e, resumidamente, consiste em executar uma cópia da zona raiz no mesmo servidor de serviços de resolução recursiva. Desta forma, as consultas à zona raiz dos clientes são respondidas localmente sem necessidade comunicação externa entre os servidores. Isso resulta em maior robustez do serviço em caso de ataques e ganhos na velocidade de provimento de respostas às consultas ao DNS dos usuários.&lt;br /&gt;
&lt;br /&gt;
Este tutorial foi criado para compartilhar a prática de implementação de um sistema Hyperlocal para a configuração de servidores de DNS do tipo BIND9. Outras configurações e softwares mencionados na  &amp;lt;nowiki&amp;gt;RFC 7706&amp;lt;/nowiki&amp;gt; não são abordados neste tutorial.&lt;br /&gt;
&lt;br /&gt;
=== Implementação - CentOS ===&lt;br /&gt;
Requisitos para instalação do Hyperlocal:&lt;br /&gt;
* Instalação básica CentOS Linux 7&lt;br /&gt;
* 1vCPU&lt;br /&gt;
* 1GB de RAM&lt;br /&gt;
* 20GB de Disco&lt;br /&gt;
Baixe o ISO do Sistema Operacional no link http://isoredirect.centos.org/centos/7/isos/x86_64/&lt;br /&gt;
&lt;br /&gt;
Sistema operacional instalado e atualizado, agora devemos instalar o Bind9 com o comando:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install bind bind-utils&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A configuração para o funcionamento da zona raiz é bem simples como podemos ver abaixo.&lt;br /&gt;
&lt;br /&gt;
Os arquivos de configuração do Bind no Centos7 por padrão estão no arquivo /etc/named.conf.&lt;br /&gt;
&lt;br /&gt;
No exemplo de configuração abaixo, o servidor Hyperlocal foi configurado com o IPv4 198.51.100.1 e IPv6 2001:db8::1 em sua interface de rede.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
view root {&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; IPs das interfaces onde chegarão as requisições para cópia loca da zona raiz&lt;br /&gt;
match-destinations { 198.51.100.1; 2001:db8::1; };&lt;br /&gt;
           zone &amp;quot;.&amp;quot; {&lt;br /&gt;
               type slave;&lt;br /&gt;
                   file &amp;quot;rootzone.db&amp;quot;;&lt;br /&gt;
                   notify no;&lt;br /&gt;
                   masters {&lt;br /&gt;
                           192.228.79.201; # b.root-servers.net&lt;br /&gt;
                           192.33.4.12;    # c.root-servers.net&lt;br /&gt;
                           192.5.5.241;    # f.root-servers.net&lt;br /&gt;
                           192.112.36.4;   # g.root-servers.net&lt;br /&gt;
                           193.0.14.129;   # k.root-servers.net&lt;br /&gt;
                           192.0.47.132;   # xfr.cjr.dns.icann.org&lt;br /&gt;
                           192.0.32.132;   # xfr.lax.dns.icann.org&lt;br /&gt;
                           2001:500:84::b; # b.root-servers.net&lt;br /&gt;
                           2001:500:2f::f; # f.root-servers.net&lt;br /&gt;
                           2001:7fd::1;    # k.root-servers.net&lt;br /&gt;
                           2620:0:2830:202::132; # xfr.cjr.dns.icann.org&lt;br /&gt;
                           2620:0:2d0:202::132;  # xfr.lax.dns.icann.org&lt;br /&gt;
                   };&lt;br /&gt;
           };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Obs.: Os servidores utilizados como sendo as atuais fonte de replicação da zona raiz neste exemplo são os que estavam especificados na &amp;lt;nowiki&amp;gt;https://tools.ietf.org/html/rfc7706&amp;lt;/nowiki&amp;gt;, na data da publicação deste artigo.&lt;br /&gt;
&lt;br /&gt;
Iniciando o serviço do Bind você pode conferir a criação da base com o comando:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ls /var/named/rootzone.db&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Segue abaixo um exemplo de arquivo de configuração para o BIND já contendo as configurações de Hyperlocal e de recursividade .&lt;br /&gt;
&lt;br /&gt;
É possível melhorar de diversas formas esse exemplo de configuração.&lt;br /&gt;
&lt;br /&gt;
O configuração padrão do Bind com o adicional de views no exemplo seguinte já é bem funcional.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options {&lt;br /&gt;
       listen-on port 53 { any; };&lt;br /&gt;
       listen-on-v6 port 53 { any; };&lt;br /&gt;
       directory       &amp;quot;/var/named&amp;quot;;&lt;br /&gt;
       dump-file       &amp;quot;/var/named/data/cache_dump.db&amp;quot;;&lt;br /&gt;
       statistics-file &amp;quot;/var/named/data/named_stats.txt&amp;quot;;&lt;br /&gt;
       memstatistics-file &amp;quot;/var/named/data/named_mem_stats.txt&amp;quot;;&lt;br /&gt;
       recursing-file  &amp;quot;/var/named/data/named.recursing&amp;quot;;&lt;br /&gt;
       secroots-file   &amp;quot;/var/named/data/named.secroots&amp;quot;;&lt;br /&gt;
       dnssec-enable yes;&lt;br /&gt;
       dnssec-validation yes;&lt;br /&gt;
       /* Path to ISC DLV key */&lt;br /&gt;
       bindkeys-file &amp;quot;/etc/named.iscdlv.key&amp;quot;;&lt;br /&gt;
       managed-keys-directory &amp;quot;/var/named/dynamic&amp;quot;;&lt;br /&gt;
       pid-file &amp;quot;/run/named/named.pid&amp;quot;;&lt;br /&gt;
       session-keyfile &amp;quot;/run/named/session.key&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
       channel default_debug {&lt;br /&gt;
               file &amp;quot;data/named.run&amp;quot;;&lt;br /&gt;
               severity dynamic;&lt;br /&gt;
       };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
acl &amp;quot;MinhaRede_v4&amp;quot; {&lt;br /&gt;
       127.0.0.0/8;&lt;br /&gt;
       198.51.100.0/24;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl &amp;quot;MinhaRede_v6&amp;quot; {&lt;br /&gt;
       ::1;&lt;br /&gt;
       2001:db8::/32;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl &amp;quot;ServidorRecursivo_A&amp;quot; {&lt;br /&gt;
       203.0.113.10;&lt;br /&gt;
       2001:db8::10;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl &amp;quot;ServidorRecursivo_B&amp;quot; {&lt;br /&gt;
       203.0.113.20;&lt;br /&gt;
       2001:db8::20;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
view root {&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; Como exemplo, especificamos abaixo os dois servidores recursivos autorizados a fazer consulta na copia local de zona Raiz &lt;br /&gt;
       match-clients { 127.0.0.1; ServidorRecursivo_A; ServidorRecursivo_B; } ;&lt;br /&gt;
       zone &amp;quot;.&amp;quot; {&lt;br /&gt;
               type slave;&lt;br /&gt;
               file &amp;quot;rootzone.db&amp;quot;;&lt;br /&gt;
               notify no;&lt;br /&gt;
               masters {&lt;br /&gt;
                           192.228.79.201; # b.root-servers.net&lt;br /&gt;
                           192.33.4.12;    # c.root-servers.net&lt;br /&gt;
                           192.5.5.241;    # f.root-servers.net&lt;br /&gt;
                           192.112.36.4;   # g.root-servers.net&lt;br /&gt;
                           193.0.14.129;   # k.root-servers.net&lt;br /&gt;
                           192.0.47.132;   # xfr.cjr.dns.icann.org&lt;br /&gt;
                           192.0.32.132;   # xfr.lax.dns.icann.org&lt;br /&gt;
                           2001:500:84::b; # b.root-servers.net&lt;br /&gt;
                           2001:500:2f::f; # f.root-servers.net&lt;br /&gt;
                           2001:7fd::1;    # k.root-servers.net&lt;br /&gt;
                           2620:0:2830:202::132; # xfr.cjr.dns.icann.org&lt;br /&gt;
                           2620:0:2d0:202::132;  # xfr.lax.dns.icann.org&lt;br /&gt;
                   };&lt;br /&gt;
       };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
view &amp;quot;externa&amp;quot; {&lt;br /&gt;
     match-clients { any; };&lt;br /&gt;
     recursion no;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
view clientes-recursivos {&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; Esta é a view que permite que clientes façam consultas recursivas a este servidor &lt;br /&gt;
       dnssec-validation auto;&lt;br /&gt;
       allow-recursion { MinhaRede_v4; MinhaRede_v6; };&lt;br /&gt;
       recursion yes;&lt;br /&gt;
       &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; Esta é parte aonde instruímos o Bind sobre os servidores serem utilizado para consulta de zona Raiz.&lt;br /&gt;
       zone &amp;quot;.&amp;quot; {&lt;br /&gt;
               type static-stub;&lt;br /&gt;
               server-addresses { 127.0.0.1; ::1; };&lt;br /&gt;
               &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; Aqui definimos o IP do servidor Hyperlocal aonde serão feitas as consultas recursivas da zona Raiz.&lt;br /&gt;
               &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; Como neste exemplo o Hyperlocal roda neste mesmo servidor, especificamos o endereço de loopback.&lt;br /&gt;
 &lt;br /&gt;
       };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Com essa configuração é possível já sentir os benefícios do Hyperlocal em sua rede, no exemplo acima, configuramos o Hyperlocal e o servidor recursivo na mesma instancia do Bind, para usuários do Unbound é possível fazer a consulta em um Hyperlocal Bind com um pequeno ajuste na configuração, adicione ao final do arquivo de configuração do &amp;quot;unbound.conf&amp;quot; o seguinte trecho para que ele consulte o Hyperlocal:&lt;br /&gt;
 stub-zone:&lt;br /&gt;
        name: &amp;quot;.&amp;quot;&lt;br /&gt;
        stub-prime: no&lt;br /&gt;
        stub-addr: 198.51.100.1&lt;br /&gt;
        stub-addr: 2001:db8::1&lt;br /&gt;
&lt;br /&gt;
=== Conclusão ===&lt;br /&gt;
Em testes o desempenho ficou muito bom. Abaixo algumas comparações consultando domínios inválidos para forçar o recursivo a procurar nos Root Servers.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Teste 1 servidor público Google&lt;br /&gt;
dig @8.8.8.8 domaininvalid.com.br.xxxxxxx&lt;br /&gt;
&amp;lt;nowiki&amp;gt;;;&amp;lt;/nowiki&amp;gt; Query time&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 29 msec&lt;br /&gt;
&lt;br /&gt;
// Teste 2 servidor publico Google&lt;br /&gt;
dig @8.8.8.8 domaininvalid.com.br.xxxxxxx&lt;br /&gt;
&amp;lt;nowiki&amp;gt;;;&amp;lt;/nowiki&amp;gt; Query time&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 27 msec&lt;br /&gt;
&lt;br /&gt;
// Teste 1 no Unbound recursivo sem o Hyperlocal&lt;br /&gt;
dig @172.16.1.1 domaininvalid.com.br.xxxxxxx&lt;br /&gt;
&amp;lt;nowiki&amp;gt;;;&amp;lt;/nowiki&amp;gt; Query time&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 21 msec&lt;br /&gt;
&lt;br /&gt;
// Teste 2 (cached) no Unbound recursivo sem o hyperlocal&lt;br /&gt;
dig @172.16.1.1 domaininvalid.com.br.xxxxxxx&lt;br /&gt;
&amp;lt;nowiki&amp;gt;;;&amp;lt;/nowiki&amp;gt; Query time&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 0 msec&lt;br /&gt;
&lt;br /&gt;
// Teste 1 direto no Hyperlocal&lt;br /&gt;
dig @192.168.0.1 domaininvalid.com.br.xxxxxxx&lt;br /&gt;
&amp;lt;nowiki&amp;gt;;;&amp;lt;/nowiki&amp;gt; Query time&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 0 msec&lt;br /&gt;
&lt;br /&gt;
// Teste 2 (cached) direto no Hyperlocal&lt;br /&gt;
dig @192.168.0.1 domaininvalid.com.br.xxxxxxx&lt;br /&gt;
&amp;lt;nowiki&amp;gt;;;&amp;lt;/nowiki&amp;gt; Query time&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 0 msec &lt;br /&gt;
&lt;br /&gt;
// Teste 1 no Unbound recursivo apontando para o Hyperlocal&lt;br /&gt;
dig @172.16.1.1 domaininvalid.com.br.xxxxxxx&lt;br /&gt;
&amp;lt;nowiki&amp;gt;;;&amp;lt;/nowiki&amp;gt; Query time&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 2 msec&lt;br /&gt;
&lt;br /&gt;
// Teste 2 (cached) no Unbound recursivo apontando para o Hyperlocal&lt;br /&gt;
dig @172.16.1.1 domaininvalid.com.br.xxxxxxx&lt;br /&gt;
&amp;lt;nowiki&amp;gt;;;&amp;lt;/nowiki&amp;gt; Query time&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 0 msec&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
É possível portanto visualizar o melhor desempenho quando feitas consultas utilizando o Hyperlocal, sendo essa uma ótima implementação para manter no provedor.&lt;br /&gt;
&lt;br /&gt;
É importante lembrar que em caso haver somente um Hyperlocal na rede, o recomendado é deixar somente o servidor primário apontando para o mesmo afim de evitar ponto único de falha, ou fazer dupla implementação um para cada servidor recursivo.&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Infraestrutura]]&lt;br /&gt;
[[Categoria:DNS]]&lt;/div&gt;</summary>
		<author><name>Fabio Julian Ortlieb</name></author>
	</entry>
	<entry>
		<id>https://wiki.brasilpeeringforum.org/index.php?title=Tutorial_DNS_Hyperlocal&amp;diff=1063</id>
		<title>Tutorial DNS Hyperlocal</title>
		<link rel="alternate" type="text/html" href="https://wiki.brasilpeeringforum.org/index.php?title=Tutorial_DNS_Hyperlocal&amp;diff=1063"/>
		<updated>2019-08-21T19:50:32Z</updated>

		<summary type="html">&lt;p&gt;Fabio Julian Ortlieb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Introdução ===&lt;br /&gt;
A Zona Raiz do Sistema de Nomes de Domínios (DNS) é servida por 12 organizações que operam instâncias ''anycast'' de servidores de nomes autoritativos provendo respostas para a raiz do DNS. Estas instâncias estão distribuídas em mais de [https://root-servers.org/ 1000 localidades ao redor do mundo].  Apesar deste grande número de servidores e alta capacidade provisionada para a resolução da raiz de nomes, ainda existe a possibilidade de que um grande ataque coordenado de negação de serviço (DDoS) possa comprometer o acesso à internet para muitos usuários.&lt;br /&gt;
&lt;br /&gt;
Para minimizar e prevenir esta ameaça, existe a possibilidade de adicionar um fator de resiliência na configuração dos servidores recursivos do provedor de internet através do uso de uma cópia local da zona raiz, chamada de '''Hyperlocal'''. Hyperlocal é apresentado em detalhes na [[rfc:7706/|RFC7706]] e, resumidamente, consiste em executar uma cópia da zona raiz no mesmo servidor de serviços de resolução recursiva. Desta forma, as consultas à zona raiz dos clientes são respondidas localmente sem necessidade comunicação externa entre os servidores. Isso resulta em maior robustez do serviço em caso de ataques e ganhos na velocidade de provimento de respostas às consultas ao DNS dos usuários.&lt;br /&gt;
&lt;br /&gt;
Este tutorial foi criado para compartilhar a prática de implementação de um sistema Hyperlocal para a configuração de servidores de DNS do tipo BIND9. Outras configurações e softwares mencionados na  &amp;lt;nowiki&amp;gt;RFC 7706&amp;lt;/nowiki&amp;gt; não são abordados neste tutorial.&lt;br /&gt;
&lt;br /&gt;
=== Implementação - CentOS ===&lt;br /&gt;
Requisitos para instalação do Hyperlocal:&lt;br /&gt;
* Instalação básica CentOS Linux 7&lt;br /&gt;
* 1vCPU&lt;br /&gt;
* 1GB de RAM&lt;br /&gt;
* 20GB de Disco&lt;br /&gt;
Baixe o ISO do Sistema Operacional no link http://isoredirect.centos.org/centos/7/isos/x86_64/&lt;br /&gt;
&lt;br /&gt;
Sistema operacional instalado e atualizado, agora devemos instalar o Bind9 com o comando:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install bind bind-utils&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A configuração para o funcionamento da zona raiz é bem simples como podemos ver abaixo.&lt;br /&gt;
&lt;br /&gt;
Os arquivos de configuração do Bind no Centos7 por padrão estão no arquivo /etc/named.conf.&lt;br /&gt;
&lt;br /&gt;
No exemplo de configuração abaixo, o servidor Hyperlocal foi configurado com o IPv4 198.51.100.1 e IPv6 2001:db8::1 em sua interface de rede.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
view root {&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; IPs das interfaces onde chegarão as requisições para cópia loca da zona raiz&lt;br /&gt;
match-destinations { 198.51.100.1; 2001:db8::1; };&lt;br /&gt;
           zone &amp;quot;.&amp;quot; {&lt;br /&gt;
               type slave;&lt;br /&gt;
                   file &amp;quot;rootzone.db&amp;quot;;&lt;br /&gt;
                   notify no;&lt;br /&gt;
                   masters {&lt;br /&gt;
                           192.228.79.201; # b.root-servers.net&lt;br /&gt;
                           192.33.4.12;    # c.root-servers.net&lt;br /&gt;
                           192.5.5.241;    # f.root-servers.net&lt;br /&gt;
                           192.112.36.4;   # g.root-servers.net&lt;br /&gt;
                           193.0.14.129;   # k.root-servers.net&lt;br /&gt;
                           192.0.47.132;   # xfr.cjr.dns.icann.org&lt;br /&gt;
                           192.0.32.132;   # xfr.lax.dns.icann.org&lt;br /&gt;
                           2001:500:84::b; # b.root-servers.net&lt;br /&gt;
                           2001:500:2f::f; # f.root-servers.net&lt;br /&gt;
                           2001:7fd::1;    # k.root-servers.net&lt;br /&gt;
                           2620:0:2830:202::132; # xfr.cjr.dns.icann.org&lt;br /&gt;
                           2620:0:2d0:202::132;  # xfr.lax.dns.icann.org&lt;br /&gt;
                   };&lt;br /&gt;
           };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Obs.: Os servidores utilizados como sendo as atuais fonte de replicação da zona raiz neste exemplo são os que estavam especificados na &amp;lt;nowiki&amp;gt;https://tools.ietf.org/html/rfc7706&amp;lt;/nowiki&amp;gt;, na data da publicação deste artigo.&lt;br /&gt;
&lt;br /&gt;
Iniciando o serviço do Bind você pode conferir a criação da base com o comando:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ls /var/named/rootzone.db&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Segue abaixo um exemplo de arquivo de configuração para o BIND já contendo as configurações de Hyperlocal e de recursividade .&lt;br /&gt;
&lt;br /&gt;
É possível melhorar de diversas formas esse exemplo de configuração.&lt;br /&gt;
&lt;br /&gt;
O configuração padrão do Bind com o adicional de views no exemplo seguinte já é bem funcional.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options {&lt;br /&gt;
       listen-on port 53 { any; };&lt;br /&gt;
       listen-on-v6 port 53 { any; };&lt;br /&gt;
       directory       &amp;quot;/var/named&amp;quot;;&lt;br /&gt;
       dump-file       &amp;quot;/var/named/data/cache_dump.db&amp;quot;;&lt;br /&gt;
       statistics-file &amp;quot;/var/named/data/named_stats.txt&amp;quot;;&lt;br /&gt;
       memstatistics-file &amp;quot;/var/named/data/named_mem_stats.txt&amp;quot;;&lt;br /&gt;
       recursing-file  &amp;quot;/var/named/data/named.recursing&amp;quot;;&lt;br /&gt;
       secroots-file   &amp;quot;/var/named/data/named.secroots&amp;quot;;&lt;br /&gt;
       dnssec-enable yes;&lt;br /&gt;
       dnssec-validation yes;&lt;br /&gt;
       /* Path to ISC DLV key */&lt;br /&gt;
       bindkeys-file &amp;quot;/etc/named.iscdlv.key&amp;quot;;&lt;br /&gt;
       managed-keys-directory &amp;quot;/var/named/dynamic&amp;quot;;&lt;br /&gt;
       pid-file &amp;quot;/run/named/named.pid&amp;quot;;&lt;br /&gt;
       session-keyfile &amp;quot;/run/named/session.key&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
       channel default_debug {&lt;br /&gt;
               file &amp;quot;data/named.run&amp;quot;;&lt;br /&gt;
               severity dynamic;&lt;br /&gt;
       };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
acl &amp;quot;MinhaRede_v4&amp;quot; {&lt;br /&gt;
       127.0.0.0/8;&lt;br /&gt;
       198.51.100.0/24;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl &amp;quot;MinhaRede_v6&amp;quot; {&lt;br /&gt;
       ::1;&lt;br /&gt;
       2001:db8::/32;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl &amp;quot;ServidorRecursivo_A&amp;quot; {&lt;br /&gt;
       203.0.113.10;&lt;br /&gt;
       2001:db8::10;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl &amp;quot;ServidorRecursivo_B&amp;quot; {&lt;br /&gt;
       203.0.113.20;&lt;br /&gt;
       2001:db8::20;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
view root {&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; Como exemplo, especificamos abaixo os dois servidores recursivos autorizados a fazer consulta na copia local de zona Raiz &lt;br /&gt;
       match-clients { 127.0.0.1; ServidorRecursivo_A; ServidorRecursivo_B; } ;&lt;br /&gt;
       zone &amp;quot;.&amp;quot; {&lt;br /&gt;
               type slave;&lt;br /&gt;
               file &amp;quot;rootzone.db&amp;quot;;&lt;br /&gt;
               notify no;&lt;br /&gt;
               masters {&lt;br /&gt;
                           192.228.79.201; # b.root-servers.net&lt;br /&gt;
                           192.33.4.12;    # c.root-servers.net&lt;br /&gt;
                           192.5.5.241;    # f.root-servers.net&lt;br /&gt;
                           192.112.36.4;   # g.root-servers.net&lt;br /&gt;
                           193.0.14.129;   # k.root-servers.net&lt;br /&gt;
                           192.0.47.132;   # xfr.cjr.dns.icann.org&lt;br /&gt;
                           192.0.32.132;   # xfr.lax.dns.icann.org&lt;br /&gt;
                           2001:500:84::b; # b.root-servers.net&lt;br /&gt;
                           2001:500:2f::f; # f.root-servers.net&lt;br /&gt;
                           2001:7fd::1;    # k.root-servers.net&lt;br /&gt;
                           2620:0:2830:202::132; # xfr.cjr.dns.icann.org&lt;br /&gt;
                           2620:0:2d0:202::132;  # xfr.lax.dns.icann.org&lt;br /&gt;
                   };&lt;br /&gt;
       };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
view &amp;quot;externa&amp;quot; {&lt;br /&gt;
     match-clients { any; };&lt;br /&gt;
     recursion no;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
view clientes-recursivos {&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; Esta é a view que permite que clientes façam consultas recursivas a este servidor &lt;br /&gt;
       dnssec-validation auto;&lt;br /&gt;
       allow-recursion { MinhaRede_v4; MinhaRede_v6; };&lt;br /&gt;
       recursion yes;&lt;br /&gt;
       &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; Esta é parte aonde instruímos o Bind sobre os servidores serem utilizado para consulta de zona Raiz.&lt;br /&gt;
       zone &amp;quot;.&amp;quot; {&lt;br /&gt;
               type static-stub;&lt;br /&gt;
               server-addresses { 127.0.0.1; ::1; };&lt;br /&gt;
               &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; Aqui definimos o IP do servidor Hyperlocal aonde serão feitas as consultas recursivas da zona Raiz.&lt;br /&gt;
               &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; Como neste exemplo o Hyperlocal roda neste mesmo servidor, especificamos o endereço de loopback.&lt;br /&gt;
 &lt;br /&gt;
       };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Com essa configuração é possível já sentir os benefícios do Hyperlocal em sua rede, no exemplo acima, os endereços 172.16.1.1 e 172.16.1.2 são servidores recursivos externos rodando Unbound, para completar a configuração adicione ao Unbound a seguinte configuração para que ele consulte o Hyperlocal:&lt;br /&gt;
 stub-zone:&lt;br /&gt;
        name: &amp;quot;.&amp;quot;&lt;br /&gt;
        stub-prime: no&lt;br /&gt;
        stub-addr: 198.51.100.1&lt;br /&gt;
        stub-addr: 2001:db8::1&lt;br /&gt;
&lt;br /&gt;
=== Conclusão ===&lt;br /&gt;
Em testes o desempenho ficou muito bom. Abaixo algumas comparações consultando domínios inválidos para forçar o recursivo a procurar nos Root Servers.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Teste 1 servidor público Google&lt;br /&gt;
dig @8.8.8.8 domaininvalid.com.br.xxxxxxx&lt;br /&gt;
&amp;lt;nowiki&amp;gt;;;&amp;lt;/nowiki&amp;gt; Query time&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 29 msec&lt;br /&gt;
&lt;br /&gt;
// Teste 2 servidor publico Google&lt;br /&gt;
dig @8.8.8.8 domaininvalid.com.br.xxxxxxx&lt;br /&gt;
&amp;lt;nowiki&amp;gt;;;&amp;lt;/nowiki&amp;gt; Query time&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 27 msec&lt;br /&gt;
&lt;br /&gt;
// Teste 1 no Unbound recursivo sem o Hyperlocal&lt;br /&gt;
dig @172.16.1.1 domaininvalid.com.br.xxxxxxx&lt;br /&gt;
&amp;lt;nowiki&amp;gt;;;&amp;lt;/nowiki&amp;gt; Query time&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 21 msec&lt;br /&gt;
&lt;br /&gt;
// Teste 2 (cached) no Unbound recursivo sem o hyperlocal&lt;br /&gt;
dig @172.16.1.1 domaininvalid.com.br.xxxxxxx&lt;br /&gt;
&amp;lt;nowiki&amp;gt;;;&amp;lt;/nowiki&amp;gt; Query time&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 0 msec&lt;br /&gt;
&lt;br /&gt;
// Teste 1 direto no Hyperlocal&lt;br /&gt;
dig @192.168.0.1 domaininvalid.com.br.xxxxxxx&lt;br /&gt;
&amp;lt;nowiki&amp;gt;;;&amp;lt;/nowiki&amp;gt; Query time&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 0 msec&lt;br /&gt;
&lt;br /&gt;
// Teste 2 (cached) direto no Hyperlocal&lt;br /&gt;
dig @192.168.0.1 domaininvalid.com.br.xxxxxxx&lt;br /&gt;
&amp;lt;nowiki&amp;gt;;;&amp;lt;/nowiki&amp;gt; Query time&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 0 msec &lt;br /&gt;
&lt;br /&gt;
// Teste 1 no Unbound recursivo apontando para o Hyperlocal&lt;br /&gt;
dig @172.16.1.1 domaininvalid.com.br.xxxxxxx&lt;br /&gt;
&amp;lt;nowiki&amp;gt;;;&amp;lt;/nowiki&amp;gt; Query time&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 2 msec&lt;br /&gt;
&lt;br /&gt;
// Teste 2 (cached) no Unbound recursivo apontando para o Hyperlocal&lt;br /&gt;
dig @172.16.1.1 domaininvalid.com.br.xxxxxxx&lt;br /&gt;
&amp;lt;nowiki&amp;gt;;;&amp;lt;/nowiki&amp;gt; Query time&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 0 msec&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
É possível portanto visualizar o melhor desempenho quando feitas consultas utilizando o Hyperlocal, sendo essa uma ótima implementação para manter no provedor.&lt;br /&gt;
&lt;br /&gt;
É importante lembrar que em caso haver somente um Hyperlocal na rede, o recomendado é deixar somente o servidor primário apontando para o mesmo afim de evitar ponto único de falha, ou fazer dupla implementação um para cada servidor recursivo.&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Infraestrutura]]&lt;br /&gt;
[[Categoria:DNS]]&lt;/div&gt;</summary>
		<author><name>Fabio Julian Ortlieb</name></author>
	</entry>
	<entry>
		<id>https://wiki.brasilpeeringforum.org/index.php?title=Tutorial_DNS_Hyperlocal&amp;diff=1062</id>
		<title>Tutorial DNS Hyperlocal</title>
		<link rel="alternate" type="text/html" href="https://wiki.brasilpeeringforum.org/index.php?title=Tutorial_DNS_Hyperlocal&amp;diff=1062"/>
		<updated>2019-08-21T19:42:46Z</updated>

		<summary type="html">&lt;p&gt;Fabio Julian Ortlieb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Introdução ===&lt;br /&gt;
A Zona Raiz do Sistema de Nomes de Domínios (DNS) é servida por 12 organizações que operam instâncias ''anycast'' de servidores de nomes autoritativos provendo respostas para a raiz do DNS. Estas instâncias estão distribuídas em mais de [https://root-servers.org/ 1000 localidades ao redor do mundo].  Apesar deste grande número de servidores e alta capacidade provisionada para a resolução da raiz de nomes, ainda existe a possibilidade de que um grande ataque coordenado de negação de serviço (DDoS) possa comprometer o acesso à internet para muitos usuários.&lt;br /&gt;
&lt;br /&gt;
Para minimizar e prevenir esta ameaça, existe a possibilidade de adicionar um fator de resiliência na configuração dos servidores recursivos do provedor de internet através do uso de uma cópia local da zona raiz, chamada de '''Hyperlocal'''. Hyperlocal é apresentado em detalhes na [[rfc:7706/|RFC7706]] e, resumidamente, consiste em executar uma cópia da zona raiz no mesmo servidor de serviços de resolução recursiva. Desta forma, as consultas à zona raiz dos clientes são respondidas localmente sem necessidade comunicação externa entre os servidores. Isso resulta em maior robustez do serviço em caso de ataques e ganhos na velocidade de provimento de respostas às consultas ao DNS dos usuários.&lt;br /&gt;
&lt;br /&gt;
Este tutorial foi criado para compartilhar a prática de implementação de um sistema Hyperlocal para a configuração de servidores de DNS do tipo BIND9. Outras configurações e softwares mencionados na  &amp;lt;nowiki&amp;gt;RFC 7706&amp;lt;/nowiki&amp;gt; não são abordados neste tutorial.&lt;br /&gt;
&lt;br /&gt;
=== Implementação - CentOS ===&lt;br /&gt;
Requisitos para instalação do Hyperlocal:&lt;br /&gt;
* Instalação básica CentOS Linux 7&lt;br /&gt;
* 1vCPU&lt;br /&gt;
* 1GB de RAM&lt;br /&gt;
* 20GB de Disco&lt;br /&gt;
Baixe o ISO do Sistema Operacional no link http://isoredirect.centos.org/centos/7/isos/x86_64/&lt;br /&gt;
&lt;br /&gt;
Sistema operacional instalado e atualizado, agora devemos instalar o Bind9 com o comando:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install bind bind-utils&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A configuração para o funcionamento da zona raiz é bem simples como podemos ver abaixo.&lt;br /&gt;
&lt;br /&gt;
Os arquivos de configuração do Bind no Centos7 por padrão estão no arquivo /etc/named.conf.&lt;br /&gt;
&lt;br /&gt;
No exemplo de configuração abaixo, o servidor Hyperlocal foi configurado com o IPv4 198.51.100.1 e IPv6 2001:db8::1 em sua interface de rede.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
view root {&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; IPs das interfaces onde chegarão as requisições para cópia loca da zona raiz&lt;br /&gt;
match-destinations { 198.51.100.1; 2001:db8::1; };&lt;br /&gt;
           zone &amp;quot;.&amp;quot; {&lt;br /&gt;
               type slave;&lt;br /&gt;
                   file &amp;quot;rootzone.db&amp;quot;;&lt;br /&gt;
                   notify no;&lt;br /&gt;
                   masters {&lt;br /&gt;
                           192.228.79.201; # b.root-servers.net&lt;br /&gt;
                           192.33.4.12;    # c.root-servers.net&lt;br /&gt;
                           192.5.5.241;    # f.root-servers.net&lt;br /&gt;
                           192.112.36.4;   # g.root-servers.net&lt;br /&gt;
                           193.0.14.129;   # k.root-servers.net&lt;br /&gt;
                           192.0.47.132;   # xfr.cjr.dns.icann.org&lt;br /&gt;
                           192.0.32.132;   # xfr.lax.dns.icann.org&lt;br /&gt;
                           2001:500:84::b; # b.root-servers.net&lt;br /&gt;
                           2001:500:2f::f; # f.root-servers.net&lt;br /&gt;
                           2001:7fd::1;    # k.root-servers.net&lt;br /&gt;
                           2620:0:2830:202::132; # xfr.cjr.dns.icann.org&lt;br /&gt;
                           2620:0:2d0:202::132;  # xfr.lax.dns.icann.org&lt;br /&gt;
                   };&lt;br /&gt;
           };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Obs.: Os servidores utilizados como sendo as atuais fonte de replicação da zona raiz neste exemplo são os que estavam especificados na &amp;lt;nowiki&amp;gt;https://tools.ietf.org/html/rfc7706&amp;lt;/nowiki&amp;gt;, na data da publicação deste artigo.&lt;br /&gt;
&lt;br /&gt;
Iniciando o serviço do Bind você pode conferir a criação da base com o comando:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ls /var/named/rootzone.db&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Segue abaixo um exemplo de arquivo de configuração para o BIND já contendo as configurações de Hyperlocal e de recursividade .&lt;br /&gt;
&lt;br /&gt;
É possível melhorar de diversas formas esse exemplo de configuração.&lt;br /&gt;
&lt;br /&gt;
O configuração padrão do Bind com o adicional de views no exemplo seguinte já é bem funcional.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options {&lt;br /&gt;
       listen-on port 53 { any; };&lt;br /&gt;
       listen-on-v6 port 53 { any; };&lt;br /&gt;
       directory       &amp;quot;/var/named&amp;quot;;&lt;br /&gt;
       dump-file       &amp;quot;/var/named/data/cache_dump.db&amp;quot;;&lt;br /&gt;
       statistics-file &amp;quot;/var/named/data/named_stats.txt&amp;quot;;&lt;br /&gt;
       memstatistics-file &amp;quot;/var/named/data/named_mem_stats.txt&amp;quot;;&lt;br /&gt;
       recursing-file  &amp;quot;/var/named/data/named.recursing&amp;quot;;&lt;br /&gt;
       secroots-file   &amp;quot;/var/named/data/named.secroots&amp;quot;;&lt;br /&gt;
       dnssec-enable yes;&lt;br /&gt;
       dnssec-validation yes;&lt;br /&gt;
       /* Path to ISC DLV key */&lt;br /&gt;
       bindkeys-file &amp;quot;/etc/named.iscdlv.key&amp;quot;;&lt;br /&gt;
       managed-keys-directory &amp;quot;/var/named/dynamic&amp;quot;;&lt;br /&gt;
       pid-file &amp;quot;/run/named/named.pid&amp;quot;;&lt;br /&gt;
       session-keyfile &amp;quot;/run/named/session.key&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
       channel default_debug {&lt;br /&gt;
               file &amp;quot;data/named.run&amp;quot;;&lt;br /&gt;
               severity dynamic;&lt;br /&gt;
       };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
acl &amp;quot;MinhaRede_v4&amp;quot; {&lt;br /&gt;
       127.0.0.0/8;&lt;br /&gt;
       198.51.100.0/24;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl &amp;quot;MinhaRede_v6&amp;quot; {&lt;br /&gt;
       ::1;&lt;br /&gt;
       2001:db8::/32;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl &amp;quot;ServidorRecursivo_A&amp;quot; {&lt;br /&gt;
       203.0.113.10;&lt;br /&gt;
       2001:db8::10;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl &amp;quot;ServidorRecursivo_B&amp;quot; {&lt;br /&gt;
       203.0.113.20;&lt;br /&gt;
       2001:db8::20;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
view root {&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; Como exemplo, especificamos abaixo os dois servidores recursivos autorizados a fazer consulta na copia local de zona Raiz &lt;br /&gt;
       match-clients { 127.0.0.1; ServidorRecursivo_A; ServidorRecursivo_B; } ;&lt;br /&gt;
       zone &amp;quot;.&amp;quot; {&lt;br /&gt;
               type slave;&lt;br /&gt;
               file &amp;quot;rootzone.db&amp;quot;;&lt;br /&gt;
               notify no;&lt;br /&gt;
               masters {&lt;br /&gt;
                           192.228.79.201; # b.root-servers.net&lt;br /&gt;
                           192.33.4.12;    # c.root-servers.net&lt;br /&gt;
                           192.5.5.241;    # f.root-servers.net&lt;br /&gt;
                           192.112.36.4;   # g.root-servers.net&lt;br /&gt;
                           193.0.14.129;   # k.root-servers.net&lt;br /&gt;
                           192.0.47.132;   # xfr.cjr.dns.icann.org&lt;br /&gt;
                           192.0.32.132;   # xfr.lax.dns.icann.org&lt;br /&gt;
                           2001:500:84::b; # b.root-servers.net&lt;br /&gt;
                           2001:500:2f::f; # f.root-servers.net&lt;br /&gt;
                           2001:7fd::1;    # k.root-servers.net&lt;br /&gt;
                           2620:0:2830:202::132; # xfr.cjr.dns.icann.org&lt;br /&gt;
                           2620:0:2d0:202::132;  # xfr.lax.dns.icann.org&lt;br /&gt;
                   };&lt;br /&gt;
       };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
view &amp;quot;externa&amp;quot; {&lt;br /&gt;
     match-clients { any; };&lt;br /&gt;
     recursion no;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
view clientes-recursivos {&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; Esta é a view que permite que clientes façam consultas recursivas a este servidor &lt;br /&gt;
       dnssec-validation auto;&lt;br /&gt;
       allow-recursion { MinhaRede_v4; MinhaRede_v6; };&lt;br /&gt;
       recursion yes;&lt;br /&gt;
       &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; Esta é parte aonde instruímos o Bind sobre os servidores serem utilizado para consulta de zona Raiz.&lt;br /&gt;
       zone &amp;quot;.&amp;quot; {&lt;br /&gt;
               type static-stub;&lt;br /&gt;
               server-addresses { 127.0.0.1; };&lt;br /&gt;
               &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; Aqui definimos o IP do servidor Hyperlocal aonde serão feitas as consultas recursivas da zona Raiz.&lt;br /&gt;
               &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; Como neste exemplo o Hyperlocal roda neste mesmo servidor, especificamos o endereço de loopback.&lt;br /&gt;
 &lt;br /&gt;
       };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Com essa configuração é possível já sentir os benefícios do Hyperlocal em sua rede, no exemplo acima, os endereços 172.16.1.1 e 172.16.1.2 são servidores recursivos externos rodando Unbound, para completar a configuração adicione ao Unbound a seguinte configuração para que ele consulte o Hyperlocal:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
stub-zone:&lt;br /&gt;
       name: &amp;quot;.&amp;quot;&lt;br /&gt;
       stub-prime: no&lt;br /&gt;
       stub-addr: 198.51.100.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Conclusão ===&lt;br /&gt;
Em testes o desempenho ficou muito bom. Abaixo algumas comparações consultando domínios inválidos para forçar o recursivo a procurar nos Root Servers.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Teste 1 servidor público Google&lt;br /&gt;
dig @8.8.8.8 domaininvalid.com.br.xxxxxxx&lt;br /&gt;
&amp;lt;nowiki&amp;gt;;;&amp;lt;/nowiki&amp;gt; Query time&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 29 msec&lt;br /&gt;
&lt;br /&gt;
// Teste 2 servidor publico Google&lt;br /&gt;
dig @8.8.8.8 domaininvalid.com.br.xxxxxxx&lt;br /&gt;
&amp;lt;nowiki&amp;gt;;;&amp;lt;/nowiki&amp;gt; Query time&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 27 msec&lt;br /&gt;
&lt;br /&gt;
// Teste 1 no Unbound recursivo sem o Hyperlocal&lt;br /&gt;
dig @172.16.1.1 domaininvalid.com.br.xxxxxxx&lt;br /&gt;
&amp;lt;nowiki&amp;gt;;;&amp;lt;/nowiki&amp;gt; Query time&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 21 msec&lt;br /&gt;
&lt;br /&gt;
// Teste 2 (cached) no Unbound recursivo sem o hyperlocal&lt;br /&gt;
dig @172.16.1.1 domaininvalid.com.br.xxxxxxx&lt;br /&gt;
&amp;lt;nowiki&amp;gt;;;&amp;lt;/nowiki&amp;gt; Query time&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 0 msec&lt;br /&gt;
&lt;br /&gt;
// Teste 1 direto no Hyperlocal&lt;br /&gt;
dig @192.168.0.1 domaininvalid.com.br.xxxxxxx&lt;br /&gt;
&amp;lt;nowiki&amp;gt;;;&amp;lt;/nowiki&amp;gt; Query time&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 0 msec&lt;br /&gt;
&lt;br /&gt;
// Teste 2 (cached) direto no Hyperlocal&lt;br /&gt;
dig @192.168.0.1 domaininvalid.com.br.xxxxxxx&lt;br /&gt;
&amp;lt;nowiki&amp;gt;;;&amp;lt;/nowiki&amp;gt; Query time&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 0 msec &lt;br /&gt;
&lt;br /&gt;
// Teste 1 no Unbound recursivo apontando para o Hyperlocal&lt;br /&gt;
dig @172.16.1.1 domaininvalid.com.br.xxxxxxx&lt;br /&gt;
&amp;lt;nowiki&amp;gt;;;&amp;lt;/nowiki&amp;gt; Query time&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 2 msec&lt;br /&gt;
&lt;br /&gt;
// Teste 2 (cached) no Unbound recursivo apontando para o Hyperlocal&lt;br /&gt;
dig @172.16.1.1 domaininvalid.com.br.xxxxxxx&lt;br /&gt;
&amp;lt;nowiki&amp;gt;;;&amp;lt;/nowiki&amp;gt; Query time&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 0 msec&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
É possível portanto visualizar o melhor desempenho quando feitas consultas utilizando o Hyperlocal, sendo essa uma ótima implementação para manter no provedor.&lt;br /&gt;
&lt;br /&gt;
É importante lembrar que em caso haver somente um Hyperlocal na rede, o recomendado é deixar somente o servidor primário apontando para o mesmo afim de evitar ponto único de falha, ou fazer dupla implementação um para cada servidor recursivo.&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Infraestrutura]]&lt;br /&gt;
[[Categoria:DNS]]&lt;/div&gt;</summary>
		<author><name>Fabio Julian Ortlieb</name></author>
	</entry>
	<entry>
		<id>https://wiki.brasilpeeringforum.org/index.php?title=Tutorial_DNS_Hyperlocal&amp;diff=1061</id>
		<title>Tutorial DNS Hyperlocal</title>
		<link rel="alternate" type="text/html" href="https://wiki.brasilpeeringforum.org/index.php?title=Tutorial_DNS_Hyperlocal&amp;diff=1061"/>
		<updated>2019-08-21T17:10:07Z</updated>

		<summary type="html">&lt;p&gt;Fabio Julian Ortlieb: Melhorias na descrição do tutorial&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Introdução ===&lt;br /&gt;
A Zona Raiz do Sistema de Nomes de Domínios (DNS) é servida por 12 organizações que operam instâncias ''anycast'' de servidores de nomes autoritativos provendo respostas para a raiz do DNS. Estas instâncias estão distribuídas em mais de [https://root-servers.org/ 1000 localidades ao redor do mundo].  Apesar deste grande número de servidores e alta capacidade provisionada para a resolução da raiz de nomes, ainda existe a possibilidade de que um grande ataque coordenado de negação de serviço (DDoS) possa comprometer o acesso à internet para muitos usuários.&lt;br /&gt;
&lt;br /&gt;
Para minimizar e prevenir esta ameaça, existe a possibilidade de adicionar um fator de resiliência na configuração dos servidores recursivos do provedor de internet através do uso de uma cópia local da zona raiz, chamada de '''Hyperlocal'''. Hyperlocal é apresentado em detalhes na [[rfc:7706/|RFC7706]] e, resumidamente, consiste em executar uma cópia da zona raiz no mesmo servidor de serviços de resolução recursiva. Desta forma, as consultas à zona raiz dos clientes são respondidas localmente sem necessidade comunicação externa entre os servidores. Isso resulta em maior robustez do serviço em caso de ataques e ganhos na velocidade de provimento de respostas às consultas ao DNS dos usuários.&lt;br /&gt;
&lt;br /&gt;
Este tutorial foi criado para compartilhar a prática de implementação de um sistema Hyperlocal para a configuração de servidores de DNS do tipo BIND9. Outras configurações e softwares mencionados na  &amp;lt;nowiki&amp;gt;RFC 7706&amp;lt;/nowiki&amp;gt; não são abordados neste tutorial.&lt;br /&gt;
&lt;br /&gt;
=== Implementação - CentOS ===&lt;br /&gt;
Requisitos para instalação do Hyperlocal:&lt;br /&gt;
* Instalação básica CentOS Linux 7&lt;br /&gt;
* 1vCPU&lt;br /&gt;
* 1GB de RAM&lt;br /&gt;
* 20GB de Disco&lt;br /&gt;
Baixe o ISO do Sistema Operacional no link http://isoredirect.centos.org/centos/7/isos/x86_64/&lt;br /&gt;
&lt;br /&gt;
Sistema operacional instalado e atualizado, agora devemos instalar o Bind9 com o comando:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install bind bind-utils&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A configuração para o funcionamento da zona raiz é bem simples como podemos ver abaixo.&lt;br /&gt;
&lt;br /&gt;
Os arquivos de configuração do Bind no Centos7 por padrão estão no arquivo /etc/named.conf.&lt;br /&gt;
&lt;br /&gt;
No exemplo de configuração abaixo, o servidor Hyperlocal foi configurado com o IPv4 198.51.100.1 e IPv6 2001:db8::1 em sua interface de rede.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
view root {&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; IPs das interfaces onde chegarão as requisições para cópia loca da zona raiz&lt;br /&gt;
match-destinations { 198.51.100.1; 2001:db8::1; };&lt;br /&gt;
           zone &amp;quot;.&amp;quot; {&lt;br /&gt;
               type slave;&lt;br /&gt;
                   file &amp;quot;rootzone.db&amp;quot;;&lt;br /&gt;
                   notify no;&lt;br /&gt;
                   masters {&lt;br /&gt;
                           192.228.79.201; # b.root-servers.net&lt;br /&gt;
                           192.33.4.12;    # c.root-servers.net&lt;br /&gt;
                           192.5.5.241;    # f.root-servers.net&lt;br /&gt;
                           192.112.36.4;   # g.root-servers.net&lt;br /&gt;
                           193.0.14.129;   # k.root-servers.net&lt;br /&gt;
                           192.0.47.132;   # xfr.cjr.dns.icann.org&lt;br /&gt;
                           192.0.32.132;   # xfr.lax.dns.icann.org&lt;br /&gt;
                           2001:500:84::b; # b.root-servers.net&lt;br /&gt;
                           2001:500:2f::f; # f.root-servers.net&lt;br /&gt;
                           2001:7fd::1;    # k.root-servers.net&lt;br /&gt;
                           2620:0:2830:202::132; # xfr.cjr.dns.icann.org&lt;br /&gt;
                           2620:0:2d0:202::132;  # xfr.lax.dns.icann.org&lt;br /&gt;
                   };&lt;br /&gt;
           };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Obs.: Os servidores utilizados como sendo as atuais fonte de replicação da zona raiz neste exemplo são os que estavam especificados na &amp;lt;nowiki&amp;gt;https://tools.ietf.org/html/rfc7706&amp;lt;/nowiki&amp;gt;, na data da publicação deste artigo.&lt;br /&gt;
&lt;br /&gt;
Iniciando o serviço do Bind você pode conferir a criação da base com o comando:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ls /var/named/rootzone.db&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Segue abaixo um exemplo de arquivo de configuração para o BIND já contendo as configurações de Hyperlocal e de recursividade .&lt;br /&gt;
&lt;br /&gt;
É possível melhorar de diversas formas esse exemplo de configuração.&lt;br /&gt;
&lt;br /&gt;
O configuração padrão do Bind com o adicional de views no exemplo seguinte já é bem funcional.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options {&lt;br /&gt;
       listen-on port 53 { any; };&lt;br /&gt;
       listen-on-v6 port 53 { any; };&lt;br /&gt;
       directory       &amp;quot;/var/named&amp;quot;;&lt;br /&gt;
       dump-file       &amp;quot;/var/named/data/cache_dump.db&amp;quot;;&lt;br /&gt;
       statistics-file &amp;quot;/var/named/data/named_stats.txt&amp;quot;;&lt;br /&gt;
       memstatistics-file &amp;quot;/var/named/data/named_mem_stats.txt&amp;quot;;&lt;br /&gt;
       recursing-file  &amp;quot;/var/named/data/named.recursing&amp;quot;;&lt;br /&gt;
       secroots-file   &amp;quot;/var/named/data/named.secroots&amp;quot;;&lt;br /&gt;
       dnssec-enable yes;&lt;br /&gt;
       dnssec-validation yes;&lt;br /&gt;
       /* Path to ISC DLV key */&lt;br /&gt;
       bindkeys-file &amp;quot;/etc/named.iscdlv.key&amp;quot;;&lt;br /&gt;
       managed-keys-directory &amp;quot;/var/named/dynamic&amp;quot;;&lt;br /&gt;
       pid-file &amp;quot;/run/named/named.pid&amp;quot;;&lt;br /&gt;
       session-keyfile &amp;quot;/run/named/session.key&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
logging {&lt;br /&gt;
       channel default_debug {&lt;br /&gt;
               file &amp;quot;data/named.run&amp;quot;;&lt;br /&gt;
               severity dynamic;&lt;br /&gt;
       };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
acl &amp;quot;MinhaRede_v4&amp;quot; {&lt;br /&gt;
       127.0.0.0/8;&lt;br /&gt;
       198.51.100.0/24;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl &amp;quot;MinhaRede_v6&amp;quot; {&lt;br /&gt;
       ::1;&lt;br /&gt;
       2001:db8::/64;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl &amp;quot;ServidorRecursivo_A&amp;quot; {&lt;br /&gt;
       203.0.113.10;&lt;br /&gt;
       2001:db8::10;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
acl &amp;quot;ServidorRecursivo_B&amp;quot; {&lt;br /&gt;
       203.0.113.20;&lt;br /&gt;
       2001:db8::20;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
view root {&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; Como exemplo, especificamos abaixo os dois servidores recursivos autorizados a fazer consulta na copia local de zona Raiz &lt;br /&gt;
       match-clients { 127.0.0.1; ServidorRecursivo_A; ServidorRecursivo_B; } ;&lt;br /&gt;
       zone &amp;quot;.&amp;quot; {&lt;br /&gt;
               type slave;&lt;br /&gt;
               file &amp;quot;rootzone.db&amp;quot;;&lt;br /&gt;
               notify no;&lt;br /&gt;
               masters {&lt;br /&gt;
                           192.228.79.201; # b.root-servers.net&lt;br /&gt;
                           192.33.4.12;    # c.root-servers.net&lt;br /&gt;
                           192.5.5.241;    # f.root-servers.net&lt;br /&gt;
                           192.112.36.4;   # g.root-servers.net&lt;br /&gt;
                           193.0.14.129;   # k.root-servers.net&lt;br /&gt;
                           192.0.47.132;   # xfr.cjr.dns.icann.org&lt;br /&gt;
                           192.0.32.132;   # xfr.lax.dns.icann.org&lt;br /&gt;
                           2001:500:84::b; # b.root-servers.net&lt;br /&gt;
                           2001:500:2f::f; # f.root-servers.net&lt;br /&gt;
                           2001:7fd::1;    # k.root-servers.net&lt;br /&gt;
                           2620:0:2830:202::132; # xfr.cjr.dns.icann.org&lt;br /&gt;
                           2620:0:2d0:202::132;  # xfr.lax.dns.icann.org&lt;br /&gt;
                   };&lt;br /&gt;
       };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
view &amp;quot;externa&amp;quot; {&lt;br /&gt;
     match-clients { any; };&lt;br /&gt;
     recursion no;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
view clientes-recursivos {&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; Esta é a view que permite que clientes façam consultas recursivas a este servidor &lt;br /&gt;
       dnssec-validation auto;&lt;br /&gt;
       allow-recursion { MinhaRede_v4; MinhaRede_v6; };&lt;br /&gt;
       recursion yes;&lt;br /&gt;
       &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; Esta é parte aonde instruímos o Bind sobre os servidores serem utilizado para consulta de zona Raiz.&lt;br /&gt;
       zone &amp;quot;.&amp;quot; {&lt;br /&gt;
               type static-stub;&lt;br /&gt;
               server-addresses { 127.0.0.1; };&lt;br /&gt;
               &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; Aqui definimos o IP do servidor Hyperlocal aonde serão feitas as consultas recursivas da zona Raiz.&lt;br /&gt;
               &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; Como neste exemplo o Hyperlocal roda neste mesmo servidor, especificamos o endereço de loopback.&lt;br /&gt;
 &lt;br /&gt;
       };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Com essa configuração é possível já sentir os benefícios do Hyperlocal em sua rede, no exemplo acima, os endereços 172.16.1.1 e 172.16.1.2 são servidores recursivos externos rodando Unbound, para completar a configuração adicione ao Unbound a seguinte configuração para que ele consulte o Hyperlocal:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
stub-zone:&lt;br /&gt;
       name: &amp;quot;.&amp;quot;&lt;br /&gt;
       stub-prime: no&lt;br /&gt;
       stub-addr: 198.51.100.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Conclusão ===&lt;br /&gt;
Em testes o desempenho ficou muito bom. Abaixo algumas comparações consultando domínios inválidos para forçar o recursivo a procurar nos Root Servers.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Teste 1 servidor público Google&lt;br /&gt;
dig @8.8.8.8 domaininvalid.com.br.xxxxxxx&lt;br /&gt;
&amp;lt;nowiki&amp;gt;;;&amp;lt;/nowiki&amp;gt; Query time&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 29 msec&lt;br /&gt;
&lt;br /&gt;
// Teste 2 servidor publico Google&lt;br /&gt;
dig @8.8.8.8 domaininvalid.com.br.xxxxxxx&lt;br /&gt;
&amp;lt;nowiki&amp;gt;;;&amp;lt;/nowiki&amp;gt; Query time&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 27 msec&lt;br /&gt;
&lt;br /&gt;
// Teste 1 no Unbound recursivo sem o Hyperlocal&lt;br /&gt;
dig @172.16.1.1 domaininvalid.com.br.xxxxxxx&lt;br /&gt;
&amp;lt;nowiki&amp;gt;;;&amp;lt;/nowiki&amp;gt; Query time&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 21 msec&lt;br /&gt;
&lt;br /&gt;
// Teste 2 (cached) no Unbound recursivo sem o hyperlocal&lt;br /&gt;
dig @172.16.1.1 domaininvalid.com.br.xxxxxxx&lt;br /&gt;
&amp;lt;nowiki&amp;gt;;;&amp;lt;/nowiki&amp;gt; Query time&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 0 msec&lt;br /&gt;
&lt;br /&gt;
// Teste 1 direto no Hyperlocal&lt;br /&gt;
dig @192.168.0.1 domaininvalid.com.br.xxxxxxx&lt;br /&gt;
&amp;lt;nowiki&amp;gt;;;&amp;lt;/nowiki&amp;gt; Query time&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 0 msec&lt;br /&gt;
&lt;br /&gt;
// Teste 2 (cached) direto no Hyperlocal&lt;br /&gt;
dig @192.168.0.1 domaininvalid.com.br.xxxxxxx&lt;br /&gt;
&amp;lt;nowiki&amp;gt;;;&amp;lt;/nowiki&amp;gt; Query time&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 0 msec &lt;br /&gt;
&lt;br /&gt;
// Teste 1 no Unbound recursivo apontando para o Hyperlocal&lt;br /&gt;
dig @172.16.1.1 domaininvalid.com.br.xxxxxxx&lt;br /&gt;
&amp;lt;nowiki&amp;gt;;;&amp;lt;/nowiki&amp;gt; Query time&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 2 msec&lt;br /&gt;
&lt;br /&gt;
// Teste 2 (cached) no Unbound recursivo apontando para o Hyperlocal&lt;br /&gt;
dig @172.16.1.1 domaininvalid.com.br.xxxxxxx&lt;br /&gt;
&amp;lt;nowiki&amp;gt;;;&amp;lt;/nowiki&amp;gt; Query time&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; 0 msec&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
É possível portanto visualizar o melhor desempenho quando feitas consultas utilizando o Hyperlocal, sendo essa uma ótima implementação para manter no provedor.&lt;br /&gt;
[[Categoria:Infraestrutura]]&lt;br /&gt;
[[Categoria:DNS]]&lt;/div&gt;</summary>
		<author><name>Fabio Julian Ortlieb</name></author>
	</entry>
</feed>