<?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 proxy-cache - Remontti</title>
	<atom:link href="https://blog.remontti.com.br/tag/proxy-cache/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.remontti.com.br/tag/proxy-cache</link>
	<description>rudimar@remontti</description>
	<lastBuildDate>Fri, 23 Aug 2024 13:04:58 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://blog.remontti.com.br/wp-content/uploads/2024/09/icone-rr-80x80.png</url>
	<title>Arquivos proxy-cache - Remontti</title>
	<link>https://blog.remontti.com.br/tag/proxy-cache</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Instalação do Nginx Proxy Manager</title>
		<link>https://blog.remontti.com.br/6561</link>
					<comments>https://blog.remontti.com.br/6561#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Sat, 18 Jun 2022 19:07:54 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[administração web]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[autenticação HTTP]]></category>
		<category><![CDATA[cgnat]]></category>
		<category><![CDATA[configuração de rede]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debian 11]]></category>
		<category><![CDATA[Debian 12]]></category>
		<category><![CDATA[Debian 12 Bookworm]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[Docker Compose]]></category>
		<category><![CDATA[gerenciamento de certificados]]></category>
		<category><![CDATA[instalação de software]]></category>
		<category><![CDATA[letsencrypt]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[Nginx Proxy Manager]]></category>
		<category><![CDATA[otimização de servidor]]></category>
		<category><![CDATA[proxy reverso]]></category>
		<category><![CDATA[proxy-cache]]></category>
		<category><![CDATA[segurança de aplicação]]></category>
		<category><![CDATA[SSL grátis]]></category>
		<category><![CDATA[tutorial de tecnologia]]></category>
		<category><![CDATA[webserver]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=6561</guid>

					<description><![CDATA[<p>O que é o Nginx Proxy Manager? É um sistema que possui uma interface web limpa, eficiente e fácil de configurar, sem precisar saber muito sobre Nginx ou Letsencrypt. Característica &#8211; Interface de administração&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/6561">Instalação do Nginx Proxy Manager</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/2022/06/nginx_proxy_manager_cover.png" alt="" width="720" height="340" class="alignnone size-full wp-image-6588" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_cover.png 720w, https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_cover-300x142.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_cover-520x245.png 520w" sizes="(max-width: 720px) 100vw, 720px" /></p>
<p>O que é o <a href="https://nginxproxymanager.com/guide/#project-goal"><strong>Nginx Proxy Manager</strong></a>?<br />
É um sistema que possui uma interface web limpa, eficiente e fácil de configurar, sem precisar saber muito sobre Nginx ou Letsencrypt.</p>
<p><b>Característica</b><br />
 &#8211; Interface de administração bonita e segura baseada<br />
 &#8211; Crie facilmente domínios de encaminhamento, redirecionamentos, streams e hosts 404 sem saber nada sobre Nginx<br />
 &#8211; SSL grátis usando Let&#8217;s Encrypt ou forneça seus próprios certificados SSL personalizados<br />
 &#8211; Listas de acesso e autenticação HTTP básica para seus hosts<br />
 &#8211; Configuração avançada do Nginx disponível para superusuários<br />
 &#8211; Gerenciamento de usuários, permissões e log de auditoria</p>
<p><strong>Distribuição testadas:</strong><br />
<a href="https://blog.remontti.com.br/7236" rel="noopener" target="_blank">Debian 12 Bookworm</a><br />
<a href="https://blog.remontti.com.br/5792" rel="noopener" target="_blank"><del datetime="2024-08-23T13:04:44+00:00">Debian 11 Bullseye</del></a></p>
<p><a href="https://blog.remontti.com.br/5867" rel="noopener" target="_blank">Como melhorar a produtividade no seu Debian após instalação</a> (Recomendado)</p>
<p><strong>Porta Utilizadas</strong><br />
81  &#8211; Porta de administração do Nginx Proxy Manager<br />
80  &#8211; Porta HTTP pública<br />
443 &#8211; Porta HTTP pública</p>
<h4>Configurações de interface de Rede</h4>
<p>Para a configuração da interface de rede vou usar uma configuração <strong>Pointopoint</strong> (Ponto a ponto) assim utilizando de apenas um endereço IP público, você pode (deve) <a href="https://blog.remontti.com.br/5848" rel="noopener" target="_blank">ler este tutorial</a> para conhecer varias possibilidades de configuração de rede pensa em como economizar endereços IPs.</p>
<pre class="remontti-code"># vim /etc/network/interfaces</pre>
<p>No meu exemplo vamos pesar que esse servidor esteja conectado ao RouterOS/Mikrotik ether2 e meu endereço de IP publico será o <em>200.200.200.255</em></p>
<pre class="remontti-code-plain">allow-hotplug enp0s3
iface enp0s3 inet static
        address 200.200.200.255
        pointopoint 192.168.171.171
        netmask 255.255.255.255
        gateway 192.168.171.171
</pre>
<p>Agora no seu RouterOS vamos criar nosso Pointopoint gatewai 192.168.171.171 tendo como network o endereço IP público.</p>
<pre class="remontti-code-plain">RouterOS# /ip address
RouterOS# add address=192.168.171.171 comment=Pointopoint interface=ether2 network=200.200.200.255</pre>
<p>Se você não tem IP publico para colocar em seu servidor, então fixe um endereço IP Privado e redirecione as potas 80,81 e 443 para ele, utilizando seu IP público que está em seu router. Exemplo:</p>
<pre class="remontti-code-plain">allow-hotplug enp0s3
iface enp0s3 inet static
        address 10.10.10.2/24
        gateway 10.10.10.1</pre>
<p>E é clario se você conter endereço IPv6, não deixe de configurar sua placa! Exemplo:</p>
<pre class="remontti-code-plain">iface enp0s3 inet6 static
        pre-up modprobe ipv6
        address 2804:bebe:cafe::2
        netmask 64
        gateway 2804:bebe:cafe::1</pre>
<h4>Instalação Docker</h4>
<p>Iremos instalar os pacotes necessários, bem como adicionar o repositório oficial do Docker</p>
<pre class="remontti-code"># apt install ca-certificates curl gnupg2 apt-transport-https lsb-release
# curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
# echo &quot;deb https://download.docker.com/linux/debian $(lsb_release -cs) stable&quot; &gt; /etc/apt/sources.list.d/docker.list</pre>
<p>Atualize o repositório e instale-o</p>
<pre class="remontti-code"># apt update
# apt install docker-ce docker-ce-cli containerd.io</pre>
<h4>Instalação Docker Compose</h4>
<p>Vamos fazer download do Docker Compose, e adicionar aos binários do nosso servidor como um executável. </p>
<pre class="remontti-code"># curl -L &quot;https://github.com/docker/compose/releases/download/v2.24.5/docker-compose-$(uname -s)-$(uname -m)&quot; -o /usr/local/bin/docker-compose
# chmod +x /usr/local/bin/docker-compose
# ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose</pre>
<p>Versão baixada foi a 2.24.5, mas você pode consultar uma mais recente em: <a href="https://github.com/docker/compose/releases/" rel="noopener" target="_blank">https://github.com/docker/compose/releases/</a>, para verificar qual versão instalado use:</p>
<pre class="remontti-code"># docker-compose --version</pre>
<pre class="remontti-code-plain">Docker Compose version v2.24.5</pre>
<h4>Instação Nginx Proxy Manager</h4>
<p>Crie os diretórios quais ficarão todas as configurações:</p>
<pre class="remontti-code"># mkdir /etc/nginx-proxy
# mkdir /etc/nginx-proxy/{data,letsencrypt}</pre>
<p>Crie seu arquivo de composição do Docker com as configuração, para realizar a instalação dos containers do Nginx Proxy Manager e MariaDB com o Docker Compose. (Ajustes as senhas)</p>
<pre class="remontti-code"># vim /etc/nginx-proxy/docker-compose.yml</pre>
<p>Adicione:</p>
<pre class="remontti-code-plain">version: &quot;3&quot;
services:
  app:
    image: &#039;jc21/nginx-proxy-manager:latest&#039;
    restart: unless-stopped
    ports:
      # These ports are in format &lt;host-port&gt;:&lt;container-port&gt;
      - &#039;80:80&#039;       # Porta HTTP pública
      - &#039;443:443&#039;     # Porta HTTPS pública
      - &#039;81:81&#039; # Porta de administracao do Nginx Proxy
      # Adicione qualquer outra porta Stream que você queira expor, ex
      # - &#039;21:21&#039; # FTP
    environment:
      DB_MYSQL_HOST: &quot;db&quot;
      DB_MYSQL_PORT: 3306
      DB_MYSQL_USER: &quot;nginxproxy&quot;
      DB_MYSQL_PASSWORD: &quot;S3NHA_NGINX_PR0XY&quot;
      DB_MYSQL_NAME: &quot;nginxproxy&quot;
      # Remova o comentário se você não tem o IPv6 em seu host
      # DISABLE_IPV6: &#039;true&#039;
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
    depends_on:
      - db

  db:
    image: &#039;jc21/mariadb-aria:latest&#039;
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: &#039;S3NHA_D3_R00T&#039;
      MYSQL_DATABASE: &#039;nginxproxy&#039;
      MYSQL_USER: &#039;nginxproxy&#039;
      MYSQL_PASSWORD: &#039;S3NHA_NGINX_PR0XY&#039;
    volumes:
      - ./mysql:/var/lib/mysql</pre>
<p>Execute o comando Docker Compose</p>
<pre class="remontti-code"># cd /etc/nginx-proxy
# docker-compose up -d</pre>
<p>Aguarde finalizar&#8230; em seguida visualize se os containers que foram criados</p>
<pre class="remontti-code"># docker ps -a</pre>
<pre class="remontti-code-plain">
CONTAINER ID   IMAGE                             COMMAND             CREATED          STATUS         PORTS                                                                                  NAMES
6b796a07af22   jc21/nginx-proxy-manager:latest   &quot;/init&quot;             9 seconds ago    Up 7 seconds   0.0.0.0:80-81-&gt;80-81/tcp, :::80-81-&gt;80-81/tcp, 0.0.0.0:443-&gt;443/tcp, :::443-&gt;443/tcp   nginx-proxy-app-1
4c93d3b8a544   jc21/mariadb-aria:latest          &quot;/scripts/run.sh&quot;   13 seconds ago   Up 8 seconds   3306/tcp                                                                               nginx-proxy-db-1
</pre>
<p>Abra em navegador <strong>http://IP_SERVIDOR/</strong> se tudo ocorreu bem você verá:<br />
<img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_1.png" alt="" width="1274" height="666" class="alignnone size-full wp-image-6566" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_1.png 1274w, https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_1-300x157.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_1-1024x535.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_1-768x401.png 768w" sizes="(max-width: 1274px) 100vw, 1274px" /></p>
<p>Agora abra na porta 81 <strong>http://IP_SERVIDOR:81/</strong> e entre com:</p>
<pre class="remontti-code-plain">Email: admin@example.com 
Password: changeme</pre>
<p><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_2a.png" alt="" width="1255" height="661" class="alignnone size-full wp-image-6576" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_2a.png 1255w, https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_2a-300x158.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_2a-1024x539.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_2a-768x405.png 768w" sizes="(max-width: 1255px) 100vw, 1255px" /><br />
Ao entrar pela primeira vez um formulário com informações será exibido para você alterar seus dados, <strong>altere seus e-mail e senha</strong>.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_3_a.png" alt="" width="1257" height="664" class="alignnone size-full wp-image-6575" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_3_a.png 1257w, https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_3_a-300x158.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_3_a-1024x541.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_3_a-768x406.png 768w" sizes="auto, (max-width: 1257px) 100vw, 1257px" /></p>
<h4>Configurações de DNS Autoritativa</h4>
<p>Para que possamos encaminhar os acessos iremos necessitar configurar um subdomínios para cada situação em nosso servidor <a href="https://blog.remontti.com.br/5958" rel="noopener" target="_blank">DNS autoritativo</a>. </p>
<p>Vamos criar um cenário fictício para ilustrar melhor. Temos 1 clientes recebendo IPs privados da classe de um CGNAT, e o mesmo solicita um redirecionamento de portas para seu DVR. O cliente recebe o endereço IP privado 100.64.0.71 (Fixado) seu DVR esta na porta 80 na rede local 192.168.0.7. Para cada situação irei criar um novo subdomínio, exemplo &#8220;dvrudi&#8221; no servidor DNS autoritativo apontando para o IP Público do seu servidor Nginx Proxy, assim eu acesso <em>&#8220;dvrudi.remontti.com.br&#8221;</em>. Agora ao acessar o roteato e criar o redirecionamento provavelmente não iremos poder usar a porta 80, pois ela já é a porta de acesso do roteador 100.64.0.71, e é bem possível que você tenha fechado ela em seu firewall também para se proteger de ataques, neste caso use outra porta exemplos 60080 para fazer o direcionamento para a porta 80 do DVR, o cliente nem precisa saber desta porta 60080 ela é a penas a porta de entrada do Nginx Proxy. Agora volte ao Admin do NPM, no menu <strong>Hosts</strong> >> <strong>Proxy Hosts</strong> >> <strong>Add Proxy Host</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_4_a.png" alt="" width="1256" height="593" class="alignnone size-full wp-image-6571" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_4_a.png 1256w, https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_4_a-300x142.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_4_a-1024x483.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_4_a-768x363.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_4_a-520x245.png 520w, https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_4_a-720x340.png 720w" sizes="auto, (max-width: 1256px) 100vw, 1256px" /></p>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_6.png" alt="" width="1257" height="449" class="alignnone size-full wp-image-6577" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_6.png 1257w, https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_6-300x107.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_6-1024x366.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_6-768x274.png 768w" sizes="auto, (max-width: 1257px) 100vw, 1257px" /></p>
<p>Se desejar pode ativar certificado grátis com Lets Encrypt.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_5_a.png" alt="" width="1253" height="595" class="alignnone size-full wp-image-6572" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_5_a.png 1253w, https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_5_a-300x142.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_5_a-1024x486.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_5_a-768x365.png 768w" sizes="auto, (max-width: 1253px) 100vw, 1253px" /></p>
<p>Agora ao acessar <em>&#8220;dvrudi.remontti.com.br&#8221;</em> ele estará acessando diretamente o DVR. #clientefeliz</p>
<p>Legal não? Agora você pode ter um painel administrativo para redirecionamento de serviços web, no exemplo sitei o caso de CGNAT, mas você pode usar para qualquer outra situação, bem como até apontar para um subdiretório, e restringir o acesso do mesmo, sabe esses ERP <del datetime="2022-06-18T18:45:32+00:00">porco</del> que você acessar com /admin, daria para restringir. Bom o painel do NPM é bem intuitivo, para quem já conhece o Nginx sabe das suas enumeras possibilidades vai achar um doce.</p>
<h4>Atualizando do NPM</h4>
<pre class="remontti-code"># cd /etc/nginx-proxy/
# docker-compose down
# docker-compose pull
# docker-compose up -d</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><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager.png" alt="" width="261" height="90" class="alignnone size-full wp-image-6583" /><br />
<strong>Fonte: </strong><br />
<a href="https://nginxproxymanager.com/guide/" rel="noopener" target="_blank">https://nginxproxymanager.com/guide/</a><br />
<a href="https://github.com/NginxProxyManager/nginx-proxy-manager" rel="noopener" target="_blank">https://github.com/NginxProxyManager/nginx-proxy-manager</a></p>
<p>O post <a href="https://blog.remontti.com.br/6561">Instalação do Nginx Proxy Manager</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/6561/feed</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
		<item>
		<title>Rodando servidor proxy-cache DNS com Unbound</title>
		<link>https://blog.remontti.com.br/6506</link>
					<comments>https://blog.remontti.com.br/6506#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Wed, 01 Jun 2022 20:21:32 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[bind]]></category>
		<category><![CDATA[bind9]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[proxy-cache]]></category>
		<category><![CDATA[Unbound]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=6506</guid>

					<description><![CDATA[<p>Autor: Patrick Brandão Motivação: ao rodar qualquer software no Linux, a resolução de DNS e feita pela libresolv, que faz a leitura do /etc/host.conf e /etc/resolv.conf para obter o IP do servidor DNS. Assim,&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/6506">Rodando servidor proxy-cache DNS com Unbound</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/06/unbound.png" alt="" width="720" height="340" class="alignnone size-full wp-image-6540" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/06/unbound.png 720w, https://blog.remontti.com.br/wp-content/uploads/2022/06/unbound-300x142.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/06/unbound-520x245.png 520w" sizes="auto, (max-width: 720px) 100vw, 720px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-thumbnail wp-image-6530 alignright" src="https://blog.remontti.com.br/wp-content/uploads/2022/06/patrick-150x150.jpg" alt="" width="150" height="150" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/06/patrick-150x150.jpg 150w, https://blog.remontti.com.br/wp-content/uploads/2022/06/patrick-300x300.jpg 300w, https://blog.remontti.com.br/wp-content/uploads/2022/06/patrick-80x80.jpg 80w, https://blog.remontti.com.br/wp-content/uploads/2022/06/patrick-320x320.jpg 320w, https://blog.remontti.com.br/wp-content/uploads/2022/06/patrick.jpg 640w" sizes="auto, (max-width: 150px) 100vw, 150px" /><br />
<strong>Autor</strong>:  <a href="https://t.me/patrickbrandao" rel="noopener" target="_blank">Patrick Brandão</a></p>
<p><strong>Motivação</strong>: ao rodar qualquer software no Linux, a resolução de DNS e feita pela <strong>libresolv</strong>, que faz a leitura do /etc/host.conf e /etc/resolv.conf para obter o IP do servidor DNS.</p>
<p>Assim, a resolução de nomes requer envio de pacotes para fora do host e aguarda pela resposta, que pode demorar (latência alta) ou não ser respondida por problemas na rede entre o host e o servidor DNS (remoto)</p>
<p>A <strong>libresolv</strong> não possui suporte a cache, ou seja, se você precisar consultar um domínio (www.google.com) dezenas de vezes em um segundo, todas as vezes ela terá que enviar a pergunta ao servidor DNS para obter a mesma resposta.</p>
<p>Rodando um servidor proxy-cache DNS no host linux você garante que a libresolv envie os pedidos para um software <strong>rodando no mesmo host</strong> mas que ficará por conta de consultar 1 ou mais servidores,<strong> e salvando os resultados obtidos em cache</strong>, economizando banda e tempo nas próximas requisições aos mesmos nomes.</p>
<p>O resultado dessa implementação é uma maior velocidade no inicio das conexões do servidor.</p>
<p><strong>OBS:</strong><br />
<em><font color="red">Você não está criando um servidor recursivo, pare resoluções de nomes para sua rede!</font><br />
<font color="blue">Mas ao final Rudimar Remontti vai explicar como tornar ele recursivo.</font></em></p>
<p><strong>Distribuição utilizada: </strong><br />
Debian 11 (Bullseye) 64 bits <a href="https://blog.remontti.com.br/5792" target="_blank" rel="noopener">instalação mínima</a></p>
<h3>Instalando Unbound</h3>
<pre class="remontti-code"># apt update; apt upgrade
# apt install unbound</pre>
<p><strong>Configurando</strong><br />
A configuração abaixo visa consumir recursos mínimos e atender somente os softwares do próprio host.</p>
<pre class="remontti-code"># cat &gt; /etc/unbound/unbound.conf.d/root-auto-trust-anchor-file.conf &lt;&lt; EOF
server:
    auto-trust-anchor-file: &quot;/var/lib/unbound/root.key&quot;
    verbosity: 1
    statistics-interval: 20
    extended-statistics: yes
    num-threads: 2

    # Caso seja necessário fixar o IP de origem:
    #outgoing-interface: x.x.x.x

    # Abrir a porta apenas nos endereços loopback (!!segurança!!)
    interface: 127.0.0.1
    interface: ::1

    # Permitir todos os IPs pois abrimos a porta apenas para a loopback
    access-control: 127.0.0.1/8 allow
    access-control: ::1 allow

    outgoing-range: 512
    num-queries-per-thread: 128

    msg-cache-size: 2m
    rrset-cache-size: 1m

    msg-cache-slabs: 4
    rrset-cache-slabs: 4

    cache-max-ttl: 1200
    infra-host-ttl: 60
    infra-lame-ttl: 60

    infra-cache-numhosts: 128
    infra-cache-lame-size: 2k

    do-ip4: yes
    do-ip6: yes
    do-udp: yes
    do-tcp: yes
    do-daemonize: yes

    username: &quot;unbound&quot;
    directory: &quot;/etc/unbound&quot;
    logfile: &quot;/var/log/unbound.log&quot;
    use-syslog: yes
    pidfile: &quot;/run/unbound.pid&quot;

    identity: &quot;Unbound-LocalCache&quot;
    version: &quot;1.0&quot;
    hide-identity: yes
    hide-version: yes
    harden-glue: yes
    do-not-query-address: 127.0.0.1/8
    do-not-query-localhost: yes
    module-config: &quot;iterator&quot;

    #zone localhost
    local-zone: &quot;localhost.&quot; static
    local-data: &quot;localhost. 10800 IN NS localhost.&quot;
    local-data: &quot;localhost. 10800 IN SOA localhost. nobody.invalid. 1 3600 1200 604800 10800&quot;
    local-data: &quot;localhost. 10800 IN A 127.0.0.1&quot;

    local-zone: &quot;127.in-addr.arpa.&quot; static
    local-data: &quot;127.in-addr.arpa. 10800 IN NS localhost.&quot;
    local-data: &quot;127.in-addr.arpa. 10800 IN SOA localhost. nobody.invalid. 2 3600 1200 604800 10800&quot;
    local-data: &quot;1.0.0.127.in-addr.arpa. 10800 IN PTR localhost.&quot;

remote-control:
    control-enable: yes
    control-interface: 127.0.0.1
    control-port: 8953
    control-use-cert: &quot;no&quot;


# Operar 100% em modo forward, informe o ip dos servidores DNSs reais:
forward-zone:
    name: &quot;.&quot;
    forward-addr: 8.8.8.8
    forward-addr: 8.8.4.4

# Encaminhar dominio especifico para servidor DNS especifico:
forward-zone:
    name: &quot;slack.com&quot;
    forward-addr: 1.1.1.1
    forward-addr: 1.0.0.1
EOF
</pre>
<p>Acima criamos um forward do domínio slack.com indo para um DNS diferente (1.1.1.1 e 1.0.0.1) do padrão 8.8.8.8 e 8.8.4.4</p>
<p>Reinicie o serviço para carregar as novas configurações</p>
<pre class="remontti-code"># systemctl restart unbound</pre>
<p>Instale o pacote dnsutils para ter ferramentas de testes</p>
<pre class="remontti-code"># apt install dnsutils</pre>
<p>Testando IPv4</p>
<pre class="remontti-code"># host google.com 127.0.0.1</pre>
<pre class="remontti-code-plain">Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases: 

google.com has address 142.250.218.78
google.com has IPv6 address 2800:3f0:4001:81d::200e
google.com mail is handled by 10 smtp.google.com.</pre>
<pre class="remontti-code"># dig ANY google.com @127.0.0.1</pre>
<pre class="remontti-code-plain">; &lt;&lt;&gt;&gt; DiG 9.16.27-Debian &lt;&lt;&gt;&gt; ANY google.com @127.0.0.1
;; global options: +cmd
;; Got answer:
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 893
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;google.com.			IN	ANY

;; ANSWER SECTION:
google.com.		129	IN	A	142.250.218.78
google.com.		129	IN	AAAA	2800:3f0:4001:81d::200e
google.com.		51	IN	MX	10 smtp.google.com.

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Wed Jun 01 15:59:35 -03 2022
;; MSG SIZE  rcvd: 104</pre>
<p>Testando IPv6</p>
<pre class="remontti-code"># host google.com ::1</pre>
<pre class="remontti-code-plain">Using domain server:
Name: ::1
Address: ::1#53
Aliases: 

google.com has address 142.250.218.78
google.com has IPv6 address 2800:3f0:4001:81d::200e
google.com mail is handled by 10 smtp.google.com.
</pre>
<pre class="remontti-code"># dig ANY google.com @::1</pre>
<pre class="remontti-code-plain">; &lt;&lt;&gt;&gt; DiG 9.16.27-Debian &lt;&lt;&gt;&gt; ANY google.com @::1
;; global options: +cmd
;; Got answer:
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 56485
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;google.com.			IN	ANY

;; ANSWER SECTION:
google.com.		106	IN	A	142.250.218.78
google.com.		281	IN	AAAA	2800:3f0:4001:81d::200e
google.com.		281	IN	MX	10 smtp.google.com.

;; Query time: 0 msec
;; SERVER: ::1#53(::1)
;; WHEN: Wed Jun 01 16:03:30 -03 2022
;; MSG SIZE  rcvd: 104
</pre>
<p>Configurando o Linux para usar o servidor DNS na loopback como servidor DNS</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>
<h3>Tornando recursivo</h3>
<p><strong>Contribuição extra por:</strong> <a href="https://t.me/remontti" rel="noopener" target="_blank">Rudimar Remontti</a><br />
Caso deseje tornar recursivo para os demais hosts da sua rede este servidor, primeira coisa que você deve ter em mente que se este servidor conter IPs públicos o mesmo será responsivo para todo o planeta terra e alguns "ali<em>G</em>enigenas". Então o mínimo que você deve ter é um firewall, protegendo a porta 53 tcp/udp para responder apenas para sua rede.</p>
<pre class="remontti-code"># vim /etc/unbound/unbound.conf.d/root-auto-trust-anchor-file.conf</pre>
<p>Abaixo de:</p>
<pre class="remontti-code-plain">
    # abrir a porta apenas nos enderecos loopback (seguranca)
    interface: 127.0.0.1
    interface: ::1</pre>
<p>Adicione</p>
<pre class="remontti-code-plain">
    # abrir a porta para os ips de interface (risco)
    interface: 200.200.200.200
    interface: 2000:bebe:cafe::f07e</pre>
<p>Abaixo de:</p>
<pre class="remontti-code-plain">
    # Permitir todos os IPs pois abrimos a porta apenas para a loopback
    access-control: 127.0.0.1/8 allow
    access-control: ::1 allow</pre>
<p>Adicione os prefixos da sua rede</p>
<pre class="remontti-code-plain">
    access-control: 192.168.0.0/16 allow
    access-control: 172.16.0.0/12 allow
    access-control: 100.64.0.0/10 allow
    access-control: 10.0.0.0/8 allow
    access-control: 200.200.0.0/22 allow
    access-control: 2001:db8::/32 allow</pre>
<p>Desta forma abrindo conexão para os IPs da interface <em>"200.200.200.200" e "2000:bebe:cafe::f07e"</em></p>
<p>Reinicie o serviço para carregar as alterações</p>
<pre class="remontti-code"># systemctl restart unbound</pre>
<p>Pode consultar se as porta estão sendo ouvidas:</p>
<pre class="remontti-code"># ss -putan  | grep LISTEN | grep :53</pre>
<pre class="remontti-code-plain">
tcp   LISTEN 0      256           200.200.200.200:53           0.0.0.0:*     users:((&quot;unbound&quot;,pid=6079,fd=16))                 
tcp   LISTEN 0      256                 127.0.0.1:53           0.0.0.0:*     users:((&quot;unbound&quot;,pid=6079,fd=12))                 
tcp   LISTEN 0      256           200.200.200.200:53           0.0.0.0:*     users:((&quot;unbound&quot;,pid=6079,fd=8))                  
tcp   LISTEN 0      256                 127.0.0.1:53           0.0.0.0:*     users:((&quot;unbound&quot;,pid=6079,fd=4))                  
tcp   LISTEN 0      256                     [::1]:53              [::]:*     users:((&quot;unbound&quot;,pid=6079,fd=6))                  
tcp   LISTEN 0      256    [2000:bebe:cafe::f07e]:53              [::]:*     users:((&quot;unbound&quot;,pid=6079,fd=10))                 
tcp   LISTEN 0      256                     [::1]:53              [::]:*     users:((&quot;unbound&quot;,pid=6079,fd=14))                 
tcp   LISTEN 0      256    [2000:bebe:cafe::f07e]:53              [::]:*     users:((&quot;unbound&quot;,pid=6079,fd=18))</pre>
<p><strong>Firewall</strong><br />
Porém mesmo que você tenha setados seus prefixos em <strong>access-control</strong> a porta 53 estará respondendo para todo o mundo. Para fechar elas use o nfttables que por padrão já vem no Debian 11 no lugar do iptables. Você pode instalar o mesmo com apt se necessário.</p>
<p>Edite o arquivo do nftables</p>
<pre class="remontti-code"># vim /etc/nftables.conf</pre>
<p>Ajuste para ficar assim e em <strong>elements</strong> insira todos seus prefixos autorizados.</p>
<pre class="remontti-code">#!/usr/sbin/nft -f
  
flush ruleset

table inet filter {

    set acesso-dns4 {
        flags interval
        type ipv4_addr
        elements = { 127.0.0.1, 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12, 100.64.0.0/10, 200.200.200.0/22 }
    }
    set acesso-dns6 {
        flags interval
        type ipv6_addr
        elements = { ::1, 2001:db8::/32 }
    }
    chain input {
        type filter hook input priority 0;

        # Permite Acesso DNS na porta 53
        ip saddr  @acesso-dns4 udp dport 53 counter accept
        ip saddr  @acesso-dns4 tcp dport 53 counter accept
        ip6 saddr @acesso-dns6 udp dport 53 counter accept
        ip6 saddr @acesso-dns6 tcp dport 53 counter accept
        udp dport 53 counter drop
        tcp dport 53 counter drop

        type filter hook input priority 0;
    }
    chain forward {
        type filter hook forward priority 0;
    }
    chain output {
        type filter hook output priority 0;
    }
}</pre>
<p>Habilite o mesmo para iniciar com o boot e reinicie.</p>
<pre class="remontti-code"># systemctl enable nftables
# systemctl restart nftables</pre>
<p>Consulte se seu firewall foi carregado com o comando:</p>
<pre class="remontti-code"># nft list ruleset</pre>
<p>Retorno:</p>
<pre class="remontti-code-plain">table inet filter {
	set acesso-dns4 {
		type ipv4_addr
		flags interval
		elements = { 10.0.0.0/8, 100.64.0.0/10,
			     127.0.0.1, 172.16.0.0/12,
			     192.168.0.0/16, 200.200.200.0/22 }
	}

	set acesso-dns6 {
		type ipv6_addr
		flags interval
		elements = { ::1,
			     2001:db8::/32 }
	}

	chain input {
		type filter hook input priority filter; policy accept;
		ip saddr @acesso-dns4 udp dport 53 counter packets 0 bytes 0 accept
		ip saddr @acesso-dns4 tcp dport 53 counter packets 0 bytes 0 accept
		ip6 saddr @acesso-dns6 udp dport 53 counter packets 0 bytes 0 accept
		ip6 saddr @acesso-dns6 tcp dport 53 counter packets 0 bytes 0 accept
		udp dport 53 counter packets 0 bytes 0 drop
		tcp dport 53 counter packets 0 bytes 0 drop
	}

	chain forward {
		type filter hook forward priority filter; policy accept;
	}

	chain output {
		type filter hook output priority filter; policy accept;
	}
}</pre>
<p>Pronto espero que tenha gostado! Agradeço ao meu parceiro Patrick!</p>
<p><strong>Se quiser 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/6506">Rodando servidor proxy-cache DNS com Unbound</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/6506/feed</wfw:commentRss>
			<slash:comments>21</slash:comments>
		
		
			</item>
	</channel>
</rss>
