Essas configurações é para linux Deb, mas os comandos podem ser adaptados para RPM.
Obs: Notem que não vou usar em momento algum no APT a opção "--yes", já tive problemas sérios com isso.
* Atualize seu servidor DEB com os comandos:
sudo apt-get update ; sudo apt-get upgrade
* Por via das dúvidas, instale os pacote dnsutils build-essential libssl-dev com o comando.
sudo apt-get install dnsutils build-essential libssl-dev
* Seguidamente instale o servidor Unbound com o comando:
sudo apt-get install unbound
* Agora acesse a pasta onde contém os arquivos do serviço Unbound:
cd /etc/unbound
* Realize o download do arquivo "named.cache" com a lista atualizada dos "root servers".
sudo wget ftp://ftp.internic.net/domain/named.cache
* Execute o comando "unbound-control-setup" para gerar os arquivos de chaves necessárias para o TLS.
sudo unbound-control-setup
* Altere o proprietário da pasta "/etc/unbound" e também as permissões:
sudo chown unbound:root unbound_* ; sudo chmod 440 unbound_*
* Abra o arquivo "unbound.conf" com o comando:
sudo nano unbound.conf
Dentro desse arquivo, deixe com o seguinte conteúdo:
# Unbound configuration file for Debian.#
# See the unbound.conf(5) man page.
#
# See /usr/share/doc/unbound/examples/unbound.conf for a commented
# reference config file.
#
# The following line includes additional configuration files from the
# /etc/unbound/unbound.conf.d directory.
#include: "/etc/unbound/unbound.conf.d/*.conf"
######################################################################
server:
port: 53
interface: 0.0.0.0
access-control: 0.0.0.0/0 allow
access-control: 127.0.0.0/8 allow
access-control: 192.168.0.0/16 allow
access-control: 172.16.0.0/12 allow
access-control: 10.0.0.0/8 allow
access-control: 169.254.0.0/16 allow
verbosity: 1
num-threads: 4
outgoing-range: 8192
num-queries-per-thread: 4096
so-rcvbuf: 4m
so-sndbuf: 4m
msg-cache-slabs: 2
rrset-cache-slabs: 2
infra-cache-slabs: 2
key-cache-slabs: 2
rrset-cache-size: 50m
msg-cache-size: 100m
do-ip4: yes
do-ip6: yes
do-udp: yes
do-tcp: yes
do-daemonize: yes
module-config: "iterator"
local-data: "localhost A 127.0.0.1"
local-data-ptr: "127.0.0.1 localhost"
root-hints: "/etc/unbound/named.cache"
use-syslog: yes
logfile: "/etc/unbound/unbound.log"
pidfile: "/var/run/unbound.pid"
hide-identity: yes
hide-version: yes
auto-trust-anchor-file: "/var/lib/unbound/root.key"
Algumas observações:
Em "access control" você vai definir quem pode e quem não pode requisitar o servidor DNS, por padrão vamos aceitar todo mundo.
Em "num-threads" você define quantos "cores" o serviço de DNS pode usar, configure com cuidado de acordo com seu CPU.
Em "num-queries-per-thread" você define quantas requisições DNS podem ser processadas por cada "core" de seu CPU.
Para saber quantos "cores" seu processador possui, use o seguinte comando:
cat /proc/cpuinfo | grep processor | wc -l
* Agora verifique se encontre algum erro em seu "unbound.conf" com o comando:
sudo unbound-checkconf /etc/unbound/unbound.conf
* Reinicie o serviço com o comando:
sudo service unbound restart
* Para ver o status do "unbound" use o comando:
sudo unbound-control stats
Adicione a seguinte linha em seu "/etc/resolv.conf":
nameserver 127.0.0.1
Para testar seu DNS, execute o comando "dig" e o endereço do site que deseja, por exemplo.
Execute "dig www.google.com.br", veja o "query time", agora que já foi pro cache, execute novamente esse comando e veja o "query time".
Para redirecionar determinado site no próprio DNS (útil para bloquear por DNS):
local-zone: "doubleclick.net" redirect
local-data: "doubleclick.net A 127.0.0.1"
local-zone: "googlesyndication.com" redirect
local-data: "googlesyndication.com A 127.0.0.1"
local-zone: "googleadservices.com" redirect
local-data: "googleadservices.com A 127.0.0.1"
local-zone: "google-analytics.com" redirect
local-data: "google-analytics.com A 127.0.0.1"
Para criar zonas de DNS de uma rede interna:
local-zone: "home.lan." static
local-data: "firewall.home.lan. IN A 10.0.0.1"
local-data: "laptop.home.lan. IN A 10.0.0.2"
local-data: "xboxone.home.lan. IN A 10.0.0.3"
local-data-ptr: "10.0.0.1 firewall.home.lan"
local-data-ptr: "10.0.0.2 laptop.home.lan"
local-data-ptr: "10.0.0.3 xboxone.home.lan"
Após as ações descritas acima, em 99,9% dos casos, a chave DNSSEC já vai estar instalada. Em algumas instalações (na maioria) o "root.key" é instalado em:
/var/lib/unbound/root.key
Como faço para descobrir se ela está lá?
ls /var/lib/unbound
Então vamos partir do pressuposto que já esteja lá e vamos apenas colocá-la em execução.
* Substitua o conteúdo original do arquivo executando o comando abaixo:
echo ". IN DS 19036 8 2 49AAC11D7B6F6446702E54A1607371607A1A41855200FD2CE1CDDE32F24E8FB5" > /var/lib/unbound/root.key
* Altere as permissões do arquivo com o comando:
sudo chown unbound:root /var/lib/unbound/root.key
* Após isso acrescente no seu "unbound.conf" (pode ser no final do arquivo) a seguinte linha:
auto-trust-anchor-file: "/var/lib/unbound/root.key"
* Teste o arquivo com o comando:
unbound-checkconf /etc/unbound/unbound.conf
* Reinicie o serviço com o comando sudo service unbound restart ou recarregue as configurações do Unbound com o comandounbound-control reload.
Para testar o DNSSEC, execute o comando:
dig com. SOA +dnssec
Procure pela "flag" ad no início da resposta do comando.
Obs: Com o DNSSEC ativo o Unbound fica um pouco mais lento.
E se não encontrei o "root.key" na pasta descrita? Verifique na pasta "/etc/unbound/" se o arquivo está lá, senão:
unbound-anchor -a /var/lib/unbound/root.key
Para dar um "flush" no cache de DNS do Unbound, use o comando:
unbound-control flush
Obs: Notem que não vou usar em momento algum no APT a opção "--yes", já tive problemas sérios com isso.
* Atualize seu servidor DEB com os comandos:
sudo apt-get update ; sudo apt-get upgrade
* Por via das dúvidas, instale os pacote dnsutils build-essential libssl-dev com o comando.
sudo apt-get install dnsutils build-essential libssl-dev
* Seguidamente instale o servidor Unbound com o comando:
sudo apt-get install unbound
* Agora acesse a pasta onde contém os arquivos do serviço Unbound:
cd /etc/unbound
* Realize o download do arquivo "named.cache" com a lista atualizada dos "root servers".
sudo wget ftp://ftp.internic.net/domain/named.cache
* Execute o comando "unbound-control-setup" para gerar os arquivos de chaves necessárias para o TLS.
sudo unbound-control-setup
* Altere o proprietário da pasta "/etc/unbound" e também as permissões:
sudo chown unbound:root unbound_* ; sudo chmod 440 unbound_*
* Abra o arquivo "unbound.conf" com o comando:
sudo nano unbound.conf
Dentro desse arquivo, deixe com o seguinte conteúdo:
# Unbound configuration file for Debian.#
# See the unbound.conf(5) man page.
#
# See /usr/share/doc/unbound/examples/unbound.conf for a commented
# reference config file.
#
# The following line includes additional configuration files from the
# /etc/unbound/unbound.conf.d directory.
#include: "/etc/unbound/unbound.conf.d/*.conf"
######################################################################
server:
port: 53
interface: 0.0.0.0
access-control: 0.0.0.0/0 allow
access-control: 127.0.0.0/8 allow
access-control: 192.168.0.0/16 allow
access-control: 172.16.0.0/12 allow
access-control: 10.0.0.0/8 allow
access-control: 169.254.0.0/16 allow
verbosity: 1
num-threads: 4
outgoing-range: 8192
num-queries-per-thread: 4096
so-rcvbuf: 4m
so-sndbuf: 4m
msg-cache-slabs: 2
rrset-cache-slabs: 2
infra-cache-slabs: 2
key-cache-slabs: 2
rrset-cache-size: 50m
msg-cache-size: 100m
do-ip4: yes
do-ip6: yes
do-udp: yes
do-tcp: yes
do-daemonize: yes
module-config: "iterator"
local-data: "localhost A 127.0.0.1"
local-data-ptr: "127.0.0.1 localhost"
root-hints: "/etc/unbound/named.cache"
use-syslog: yes
logfile: "/etc/unbound/unbound.log"
pidfile: "/var/run/unbound.pid"
hide-identity: yes
hide-version: yes
auto-trust-anchor-file: "/var/lib/unbound/root.key"
Algumas observações:
Em "access control" você vai definir quem pode e quem não pode requisitar o servidor DNS, por padrão vamos aceitar todo mundo.
Em "num-threads" você define quantos "cores" o serviço de DNS pode usar, configure com cuidado de acordo com seu CPU.
Em "num-queries-per-thread" você define quantas requisições DNS podem ser processadas por cada "core" de seu CPU.
Para saber quantos "cores" seu processador possui, use o seguinte comando:
cat /proc/cpuinfo | grep processor | wc -l
* Agora verifique se encontre algum erro em seu "unbound.conf" com o comando:
sudo unbound-checkconf /etc/unbound/unbound.conf
* Reinicie o serviço com o comando:
sudo service unbound restart
* Para ver o status do "unbound" use o comando:
sudo unbound-control stats
Adicione a seguinte linha em seu "/etc/resolv.conf":
nameserver 127.0.0.1
Para testar seu DNS, execute o comando "dig" e o endereço do site que deseja, por exemplo.
Execute "dig www.google.com.br", veja o "query time", agora que já foi pro cache, execute novamente esse comando e veja o "query time".
Para redirecionar determinado site no próprio DNS (útil para bloquear por DNS):
local-zone: "doubleclick.net" redirect
local-data: "doubleclick.net A 127.0.0.1"
local-zone: "googlesyndication.com" redirect
local-data: "googlesyndication.com A 127.0.0.1"
local-zone: "googleadservices.com" redirect
local-data: "googleadservices.com A 127.0.0.1"
local-zone: "google-analytics.com" redirect
local-data: "google-analytics.com A 127.0.0.1"
Para criar zonas de DNS de uma rede interna:
local-zone: "home.lan." static
local-data: "firewall.home.lan. IN A 10.0.0.1"
local-data: "laptop.home.lan. IN A 10.0.0.2"
local-data: "xboxone.home.lan. IN A 10.0.0.3"
local-data-ptr: "10.0.0.1 firewall.home.lan"
local-data-ptr: "10.0.0.2 laptop.home.lan"
local-data-ptr: "10.0.0.3 xboxone.home.lan"
Após as ações descritas acima, em 99,9% dos casos, a chave DNSSEC já vai estar instalada. Em algumas instalações (na maioria) o "root.key" é instalado em:
/var/lib/unbound/root.key
Como faço para descobrir se ela está lá?
ls /var/lib/unbound
Então vamos partir do pressuposto que já esteja lá e vamos apenas colocá-la em execução.
* Substitua o conteúdo original do arquivo executando o comando abaixo:
echo ". IN DS 19036 8 2 49AAC11D7B6F6446702E54A1607371607A1A41855200FD2CE1CDDE32F24E8FB5" > /var/lib/unbound/root.key
* Altere as permissões do arquivo com o comando:
sudo chown unbound:root /var/lib/unbound/root.key
* Após isso acrescente no seu "unbound.conf" (pode ser no final do arquivo) a seguinte linha:
auto-trust-anchor-file: "/var/lib/unbound/root.key"
* Teste o arquivo com o comando:
unbound-checkconf /etc/unbound/unbound.conf
* Reinicie o serviço com o comando sudo service unbound restart ou recarregue as configurações do Unbound com o comandounbound-control reload.
Para testar o DNSSEC, execute o comando:
dig com. SOA +dnssec
Procure pela "flag" ad no início da resposta do comando.
Obs: Com o DNSSEC ativo o Unbound fica um pouco mais lento.
E se não encontrei o "root.key" na pasta descrita? Verifique na pasta "/etc/unbound/" se o arquivo está lá, senão:
unbound-anchor -a /var/lib/unbound/root.key
Para dar um "flush" no cache de DNS do Unbound, use o comando:
unbound-control flush