<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Arquivos servidor dns - Remontti</title>
	<atom:link href="https://blog.remontti.com.br/tag/servidor-dns/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.remontti.com.br/tag/servidor-dns</link>
	<description>rudimar@remontti</description>
	<lastBuildDate>Tue, 14 Jul 2026 20:45:49 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.2</generator>

<image>
	<url>https://blog.remontti.com.br/wp-content/uploads/2024/09/icone-rr-80x80.png</url>
	<title>Arquivos servidor dns - Remontti</title>
	<link>https://blog.remontti.com.br/tag/servidor-dns</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Servidor DNS #1 &#8211; Recursivo com BIND 9.20 no Debian 13 (Trixie)</title>
		<link>https://blog.remontti.com.br/8358</link>
					<comments>https://blog.remontti.com.br/8358#respond</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Tue, 14 Jul 2026 20:45:49 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Administração de Redes]]></category>
		<category><![CDATA[Anycast DNS]]></category>
		<category><![CDATA[bind]]></category>
		<category><![CDATA[BIND 9.20]]></category>
		<category><![CDATA[Bind no Debian]]></category>
		<category><![CDATA[bind9]]></category>
		<category><![CDATA[Cache DNS]]></category>
		<category><![CDATA[Debian 13]]></category>
		<category><![CDATA[Debian Trixie]]></category>
		<category><![CDATA[dig]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[DNS Recursivo]]></category>
		<category><![CDATA[dnssec]]></category>
		<category><![CDATA[Firewall Linux]]></category>
		<category><![CDATA[Forwarders]]></category>
		<category><![CDATA[Infraestrutura de Redes]]></category>
		<category><![CDATA[ipv6]]></category>
		<category><![CDATA[isp]]></category>
		<category><![CDATA[named]]></category>
		<category><![CDATA[nftables]]></category>
		<category><![CDATA[Open Resolver]]></category>
		<category><![CDATA[Porta 53]]></category>
		<category><![CDATA[Provedor de Internet]]></category>
		<category><![CDATA[Rede de Provedores]]></category>
		<category><![CDATA[Resolver DNS]]></category>
		<category><![CDATA[Segurança de Redes]]></category>
		<category><![CDATA[servidor dns]]></category>
		<category><![CDATA[servidor linux]]></category>
		<category><![CDATA[Tutorial Linux]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=8358</guid>

					<description><![CDATA[<p>BIND é o servidor DNS mais utilizado na Internet e um padrão de fato em sistemas Unix/Linux. O DNS Recursivo é responsável pela resolução de nomes: recebe a consulta do cliente e percorre a&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/8358">Servidor DNS #1 &#8211; Recursivo com BIND 9.20 no Debian 13 (Trixie)</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img fetchpriority="high" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2026/07/CAPA.png" alt="" width="1672" height="941" class="alignnone size-full wp-image-8364" srcset="https://blog.remontti.com.br/wp-content/uploads/2026/07/CAPA.png 1672w, https://blog.remontti.com.br/wp-content/uploads/2026/07/CAPA-300x169.png 300w, https://blog.remontti.com.br/wp-content/uploads/2026/07/CAPA-1024x576.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2026/07/CAPA-768x432.png 768w, https://blog.remontti.com.br/wp-content/uploads/2026/07/CAPA-1536x864.png 1536w" sizes="(max-width: 1672px) 100vw, 1672px" /></p>
<p><a href="https://pt.wikipedia.org/wiki/BIND" rel="noopener noreferrer" target="_blank">BIND</a> é o servidor DNS mais utilizado na Internet e um padrão de fato em sistemas Unix/Linux.</p>
<p>O <strong>DNS Recursivo</strong> é responsável pela resolução de nomes: recebe a consulta do cliente e percorre a hierarquia do DNS — servidores raiz → TLD (.br, .com) → autoritativo do domínio — até obter a resposta. O resultado fica armazenado em <strong>cache</strong> pelo tempo (TTL) definido pelo autoritativo do domínio consultado, o que reduz a latência das próximas consultas e o tráfego DNS saindo da sua rede.</p>
<p>Para um ISP, rodar recursivo próprio significa menor latência (o servidor está dentro do seu AS, próximo do cliente), controle total do serviço e independência de resolvers públicos como 8.8.8.8 e 1.1.1.1.</p>
<p><strong>Atenção:</strong> este tutorial cobre <strong>apenas o Recursivo</strong>.<br />
&#8211; <strong>DNS Autoritativo e Reverso</strong> estão na <strong><a href="#2" rel="noopener" target="_blank">parte 2</a> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/23f3.png" alt="⏳" class="wp-smiley" style="height: 1em; max-height: 1em;" />(em breve)</strong><br />
&#8211; <strong>DNS anycast com FRR</strong> (alta disponibilidade) na <strong><a href="#3" rel="noopener" target="_blank">parte 3</a> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/23f3.png" alt="⏳" class="wp-smiley" style="height: 1em; max-height: 1em;" />(em breve)</strong>.</p>
<p>Usaremos o <strong>Debian 13 (Trixie)</strong> com <strong>BIND 9.20</strong> — houve mudanças relevantes em relação aos tutoriais antigos com<strong> Debian 11/12</strong>.</p>
<p><strong>Requisitos:</strong><br />
<strong><a href="https://blog.remontti.com.br/8267" rel="noopener noreferrer" target="_blank">Debian 13 Trixie &#8211; Instalação Limpa</a></strong></p>
<p><strong>Leituras recomendadas:</strong><br />
<a href="https://blog.remontti.com.br/5848" rel="noopener" target="_blank"><strong>Configurando interface de rede no Debian</strong></a><br />
<a href="https://blog.remontti.com.br/5867" rel="noopener" target="_blank"><strong>Como melhorar a produtividade no seu Debian após instalação</strong></a></p>
<h5>Vire root com o comando correto!</h5>
<pre class="remontti-code">$ su -</pre>
<h5>Pacotes recomendados:</h5>
<pre class="remontti-code"># apt install vim wget unzip man-db htop tree mtr-tiny whois -y</pre>
<h4>Configurando a placa de Rede</h4>
<p>Neste tutorial vou configurar a rede da forma simples e convencional (IP fixo na interface). Na parte 3 aprenderemos a configurar via roteamento (FRR), que é o cenário ideal para DNS anycast. Se quiser se aprofundar, veja também: <a href="https://blog.remontti.com.br/5848" target="_blank">Configurando interface de rede no Debian</a>. Caso já tenha sua placa de rede configurada pule esta etapa.</p>
<p>Primeiro descubra o nome da sua interface:</p>
<pre class="remontti-code"># ip -br link</pre>
<p>No meu caso o nome é <strong>ens18</strong>, o seu pode ser diferente (<em>ens192, enp0s3, eno1, enp1s0&#8230;</em>). Ajuste nos exemplos abaixo.</p>
<p>Edite o arquivo:</p>
<pre class="remontti-code"># vim /etc/network/interfaces</pre>
<p>Seu arquivo deverá ficar assim (as linhas &#8220;source&#8221; e da interface de loopback &#8220;lo&#8221; já existem no arquivo, não duplique, apenas ajuste/adicione o bloco da sua interface):</p>
<pre class="remontti-code-plain">source /etc/network/interfaces.d/*

auto lo
iface lo inet loopback

auto ens18
iface ens18 inet static
    address 255.9.0.2/28
    gateway 255.9.0.1

iface ens18 inet6 static
    address 2559:ffff:cafe::2/64
    gateway 2559:ffff:cafe::1  </pre>
<p>Obs: substitua os IPs pelos endereços do seu bloco. Estou usando 255.9.0.2/28 e 2559:ffff:cafe::2/64 apenas como exemplo.</p>
<p>Obs 2: em servidor use &#8220;auto&#8221; em vez de &#8220;allow-hotplug&#8221;. O allow-hotplug só levanta a interface por evento de hotplug e pode deixar seu servidor sem rede no boot em algumas situações; o auto garante que a interface suba junto com o sistema.</p>
<p>Aplique a configuração:</p>
<pre class="remontti-code"># systemctl restart networking</pre>
<p><strong>ATENÇÃO</strong>: se você está acessando o servidor via SSH e errar algo aqui, vai perder o acesso. Se possível faça essa etapa pelo console (físico ou da VM).<br />
Mas recomendo que você reinicie o servidor.</p>
<pre class="remontti-code"># reboot </pre>
<p>Acesse novamente o servidor pelo endereço de IP.<br />
Valide se os IPs subiram e se há conectividade:</p>
<pre class="remontti-code"># ip -br address
# ip -c address
# ping -c3 8.8.8.8
# ping -c3 2001:4860:4860::8888</pre>
<h2>Instalação do Bind9</h2>
<p>Instalação dos pacotes:</p>
<pre class="remontti-code"># apt install bind9 bind9-utils bind9-dnsutils</pre>
<p>Obs: no Debian 13 o serviço agora se chama &#8220;named&#8221; (o nome &#8220;bind9&#8221; ainda funciona como atalho, mas nos comandos vou usar named que é o nome oficial).</p>
<p>Arquitetura de arquivos e diretórios do bind9 no Debian 13:</p>
<h5>Estrutura de arquivos do BIND</h5>
<p>Os principais arquivos do BIND ficam distribuídos nos seguintes diretórios:</p>
<h4><strong>/etc/bind/</strong></h4>
<p>Diretório principal de configuração do BIND.</p>
<ul>
<li><strong>named.conf</strong>: arquivo principal, responsável por incluir os demais arquivos de configuração.</li>
<li><strong>named.conf.local</strong>: usado para declarar zonas locais, autoritativas ou configurações específicas do servidor.</li>
<li><strong>named.conf.options</strong>: contém opções globais, como recursão, encaminhadores, interfaces e controles de acesso.</li>
<li><strong>named.conf.root-hints</strong>: referência aos servidores raiz do DNS.</li>
<li><strong>rndc.key</strong>: chave utilizada para comunicação segura entre o comando <strong>rndc</strong> e o serviço <strong>named</strong>.</li>
</ul>
<h4><strong>/usr/share/dns/</strong></h4>
<p>Contém arquivos de referência relacionados à raiz do DNS.</p>
<ul>
<li><strong>root.hints</strong>: lista dos servidores raiz do DNS.</li>
<li><strong>root.key</strong>: chave de confiança utilizada na validação DNSSEC.</li>
<li><strong>root.ds</strong>: registro DS da zona raiz utilizado como referência para DNSSEC.</li>
</ul>
<h4><strong>/var/cache/bind/</strong></h4>
<p>Diretório de trabalho do BIND.<br />
Nele ficam arquivos gerados ou atualizados pelo próprio serviço, como zonas dinâmicas, journals e chaves gerenciadas pelo DNSSEC.</p>
<ul>
<li><strong>managed-keys.bind</strong>: armazena chaves DNSSEC gerenciadas automaticamente pelo BIND.</li>
<li><strong>managed-keys.bind.jnl</strong>: arquivo de journal utilizado para registrar alterações dessas chaves.</li>
</ul>
<h4><strong>/run/named/</strong></h4>
<p>Contém arquivos temporários criados enquanto o serviço está em execução.</p>
<ul>
<li><strong>named.pid</strong>: armazena o PID do processo <strong>named</strong>.</li>
<li><strong>session.key</strong>: chave temporária utilizada em operações de atualização dinâmica local.</li>
</ul>
<h4>Configuração do Recursivo</h4>
<p>Alteramos o DNS do servidor fazendo com que ele consulte em si próprio, através dos IPs de loopback. Essa alteração deve ser feita no arquivo /etc/resolv.conf.</p>
<pre class="remontti-code"># echo &quot;nameserver 127.0.0.1&quot; &gt; /etc/resolv.conf
# echo &quot;nameserver ::1&quot; &gt;&gt; /etc/resolv.conf</pre>
<p>Neste ponto, o servidor já deve estar resolvendo nomes localmente. Agora utilize a ferramenta <strong>dig</strong> para realizar alguns testes:</p>
<pre class="remontti-code"># dig @localhost google.com.br A
# dig @localhost google.com.br AAAA
# dig @localhost google.com.br A +trace</pre>
<p>Agora vamos ajustar o BIND para funcionar como servidor DNS recursivo, permitindo consultas somente das redes autorizadas.</p>
<pre class="remontti-code"># vim /etc/bind/named.conf.options</pre>
<pre class="remontti-code-plain">acl autorizados {
        127.0.0.1;
        ::1;
        10.0.0.0/8;
        172.16.0.0/12;
        192.168.0.0/16;
        100.64.0.0/10;
        fc00::/7;
        fe80::/10;

        // Prefixos da sua rede
        255.9.0.0/22;
        2559:ffff::/32;
};

options {
        directory &quot;/var/cache/bind&quot;;

        dnssec-validation auto;

        listen-on { any; };
        listen-on-v6 { any; };

        minimal-responses yes;

        max-ncache-ttl 300;
        min-cache-ttl 90;

        allow-recursion { autorizados; };
        allow-query-cache { autorizados; };
        allow-query { autorizados; };

        version &quot;RR DNS Server - Do good&quot;;
};</pre>
<p><strong>Atenção:</strong> substitua <em>255.9.0.0/22 e 2559:ffff::/32</em> pelos prefixos IPv4 e IPv6 da sua rede.</p>
<h3>Entendendo as opções</h3>
<p><strong>acl autorizados</strong><br />
Lista os endereços que podem utilizar o servidor recursivo. Inclui localhost, redes privadas, CGNAT, IPv6 interno e os prefixos da sua rede. Clientes fora dessa lista recebem <strong>REFUSED</strong>.</p>
<p><strong>directory &#8220;/var/cache/bind&#8221;;</strong><br />
Define o diretório de trabalho do BIND.</p>
<p><strong>dnssec-validation auto;</strong><br />
Ativa a validação DNSSEC para verificar a autenticidade das respostas.</p>
<p><strong>listen-on / listen-on-v6</strong><br />
Define em quais endereços IPv4 e IPv6 o BIND escutará. O valor <strong>any</strong> significa todos os endereços do servidor.</p>
<p><strong>minimal-responses yes;</strong><br />
Reduz o tamanho das respostas, enviando somente as informações necessárias.</p>
<p><strong>max-ncache-ttl 300;</strong><br />
Mantém respostas negativas, como <strong>NXDOMAIN</strong>, no cache por no máximo 5 minutos.</p>
<p><strong>min-cache-ttl 90;</strong><br />
Mantém respostas positivas no cache por pelo menos 90 segundos, mesmo quando o domínio informa um TTL menor.</p>
<p><strong>allow-recursion</strong><br />
Define quem pode realizar consultas recursivas.</p>
<p><strong>allow-query-cache</strong><br />
Define quem pode receber respostas armazenadas no cache.</p>
<p><strong>allow-query</strong><br />
Define quem pode consultar o servidor. Como este servidor é somente recursivo, restringimos o acesso à ACL.</p>
<p><strong>version &#8220;RR DNS Server &#8211; Do good&#8221;;</strong><br />
Oculta a versão real do BIND em consultas simples. Não substitui atualizações e boas práticas de segurança.</p>
<p><strong>Opções adicionais</strong></p>
<p><strong>max-cache-ttl</strong><br />
Define o tempo máximo das respostas positivas no cache. O padrão é 7 dias.</p>
<p><strong>max-cache-ttl 86400;</strong><br />
O exemplo acima limita o cache a 24 horas.</p>
<p><strong>max-cache-size</strong><br />
Define quanto de memória o cache pode utilizar.</p>
<p><strong>max-cache-size 2G;</strong><br />
Limita a 2 GB a memória RAM que o BIND pode usar para armazenar respostas DNS em cache.</p>
<h3>Validando a configuração</h3>
<pre class="remontti-code"># named-checkconf</pre>
<p>Se nenhum erro for exibido:</p>
<pre class="remontti-code"># systemctl restart named
# systemctl status named --no-pager</pre>
<p>Refaça os testes para ver se ainda está resolvendo nomes:</p>
<pre class="remontti-code"># dig @localhost google.com A</pre>
<p>Algumas coisas que você precisa saber, da saída dig:</p>
<pre class="remontti-code-green">
; &lt;&lt;&gt;&gt; DiG 9.20.23-1~deb13u1-Debian &lt;&lt;&gt;&gt; @localhost google.com A
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 42819
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 9afef403caa37261010000006a5680455e2f7c3f211ca5b7 (good)
;; QUESTION SECTION:
;google.com.			IN	A

;; ANSWER SECTION:
google.com.		31	IN	A	172.217.29.206

;; Query time: 0 msec
;; SERVER: ::1#53(localhost) (UDP)
;; WHEN: Tue Jul 14 15:30:29 -03 2026
;; MSG SIZE  rcvd: 83
</pre>
<p><strong>HEADER</strong>: Ela contém diversas informações a respeito da consulta. </p>
<pre class="remontti-code-green">;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 49083
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 9</pre>
<p>- <strong>status</strong> indica o tratamento de erro nas consultas, sendo eles:<br />
-- <strong>NOERROR</strong>: Nenhum erro encontrado, ou seja, sucesso.<br />
-- <strong>SERVFAIL</strong>: Houve algum problema com o servidor, que não conseguiu processar a query.<br />
-- <strong>NXDOMAIN</strong>: Significa que o domínio pesquisado não existe.<br />
-- <strong>REFUSED</strong>: O servidor rejeitou a solicitação.<br />
-<strong>flags:</strong> indicador das opções de recursividade e de autoridade, em resumo este conjunto de “letrinhas” (aa, rd, ra, etc), indica o estado ligado/desligado <a href="https://www.ietf.org/rfc/rfc1035.txt" rel="noopener" target="_blank">RFC1035</a><br />
-- <strong>qr</strong>: se a mensagem é uma query (0) ou uma resposta (1). Como estamos avaliando somente as respostas, este bit sempre estará ligado (consequentemente, sempre veremos a string “qr” no campo “flags“).<br />
-- <strong>aa</strong>: que o servidor que respondeu à solicitação é autoritativo do domínio.<br />
-- <strong>rd</strong>: indica que o cliente solicitou recursão ao servidor DNS.<br />
-- <strong>ra</strong>: que o servidor que respondeu à requisição suporta consultas recursivas.<br />
-- <strong>tc</strong>: que a mensagem de resposta está truncada.<br />
-- <strong>z</strong>: reservado para uso futuro.<br />
- <strong>contadores</strong>: na mesma linha das flags, encontramos quantos registros foram retornados em cada seção.</p>
<pre class="remontti-code-green">QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 9</pre>
<p><strong>QUESTION </strong><br />
Replica a query que foi enviada para consulta, quando o tipo não é informado, o dig utiliza o registro A por padrão.</p>
<pre class="remontti-code-green">;; QUESTION SECTION:
;google.com.br.                 IN      A</pre>
<p>Outros exemplos:</p>
<pre class="remontti-code"># dig @localhost google.com.br AAAA
# dig @localhost google.com.br MX
# dig @localhost google.com.br NS
# dig @localhost google.com.br TXT
# dig @localhost google.com.br ANY</pre>
<p><strong>ANSWER </strong><br />
Contém a resposta para a consulta que foi enviada.</p>
<pre class="remontti-code-green">;; ANSWER SECTION:
google.com.br.          86400   IN      CAA     0 issue &quot;pki.goog&quot;
google.com.br.          60      IN      SOA     ns1.google.com. dns-admin.google.com. 405356128 900 900 1800 60
google.com.br.          300     IN      AAAA    2800:3f0:4001:819::2003
google.com.br.          300     IN      A       172.217.173.67
google.com.br.          300     IN      MX      0 smtp.google.com.
google.com.br.          300     IN      TXT     &quot;v=spf1 -all&quot;
google.com.br.          2774    IN      NS      ns4.google.com.
google.com.br.          2774    IN      NS      ns2.google.com.
google.com.br.          2774    IN      NS      ns1.google.com.
google.com.br.          2774    IN      NS      ns3.google.com.</pre>
<p><strong>AUTHORITY</strong><br />
Servidores que respondem com “autoridade” pelo domínio (os NS)</p>
<pre class="remontti-code-green">;; AUTHORITY SECTION:
google.com.br.          3599    IN      NS      ns1.google.com.
google.com.br.          3599    IN      NS      ns4.google.com.
google.com.br.          3599    IN      NS      ns3.google.com.
google.com.br.          3599    IN      NS      ns2.google.com.</pre>
<p><strong>ADDITIONAL</strong><br />
Informações auxiliares ou adicionais à pesquisa, no exemplo IPs dos servidores DNS</p>
<pre class="remontti-code-green">;; ADDITIONAL SECTION:
ns1.google.com.         172800  IN      AAAA    2001:4860:4802:32::a
ns2.google.com.         172800  IN      AAAA    2001:4860:4802:34::a
ns3.google.com.         172800  IN      AAAA    2001:4860:4802:36::a
ns4.google.com.         172800  IN      AAAA    2001:4860:4802:38::a
ns1.google.com.         172800  IN      A       216.239.32.10
ns2.google.com.         172800  IN      A       216.239.34.10
ns3.google.com.         172800  IN      A       216.239.36.10
ns4.google.com.         172800  IN      A       216.239.38.10</pre>
<p>Na última parte da saída encontramos mais quatro informações:</p>
<pre class="remontti-code-green">;; Query time: 10 msec
;; SERVER: ::1#53(localhost) (UDP)
;; WHEN: Tue Jul 14 15:30:29 -03 2026
;; MSG SIZE  rcvd: 83</pre>
<p>- <strong>QUERY TIME</strong>: informa quanto tempo a consulta levou. Um resultado de 0 ms significa que ela foi concluída em menos de 1 ms, geralmente por ter sido respondida localmente ou pelo cache.<br />
- <strong>SERVER</strong>: Qual servidor ele realizou a consulta<br />
- <strong>WHEN</strong>:  data e hora em que a consulta foi realizada. O horário exibido é o do próprio servidor, e o valor -03 indica o fuso horário (UTC-3, horário de Brasília).<br />
- <strong>MSG SIZE</strong>: tamanho do pacote </p>
<p>Leitura recomendada: <a href="https://bind9.readthedocs.io/en/stable/reference.html" target="_blank">https://bind9.readthedocs.io/en/stable/reference.html</a></p>
<h4>Comandos do dia a dia</h4>
<p>Para verificar se seu arquivo tem algum erro use o comando named-checkconf (se não retornar nada, está tudo certo):</p>
<pre class="remontti-code"># named-checkconf /etc/bind/named.conf
# named-checkconf /etc/bind/named.conf.options</pre>
<p>Imprime todas as configurações (bem útil para mandar suas conf quando estiver com algum problema lá no grupo do Telegram):</p>
<pre class="remontti-code"># named-checkconf -p</pre>
<p>Reinicie o serviço para que as novas configurações sejam carregadas, e verifique se o mesmo subiu sem erros:</p>
<pre class="remontti-code"># systemctl restart named
# systemctl status named</pre>
<h5>Atualização dos Root Servers</h5>
<p>Não é comum servidores raiz terem alteração, mas pode acontecer, como em 2023. Então caso um dia precise atualizá-los, faça isso:</p>
<pre class="remontti-code"># mv /usr/share/dns/root.hints /usr/share/dns/root.hints.`date +%Y%m%d`
# wget https://www.internic.net/domain/named.root -O /usr/share/dns/root.hints</pre>
<p>Para visualizar a diferença entre os arquivos:</p>
<pre class="remontti-code"># diff /usr/share/dns/root.hints.`date +%Y%m%d` /usr/share/dns/root.hints</pre>
<h5>Desativar IPv6 do bind <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f92c.png" alt="🤬" class="wp-smiley" style="height: 1em; max-height: 1em;" /></h5>
<p>Se por algum motivo precisar desabilitar, faça:</p>
<pre class="remontti-code"># vim /etc/default/named</pre>
<p>Altere <strong>OPTIONS="-u bind"</strong> para:</p>
<pre class="remontti-code-red">OPTIONS=&quot;-4 -u bind&quot;</pre>
<pre class="remontti-code"># vim /etc/bind/named.conf.options</pre>
<p>Altere <strong>listen-on-v6 { any; };</strong> para:</p>
<pre class="remontti-code-red">listen-on-v6 { none; };</pre>
<p>Reinicie o serviço:</p>
<pre class="remontti-code"># systemctl restart named</pre>
<h5>Configurando encaminhadores DNS (forwarders)</h5>
<p>Em alguns casos você pode estar com problema em relação aos servidores raiz, e então querer configurar <strong>forwarders</strong>.<br />
Com essa configuração, o BIND não consulta diretamente os servidores raiz: ele encaminha todas as consultas para os servidores DNS definidos em <b>forwarders</b> e mantém as respostas no cache local.</p>
<pre class="remontti-code"># vim /etc/bind/named.conf.options</pre>
<p>Adicione dentro do bloco <code>options { ... };</code>:</p>
<pre class="remontti-code-plain">...
recursion yes;
forward only;
forwarders {
        // Cloudflare
        1.1.1.1;
        1.0.0.1;
        2606:4700:4700::1111;
        2606:4700:4700::1001;

        // Google
        8.8.8.8;
        8.8.4.4;
        2001:4860:4860::8888;
        2001:4860:4860::8844;
};
...
</pre>
<p><code>recursion yes;</code> habilita a resolução recursiva, permitindo que o BIND busque a resposta completa em nome do cliente.<br />
<code>forward only</code>, caso todos os encaminhadores falhem, o BIND não tentará resolver a consulta diretamente pelos servidores raiz.</p>
<h3>Protegendo o servidor</h3>
<p>Seu DNS recursivo já está configurado. Como este servidor será utilizado apenas para esse serviço, vamos aplicar regras no nftables para restringir o acesso às portas expostas, principalmente à porta 53.</p>
<pre class="remontti-code"># vim /etc/nftables.conf</pre>
<p>Na seção <strong>elements</strong>, substitua os endereços de exemplo pelos IPs e prefixos que terão permissão de acesso. O modelo também inclui regras de proteção para o SSH e para o agente do Zabbix.</p>
<pre class="remontti-code-plain">
#!/usr/sbin/nft -f

flush ruleset

# Portas acessíveis somente pelas redes do NOC 22 SSH / 10050 Zabbix
define PORTAS_RESTRITAS_TCP = { 22, 10050 }

# Porta do serviço DNS
define PORTA_DNS = 53

table inet filter {

    # Redes do NOC: acesso administrativo, ping e DNS
    set REDE_NOC4 {
        type ipv4_addr;
        flags interval;
        elements = { 192.168.0.0/24, 255.9.0.0/26 };
    }

    set REDE_NOC6 {
        type ipv6_addr;
        flags interval;
        elements = { 2559:ffff:f0da::/48 };
    }

    # Redes autorizadas a utilizar o DNS
    set REDE_CLIENTES4 {
        type ipv4_addr;
        flags interval;
        elements = {
            10.0.0.0/8,
            172.16.0.0/12,
            192.168.0.0/16,
            100.64.0.0/10,
            255.9.0.0/22
        };
    }

    set REDE_CLIENTES6 {
        type ipv6_addr;
        flags interval;
        elements = {
            fc00::/7,
            fe80::/10,
            2559:ffff::/32
        };
    }

    chain input {
        type filter hook input priority 0;
        policy drop;

        # Descarta pacotes inválidos
        ct state invalid counter drop

        # Permite conexões já estabelecidas ou relacionadas
        ct state established,related counter accept

        # Permite a comunicação interna do próprio servidor
        iifname &quot;lo&quot; counter accept

        # ICMPv4 necessário para erros e PMTU
        meta l4proto icmp icmp type {
            destination-unreachable,
            time-exceeded,
            parameter-problem
        } counter accept

        # Ping IPv4 somente pelas redes do NOC e CLIENTES
        ip saddr @REDE_NOC4 meta l4proto icmp icmp type echo-request counter accept
        ip saddr @REDE_CLIENTES4 meta l4proto icmp icmp type echo-request counter accept

        # ICMPv6 essencial para NDP, RA, PMTU e erros IPv6
        meta l4proto ipv6-icmp icmpv6 type {
            destination-unreachable,
            packet-too-big,
            time-exceeded,
            parameter-problem,
            echo-reply,
            nd-router-solicit,
            nd-router-advert,
            nd-neighbor-solicit,
            nd-neighbor-advert
        } counter accept

        # Ping IPv6 somente pelas redes do NOC e CLIENTES
        ip6 saddr @REDE_NOC6 meta l4proto ipv6-icmp icmpv6 type echo-request counter accept
        ip6 saddr @REDE_CLIENTES6 meta l4proto ipv6-icmp icmpv6 type echo-request counter accept

        # SSH e Zabbix Agent somente pelas redes do NOC
        ip saddr @REDE_NOC4 tcp dport $PORTAS_RESTRITAS_TCP counter accept
        ip6 saddr @REDE_NOC6 tcp dport $PORTAS_RESTRITAS_TCP counter accept

        # DNS TCP e UDP somente para as redes autorizadas
        ip saddr @REDE_CLIENTES4 meta l4proto { tcp, udp } th dport $PORTA_DNS counter accept
        ip6 saddr @REDE_CLIENTES6 meta l4proto { tcp, udp } th dport $PORTA_DNS counter accept
    }

    chain forward {
        type filter hook forward priority 0;
        policy drop;
    }

    chain output {
        type filter hook output priority 0;
        policy accept;
    }
}
</pre>
<p>Teste: </p>
<pre class="remontti-code"># nft -c -f /etc/nftables.conf</pre>
<p>Se nenhum erro for exibido, reinicie o serviço para aplicar as regras.</p>
<p>Ative o nftables para iniciar automaticamente junto com o sistema e reinicie o serviço para aplicar as regras:</p>
<pre class="remontti-code"># systemctl enable nftables
# systemctl restart nftables</pre>
<p><strong>Atenção</strong>: antes de reiniciar o firewall, tenha acesso ao console do servidor. Se perder o acesso, alguma regra foi configurada incorretamente.</p>
<p>Para verificar se as regras foram carregadas corretamente, execute:</p>
<pre class="remontti-code"># nft list ruleset</pre>
<p>O post <a href="https://blog.remontti.com.br/8358">Servidor DNS #1 &#8211; Recursivo com BIND 9.20 no Debian 13 (Trixie)</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/8358/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Automatizando o bloqueio de sites no Brasil pelo DNS usando a API da anablock.net.br (BIND9+RPZ)</title>
		<link>https://blog.remontti.com.br/7759</link>
					<comments>https://blog.remontti.com.br/7759#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Mon, 22 Jan 2024 17:58:23 +0000</pubDate>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[Anablock]]></category>
		<category><![CDATA[Anatel]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[bind]]></category>
		<category><![CDATA[Bloqueio de Domínios]]></category>
		<category><![CDATA[Certificado SSL]]></category>
		<category><![CDATA[Configuração de DNS]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[Domínios Bloqueados]]></category>
		<category><![CDATA[Página de Bloqueio]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[rpz]]></category>
		<category><![CDATA[servidor dns]]></category>
		<category><![CDATA[Servidor WEB]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[Zona de Política de Resposta DNS.]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=7759</guid>

					<description><![CDATA[<p>Neste tutorial, abordaremos a configuração de uma Zona de Política de Resposta DNS (RPZ) com o objetivo de simplificar a resolução de nomes alterados, especialmente quando lidamos com escalas substanciais. Nosso objetivo é bloquear&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/7759">Automatizando o bloqueio de sites no Brasil pelo DNS usando a API da anablock.net.br (BIND9+RPZ)</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2024/01/brasil-anatel-bloquei-site-anablock.png" alt="" width="1787" height="1024" class="alignnone size-full wp-image-7770" srcset="https://blog.remontti.com.br/wp-content/uploads/2024/01/brasil-anatel-bloquei-site-anablock.png 1787w, https://blog.remontti.com.br/wp-content/uploads/2024/01/brasil-anatel-bloquei-site-anablock-300x172.png 300w, https://blog.remontti.com.br/wp-content/uploads/2024/01/brasil-anatel-bloquei-site-anablock-1024x587.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2024/01/brasil-anatel-bloquei-site-anablock-768x440.png 768w, https://blog.remontti.com.br/wp-content/uploads/2024/01/brasil-anatel-bloquei-site-anablock-1536x880.png 1536w" sizes="(max-width: 1787px) 100vw, 1787px" /></p>
<p>Neste tutorial, abordaremos a configuração de uma Zona de Política de Resposta DNS (RPZ) com o objetivo de simplificar a resolução de nomes alterados, especialmente quando lidamos com escalas substanciais. Nosso objetivo é bloquear milhares de domínios de forma eficiente, minimizando o consumo de recursos de hardware em nosso servidor.</p>
<p>Não abordarei a instalação do BIND neste momento, pois já disponibilizamos um tutorial completo em nosso blog, que pode ser acessado através do seguinte link:<br />
<a href="https://blog.remontti.com.br/5958" rel="noopener" target="_blank">Servidor DNS Bind9 (Debian 12)</a>. </p>
<p>Para configurar sempre que um domínio bloqueado for resolvido pelo seu DNS em um IP da sua rede, você precisará criar um subdomínio no seu servidor DNS autoritativo. No arquivo de configuração dos seus hosts irei criar um subdomínio chamado bloqueadonobrasil, vejamos um exemplo: </p>
<pre class="remontti-code"># vim /var/cache/bind/master-aut/remontti.com.br/remontti.com.br.hosts</pre>
<p>Exemplo &#8220;<strong>bloqueadonobrasil</strong>&#8220;, ou então apontando para os IPs de localhost mesmo 127.0.0.1 e ::1 onde neste caso se o usuário acessar o domínio bloqueado simplesmente não irá abrir nada.</p>
<pre class="remontti-code-plain">//...
bloqueadonobrasil       A       x.xx.xxx.x
                        AAAA    xxxx:xxxx:xxxx::y
//...</pre>
<h4>DNS PRIMÁRIO (MASTER)</h4>
<p>Agora crie uma zona chamada <strong>rpz.zone</strong> em seu /etc/bind/named.conf.local. em <strong>allow-transfer</strong> e <strong>also-notify</strong> informe os IPs de seus servidores Slaves.</p>
<pre class="remontti-code"># vim /etc/bind/named.conf.local</pre>
<pre class="remontti-code-plain">zone &quot;rpz.zone&quot; {
        type master;
        file &quot;/var/cache/bind/rpz/db.rpz.zone.hosts&quot;;
        allow-query { none; };
        allow-transfer { 10.51.51.3; };
        also-notify { 10.51.51.3; };
};
</pre>
<p>Vamos criar o diretório &#8220;rpz&#8221; e os arquivos de hosts que serão bloqueados.</p>
<pre class="remontti-code"># mkdir /var/cache/bind/rpz/</pre>
<p>Criarei um atalho em /etc/bind para facilitar o acesso da pastar também.</p>
<pre class="remontti-code"># ln -s /var/cache/bind/rpz/ /etc/bind/rpz</pre>
<p>Entendendo como os domínios são bloqueados. A seguir, apresentamos um exemplo do arquivo que servirá como base para o nosso próximo script a seguir:<br />
Nome do arquivo: <strong>/var/cache/bind/rpz/db.rpz.zone.hosts</strong></p>
<pre class="remontti-code-plain">$TTL 1H
@       IN      SOA LOCALHOST. bloqueadonobrasil.remontti.com.br. (
                2024012201      ; Serial  
                1h              ; Refresh
                15m             ; Retry
                30d             ; Expire 
                2h              ; Negative Cache TTL
        )
        NS  bloqueadonobrasil.remontti.com.br.
;       ou
;       NS  localhost.
 
sitequeprecisabloquear.com     IN CNAME .
*.sitequeprecisabloquear.com   IN CNAME .
elesmandamnosfaz.bo.bo         IN CNAME .
*.elesmandamnosfaz.bo.bo       IN CNAME .</pre>
<p>Sendo que para cada domínio que será bloqueado, o mesmo será adicionado:</p>
<pre class="remontti-code-plain">
sitequeprecisabloquear.com        IN CNAME .
*.sitequeprecisabloquear.com      IN CNAME .</pre>
<p>Assim qualquer subdomínio (*).domino.com seja traduzido sempre irá ser apontado para seu IP ou localhost.</p>
<p>Antes de criar o script, ajuste o response-policy dentro do seu <strong>/etc/bind/named.conf.options</strong></p>
<pre class="remontti-code"># vim /etc/bind/named.conf.options</pre>
<p>Deve ficar dentro de <strong>options { &#8230; }</strong> adcione: </p>
<pre class="remontti-code-plain">options {
//...
    response-policy {
      zone &quot;rpz.zone&quot; policy CNAME bloqueadonobrasil.remontti.com.br;
    };
//...</pre>
<p>Ou se você irá apontar para localhost use:</p>
<pre class="remontti-code-plain">options {
//...
    response-policy {
      zone &quot;rpz.zone&quot; policy CNAME localhost;
    };
//...</pre>
<h4>Script AnaBlock</h4>
<p>Para simplificar nossa tarefa, criaremos um script que utiliza o site <a href="https://anablock.net.br" rel="noopener" target="_blank"><strong>https://anablock.net.br</strong></a>, uma plataforma desenvolvida por <a href="http://www.patrickbrandao.com" rel="noopener" target="_blank"><strong>Patrick Brandão</strong></a> da <a href="https://www.nuva.com.br" rel="noopener" target="_blank"><strong>Nuva</strong></a>. Ele projetou uma página abrangente que oferece todas as informações necessárias para acompanhar os bloqueios de conteúdo regulados pela Anatel e pelas autoridades da República Federativa do Brasil.</p>
<p>Porém ANATEL solicitou a remoção dessa lista:<br />
<img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2024/01/ana.png" alt="" width="903" height="528" class="alignnone size-full wp-image-7983" srcset="https://blog.remontti.com.br/wp-content/uploads/2024/01/ana.png 903w, https://blog.remontti.com.br/wp-content/uploads/2024/01/ana-300x175.png 300w, https://blog.remontti.com.br/wp-content/uploads/2024/01/ana-768x449.png 768w" sizes="(max-width: 903px) 100vw, 903px" /></p>
<p>Para liberação da lista você deve entrar em contato com <a href="http://www.patrickbrandao.com/?#contact" rel="noopener" target="_blank"><strong>Patrick Brandão</strong></a></p>
<p>Crie um diretório onde iremos salvar nosso script: </p>
<pre class="remontti-code"># mkdir /etc/bind/scripts</pre>
<p>Subi meu script no <a href="https://github.com/remontti/anablock_bind9" rel="noopener" target="_blank">Github</a>, mas iremos entrar na nossa pasta /etc/bind/scripts e baixar ele direto para nosso servidor.</p>
<pre class="remontti-code"># cd /etc/bind/scripts
# wget https://raw.githubusercontent.com/remontti/anablock_bind9/main/anablock_bind9.py</pre>
<p>Esse scrip ira verificar verificar qual sua <strong><a href="https://api.anablock.net.br/api/version" rel="noopener" target="_blank">versão</a></strong> e sempre que existir uma nova ou se for sua primeira vez ele irá baixar a <strong><a href="https://api.anablock.net.br/api/domain/all" rel="noopener" target="_blank">lista de todos os domínios</a></strong> e cria o arquivo <strong>db.rpz.zone.hosts</strong> com a lista completa de siste que serão bloqueados pelo seu DNS.</p>
<p>Script foi feito em python3 instale os pacotes necessários para executa-lo.</p>
<pre class="remontti-code"># apt install python3 python3-requests tree</pre>
<p>Execute o script:</p>
<pre class="remontti-code"># python3 /etc/bind/scripts/anablock_bind9.py bloqueadonobrasil.remontti.com.br</pre>
<pre class="remontti-code-plain">Arquivo de zona RPZ atualizado.
Permissões do diretório alteradas com sucesso.
Serviço Bind9 reiniciado com sucesso.</pre>
<pre class="remontti-code"># tree -h /var/cache/bind/rpz/</pre>
<p>Seu diretório terá os seguintes arquivos</p>
<pre class="remontti-code-plain">/var/cache/bind/rpz/
├── [159K]  db.rpz.zone.hosts
├── [ 46K]  domain_all
└── [  11]  version</pre>
<p>Se você executar o script novamente nada irá acontecer até que uma nova versão seja lancada.</p>
<p>Para que tenhamos nossa lista sempre atualizada, colocamos o script para ser executado todos os dias a meia noite.</p>
<pre class="remontti-code"># echo &#039;00 00   * * *   root    python3 /etc/bind/scripts/anablock_bind9.py bloqueadonobrasil.remontti.com.br&#039;\ &gt;&gt; /etc/crontab
# systemctl restart cron</pre>
<h3>Testes</h3>
<p>Agora faça um teste para ver o que seu servidor ira traduzir corretamente:</p>
<pre class="remontti-code"># dig 2filmestorrent.top @localhost</pre>
<pre class="remontti-code-plain">; &lt;&lt;&gt;&gt; DiG 9.11.5-P4-5.1+deb10u9-Debian &lt;&lt;&gt;&gt; 2filmestorrent.top @localhost
;; global options: +cmd
;; Got answer:
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 42124
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: be484fb71dfe219dd9e6544465ae7d4b7e142ef750ed0d80 (good)
;; QUESTION SECTION:
;2filmestorrent.top.		IN	A

;; ANSWER SECTION:
2filmestorrent.top.	5	IN	CNAME	bloqueadonobrasil.remontti.com.br.
bloqueadonobrasil.remontti.com.br. 10800	IN A	x.x.x.x

;; Query time: 479 msec
;; SERVER: ::1#53(::1)
;; WHEN: seg jan 22 11:35:55 -03 2024
;; MSG SIZE  rcvd: 137
</pre>
<h4>DNS SECUNDÁRIO's (SLAVE's)</h4>
<p>Agora crie uma entrada zona chamada <strong>rpz.zone</strong> em seu /etc/bind/named.conf.local. em <strong>masters</strong> e <strong>also-notify</strong> informe os IPs de seus servidores Master.</p>
<pre class="remontti-code"># vim /etc/bind/named.conf.local</pre>
<pre class="remontti-code-plain">zone &quot;rpz.zone&quot; {
    type slave;
    file &quot;/var/cache/bind/rpz/db.rpz.zone.hosts&quot;;
    masters { 10.51.51.2; };
    allow-notify { 10.51.51.2; };
};</pre>
<p>Configure o <strong>response-policy</strong></p>
<pre class="remontti-code"># vim /etc/bind/named.conf.options</pre>
<p>Deve ficar dentro de <strong>options { ... }</strong> adcione: </p>
<pre class="remontti-code-plain">options {
//...
    response-policy {
      zone &quot;rpz.zone&quot; policy CNAME bloqueadonobrasil.remontti.com.br;
      // ou
      // zone &quot;rpz.zone&quot; policy CNAME localhost;
      // 
    };
//...</pre>
<p>Crie o diretório, de permissão, e reinicie o bind.</p>
<pre class="remontti-code"># mkdir /var/cache/bind/rpz/
# chown bind: /var/cache/bind/rpz/ -R
# systemctl restart bind9</pre>
<p>Arquivo db.rpz.zone.hosts será criado dentro de /var/cache/bind/rpz/</p>
<pre class="remontti-code"># tree /var/cache/bind/rpz/</pre>
<pre class="remontti-code-plain">/var/cache/bind/rpz/
└── db.rpz.zone.hosts</pre>
<h3>Configurando uma Página de Bloqueio em Seu Servidor Web</h3>
<p>Vou deixar exemplo com fazer isso em um <strong>Apache</strong>.Crie o diretório onde iremos criar nossa página:</p>
<pre class="remontti-code"># mkdir /var/www/bloqueadonobrasil</pre>
<h4>Apache</h4>
<p>Crie o arquivo de configuração do apache.</p>
<pre class="remontti-code"># vim /etc/apache2/sites-available/bloqueadonobrasil.conf</pre>
<pre class="remontti-code-plain">&lt;virtualhost *:80&gt;
        Protocols h2 http/1.1
        ServerName bloqueadonobrasil.remontti.net.br
        ServerAlias x.xxx.xxx.x
        ServerAlias [xxxx:xxxx:xxxx:xxxx::x]

        ServerAdmin noc@remontti.com.br

        ErrorDocument 404 /index.php
 
        DocumentRoot /var/www/bloqueadonobrasil
 
        &lt;Directory /var/www/bloqueadonobrasil/&gt;
            Options FollowSymLinks
            AllowOverride All
            # Restringe o acesso apenas para os IPs do seu ISP
            Require ip 127.0.0.1 ::1 100.64.0.0/10 x.xx.xxx.x/22 xxxx:xxxx::/32
        &lt;/Directory&gt;
 
        LogLevel warn 
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
&lt;/virtualhost&gt;</pre>
<p>Habilite a configuração e reinicie o Apache</p>
<pre class="remontti-code"># a2ensite bloqueadonobrasil.conf
# systemctl restart apache2</pre>
<p>Instale o certbot para gerar um certificado ssl para o domínio</p>
<pre class="remontti-code"># apt install certbot python3-certbot-apache</pre>
<p>Execute:</p>
<pre class="remontti-code"># certbot</pre>
<p>Selecione seu domínio, e em sguinda reponda com <strong>No redirect</strong></p>
<pre class="remontti-code-plain">Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: remontti.com.br
2: bloqueadonobrasil.remontti.com.br

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter &#039;c&#039; to cancel): 2 &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for bloqueadonobrasil.remontti.com.br
Waiting for verification...
Cleaning up challenges
Created an SSL vhost at /etc/apache2/sites-available/bloqueadonobrasil-le-ssl.conf
Deploying Certificate to VirtualHost /etc/apache2/sites-available/bloqueadonobrasil-le-ssl.conf
Enabling available site: /etc/apache2/sites-available/bloqueadonobrasil-le-ssl.conf

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you&#039;re confident your site works on HTTPS. You can undo this
change by editing your web server&#039;s configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press &#039;c&#039; to cancel): 1 &lt;&lt;&lt;&lt;&lt;</pre>
<p>Agora vou deixar um exemplo de página para ajudar você:</p>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2024/01/anablock-page.png" alt="" width="1513" height="744" class="alignnone size-full wp-image-7765" srcset="https://blog.remontti.com.br/wp-content/uploads/2024/01/anablock-page.png 1513w, https://blog.remontti.com.br/wp-content/uploads/2024/01/anablock-page-300x148.png 300w, https://blog.remontti.com.br/wp-content/uploads/2024/01/anablock-page-1024x504.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2024/01/anablock-page-768x378.png 768w" sizes="auto, (max-width: 1513px) 100vw, 1513px" /></p>
<p>Vamos excluir o diretório que foi criado, já que estou prestes a baixar minha página, que, ao ser descompactada, conterá o mesmo nome.</p>
<pre class="remontti-code"># rm -rf /var/www/bloqueadonobrasil/
# cd /var/www/
# wget https://github.com/remontti/anablock_bind9/raw/main/bloqueadonobrasil.tar.gz
# tar -vxzf bloqueadonobrasil.tar.gz
# rm bloqueadonobrasil.tar.gz</pre>
<p><strong>Gostou? Se quiser apoiar o blog e fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!</strong><br />
<a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></p>
<p>Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p>Abraço!</p>
<p>O post <a href="https://blog.remontti.com.br/7759">Automatizando o bloqueio de sites no Brasil pelo DNS usando a API da anablock.net.br (BIND9+RPZ)</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/7759/feed</wfw:commentRss>
			<slash:comments>22</slash:comments>
		
		
			</item>
		<item>
		<title>Guia passo a passo para instalação do phpIPAM, um Software de Gerenciamento de Endereços IP</title>
		<link>https://blog.remontti.com.br/2401</link>
					<comments>https://blog.remontti.com.br/2401#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Mon, 12 Jun 2023 15:40:55 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[administração]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[aplicação]]></category>
		<category><![CDATA[Código Aberto]]></category>
		<category><![CDATA[Configuração]]></category>
		<category><![CDATA[configuração de endereços IPs]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[debain]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[documentação]]></category>
		<category><![CDATA[endereços IPs]]></category>
		<category><![CDATA[ferramenta]]></category>
		<category><![CDATA[gerenciamento]]></category>
		<category><![CDATA[gerenciamento de IP]]></category>
		<category><![CDATA[gerenciamento de rede]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[instalaçao]]></category>
		<category><![CDATA[instalação do phpIPAM]]></category>
		<category><![CDATA[ip]]></category>
		<category><![CDATA[IPAM]]></category>
		<category><![CDATA[ipv4]]></category>
		<category><![CDATA[ipv6]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[MariaDB]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[php7]]></category>
		<category><![CDATA[phpIPAM]]></category>
		<category><![CDATA[rede]]></category>
		<category><![CDATA[servidor de DHCP]]></category>
		<category><![CDATA[servidor dns]]></category>
		<category><![CDATA[Servidor WEB]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[tutorial banco de dados]]></category>
		<category><![CDATA[tutorial de configuração]]></category>
		<category><![CDATA[tutorial de gerenciamento]]></category>
		<category><![CDATA[tutorial de instalação]]></category>
		<category><![CDATA[tutorial Debian]]></category>
		<category><![CDATA[tutorial MariaDB.]]></category>
		<category><![CDATA[tutorial MySQL]]></category>
		<category><![CDATA[tutorial passo a passo]]></category>
		<category><![CDATA[tutorial phpIPAM]]></category>
		<category><![CDATA[tutorial servidor web]]></category>
		<category><![CDATA[tutorial software de gerenciamento]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=2401</guid>

					<description><![CDATA[<p>O phpIPAM é um aplicação de gerenciamento de endereço IPs de código aberto (IPAM). Seu objetivo é fornecer gerenciamento de endereços IP leve, moderno e útil. É uma aplicação baseada em php com backend&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/2401">Guia passo a passo para instalação do phpIPAM, um Software de Gerenciamento de Endereços IP</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><center><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian.jpg" alt="" width="720" height="340" class="alignnone size-full wp-image-7493" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian.jpg 720w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian-300x142.jpg 300w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian-520x245.jpg 520w" sizes="auto, (max-width: 720px) 100vw, 720px" /></center></p>
<p>O phpIPAM é um aplicação de gerenciamento de endereço IPs de código aberto (IPAM). Seu objetivo é fornecer gerenciamento de endereços IP leve, moderno e útil. É uma aplicação baseada em php com backend de banco de dados MySQL/MariaDB, usando bibliotecas jQuery, ajax e recursos HTML5 / CSS3.</p>
<p><strong><font color="red">Recomendado Debian 12 Bookworm:</font></strong><br />
1 &#8211; <a href="https://blog.remontti.com.br/7236" rel="noopener noreferrer" target="_blank">Debian 12 Bookworm / Instalação Limpa</a><br />
2.a &#8211; <a href="https://blog.remontti.com.br/7460" rel="noopener" target="_blank">Servidor WEB NGINX + PHP 8.2 + MariaDB + phpMyAdmin</a><br />
2.b &#8211; <a href="https://blog.remontti.com.br/7496" rel="noopener" target="_blank">Servidor WEB Apache2 + PHP 8.2 + MariaDB + phpMyAdmin</a><br />
<font size="2"><b><em>phpMyAdmin é opcional</em></b></font></p>
<p><strong><font color="red">Recomendado Debian 11 Bullseye:</font></strong><br />
1- <a href="https://blog.remontti.com.br/5792" rel="noopener noreferrer" target="_blank">Debian 11 Bullseye / Instalação Limpa</a><br />
2- <a href="https://blog.remontti.com.br/5893" rel="noopener noreferrer" target="_blank">Servidor WEB Apache2 + PHP7.4 + MariaDB + phpMyAdmin</a><br />
<font size="2"><b><em>phpMyAdmin é opcional</em></b></font></p>
<p><strong><font color="red">Recomendado Debian 10 Stretch:</font></strong><br />
1- <a href="https://blog.remontti.com.br/2966" rel="noopener noreferrer" target="_blank">Debian 10 Stretch / Instalação Limpa</a><br />
2.a &#8211; <a href="https://blog.remontti.com.br/3006" rel="noopener noreferrer" target="_blank">Servidor WEB Apache2 + PHP7.3 + MariaDB + phpMyAdmin</a><br />
2.b &#8211; <a href="https://blog.remontti.com.br/5465" rel="noopener" target="_blank">Servidor WEB NGINX + PHP7.3 + MariaDB + phpMyAdmin</a><br />
<font size="2"><b><em>phpMyAdmin é opcional</em></b></font></p>
<p><strong><font color="red">Recomendado Debian 9 Buster:</font></strong><br />
<a href="https://blog.remontti.com.br/1152" rel="noopener noreferrer" target="_blank">Instalação Limpa Debian 9 Buster</a><br />
<a href="https://blog.remontti.com.br/2024" rel="noopener noreferrer" target="_blank">Servidor web Apache2, PHP 7.0, MariaDB, PHPMyAdmin</a><br />
<font size="2"><b><em>phpMyAdmin é opcional</em></b></font></p>
<p>Após instalação do servidor WEB+MariaDB, vamos criar nossa base de dados para o phpipam</p>
<pre class="remontti-code"># mariadb -p</pre>
<pre class="remontti-code">
CREATE DATABASE phpipam;
GRANT ALL PRIVILEGES ON phpipam.* TO &#039;phpipam&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;SUA_SENHA&#039;;
FLUSH PRIVILEGES;
quit;</pre>
<p>Download phpIPAM<br />
Instalação estável: (Nesta data é 1.5.2) <a href="https://github.com/phpipam/phpipam/releases" rel="noopener noreferrer" target="_blank">https://github.com/phpipam/phpipam/releases</a> </p>
<pre class="remontti-code"># cd /tmp
# wget https://github.com/phpipam/phpipam/releases/download/v1.5.2/phpipam-v1.5.2.tgz
# tar vxf phpipam-v1.5.2.tgz
# mv phpipam /var/www/html/phpipam
&lt;pre&gt;# cd /var/www/html/phpipam</pre>
<p>Agora precisamos inserir os dados para o phpipam conectar ao banco de dados. Primeiro copie config.dist.php para config.php e insira os detalhes necessários.</p>
<pre class="remontti-code"># cp config.dist.php config.php
# vim config.php</pre>
<p>Encontre a linha <em>$db['pass'] = 'phpipamadmin';</em> e altere para sua senha, caso tenha utilizado outro usuário e nome de base altere também.</p>
<pre class="remontti-code">
...
$db[&#039;host&#039;] = &quot;localhost&quot;;
$db[&#039;user&#039;] = &quot;phpipam&quot;;
$db[&#039;pass&#039;] = &quot;SUA_SENHA&quot;;
$db[&#039;name&#039;] = &quot;phpipam&quot;;
...</pre>
<p>Se estas utilizando debian 12, sua versão do php é a 8.2 que na versão atual 1.5.2 ainda parece não ter sido testado, para resolver entre no diretório do phpipam e adicione <strong>$allow_untested_php_versions=true;</strong> ao final do arquivo:</p>
<pre class="remontti-code"># cd /var/www/html/phpipam
# echo &#039;$allow_untested_php_versions=true;&#039; &gt;&gt; config.php</pre>
<p>Além disso, nós extraímos o diretório do phpipam fora pasta raiz (/var/www/html), será necessário definir isso (<em>define('BASE', "/");</em>) em config.php, se você colocou no diretório raiz ou configurou um <a href="https://blog.remontti.com.br/3464" rel="noopener noreferrer" target="_blank">domínio virtual (recomendo)</a> para o phpipam não é necessário :</p>
<pre class="remontti-code"># vim config.php</pre>
<p>Altere :</p>
<pre class="remontti-code-plain">define(&#039;BASE&#039;, &quot;/&quot;);</pre>
<p>para:</p>
<pre class="remontti-code-plain">define(&#039;BASE&#039;, &quot;/phpipam/&quot;);</pre>
<p>Instale a extensão gmp do php que é necessária para o funcionamento do phpipam e restarte o apache ou nginx de acordo com seu servidor.</p>
<pre class="remontti-code"># apt install php-gmp -y
# systemctl restart apache2
ou
# systemctl restart nginx</pre>
<p>Agora acesse seu servidor em seu navegado: http://ip-server.ou.dominio/phpipam/</p>
<p>Clique em <strong>[New phpipam installation]</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_1.png" data-rel="lightbox-gallery-2PLNeMli" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_1.png" alt="" width="1280" height="709" class="alignnone size-full wp-image-7482" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_1.png 1280w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_1-300x166.png 300w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_1-1024x567.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_1-768x425.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" /></a></p>
<p>Clique em <strong>[Automatic database installation]</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_2.png" data-rel="lightbox-gallery-2PLNeMli" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_2.png" alt="" width="1280" height="832" class="alignnone size-full wp-image-7483" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_2.png 1280w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_2-300x195.png 300w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_2-1024x666.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_2-768x499.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" /></a></p>
<p>Entre com seu usuario: phpipam e senha senha de conexão do banco de dados (SUA_SENHA), clique em [Show advanced options], e <strong>DESMARQUE</strong> as opções: <strong>Create new database</strong> e <strong>Set permissions to tables</strong> e após em <strong>[Install phpipam database]</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_3.png" data-rel="lightbox-gallery-2PLNeMli" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_3.png" alt="" width="1280" height="878" class="alignnone size-full wp-image-7484" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_3.png 1280w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_3-300x206.png 300w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_3-1024x702.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_3-768x527.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" /></a></p>
<p>Uma mensagem "<strong>Database installed successfully!</strong>" será exibida, informado que o banco de dados foi criado com sucesso. Clique em <strong>[Continue]</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_4.png" data-rel="lightbox-gallery-2PLNeMli" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_4.png" alt="" width="1280" height="940" class="alignnone size-full wp-image-7485" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_4.png 1280w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_4-300x220.png 300w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_4-1024x752.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_4-768x564.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" /></a>  </p>
<p>Defina a senha do usuário admin, e clique em <strong>[Save settings]</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_5.png" data-rel="lightbox-gallery-2PLNeMli" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_5.png" alt="" width="1280" height="709" class="alignnone size-full wp-image-7486" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_5.png 1280w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_5-300x166.png 300w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_5-1024x567.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_5-768x425.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" /></a></p>
<p>Uma mensagem <strong>"Settings updated, installation complete!"</strong> informado que a instalação foi completada! Clique em [<strong>Procced to login</strong>]<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_6.png" data-rel="lightbox-gallery-2PLNeMli" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_6.png" alt="" width="1280" height="798" class="alignnone size-full wp-image-7487" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_6.png 1280w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_6-300x187.png 300w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_6-1024x638.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_6-768x479.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" /></a></p>
<p>Entre com o usuário admin e sua senha:<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_7.png" data-rel="lightbox-gallery-2PLNeMli" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_7.png" alt="" width="1280" height="709" class="alignnone size-full wp-image-7488" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_7.png 1280w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_7-300x166.png 300w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_7-1024x567.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_7-768x425.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" /></a></p>
<p>Prontinho para seu uso!<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_8.png" data-rel="lightbox-gallery-2PLNeMli" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_8.png" alt="" width="1280" height="1387" class="alignnone size-full wp-image-7489" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_8.png 1280w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_8-277x300.png 277w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_8-945x1024.png 945w, https://blog.remontti.com.br/wp-content/uploads/2018/05/phpipam_debian_12_8-768x832.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" /></a></p>
<p>Gostou?</p>
<p><strong>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!</strong></p>
<p><a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></p>
<p>Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p>Abraço!</p>
<p>O post <a href="https://blog.remontti.com.br/2401">Guia passo a passo para instalação do phpIPAM, um Software de Gerenciamento de Endereços IP</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/2401/feed</wfw:commentRss>
			<slash:comments>40</slash:comments>
		
		
			</item>
	</channel>
</rss>
