Então vamos examinar todos os seus desejos. Estou mudando a ordem apenas para atacar os mais fáceis primeiro.
1) O BIND tem que agir como um cache.
Isso é o que faz por padrão; não há necessidade de configurar nada.
2) Não falaremos com servidores de nomes de raiz.
Eu vejo que você mantém as dicas de raiz comentadas; agora, como estamos falando com servidores DNS fora da organização / home, eu não recomendo o encaminhamento de solicitações com endereços IP. Então, comente forward only;
e descomente include "/etc/bind/zones.rfc1918";
3) O RPZ como está aqui parece bem. No rpz-foreign.db
você tem que definir os nomes DNS / domínios regexp para
www.domaintoblacklist.xxx CNAME myserver
ou
www.domaintoblacklist.xxx A 127.0.0.1
4) como para criptografar a conexão; Eu estou fazendo isso com dnscrypt . Criptografia de DNS permite que você fale sobre DNS através de TLS / SSL para vários provedores de DNS, incluindo OpenDNS; com as vantagens adicionais de que as pessoas não poderão ouvir ou alterar suas solicitações de DNS.
A maneira mais fácil de instalá-lo é baixar o script dnscrypt-autoinstall
Para baixar o script, faça:
git clone https://github.com/simonclausen/dnscrypt-autoinstall
O script é feito para um uso autônomo do dnscrypt, então será necessário um pouco de trabalho extra para usar o BIND sobre ele.
Então, para começar:
./dnscrypt-autoinstall.sh
O script fará uma série de perguntas, inclusive com o serviço DNS que você deseja usar.
Ele irá mudar seu /etc/resolv.conf para apontar para seu localhost, para dnscrypt. Você terá que mudar o resolv.conf para o BIND. Mais sobre isso mais tarde.
No host local, seu BIND escutará; e o daemon dnscrypt-proxy
ouvirá em 127.0.0.2 e 127.0.0.3. dnscrypt-proxy
será o único a falar com os servidores opendns.
Encaminhadores BIND também terão que ser configurados para falar com dnscrypt
:
options {
...
forwarders {
127.0.0.2;
172.0.0.3;
};
...
}
Eu também editei /etc/init.d/dnscrypt-proxy e mudei a linha com 127.0.0.1 para 127.0.0.3
$DAEMON --daemonize --ephemeral-keys --user=dnscrypt --local-address=127.0.0.3 --resolver-address=$ADDRESS1 --provider-name=$PNAME1 --provider-key=$PKEY1
O script também muda /etc/resolv.conf
; você tem que mudá-lo para apontar para BIND / 0.0.0.0 (também conhecido como 127.0.0.1 na terminologia DNS)
chattr -i /etc/resolv.conf
e edite-o.
para terminar:
service dnscrypt-proxy restart
service bind9 restart
Após a conclusão da configuração de criptografia:
- os clientes com o BIND como cache
- O BIND irá falar com as duas instâncias do dnsproxy ainda usando o protocolo DNS "normal"
- dnsproxy com conversa com o provedor selecionado com DNS criptografado em 443 / UDP e 443 / TCP.
Se você quiser monitorar os pacotes para o lado de fora:
sudo tcpdump -n port 443