isc-dhcp-server + BIND9 + Não consolidado + dnscrypt e DDNS Não funciona

4

Original

Eu tenho uma configuração complexa de DNS no meu roteador doméstico que está executando servidores Ubuntu. Meu objetivo é ser capaz de,

  1. Consultar o DNS do meu provedor de serviços de Internet local para consultas confidenciais de localização geográfica com as quais me preocupo
  2. dnscrypt-proxy para a maioria das pesquisas. Para certos domínios (alguns que eu conheço), muitos que eu não conheço e como tal, além de domínios específicos, meu ISP envenena as pesquisas com endereços falsos para o tráfego blackhole. Eu gostaria que este fosse o servidor de pesquisa de DNS padrão
  3. Minimize pesquisas de DNS na Internet. Minha conexão com a Internet não é confiável e, em determinados momentos durante o dia, tenho uma chance tão baixa quanto 50% de ter pesquisas de DNS fora do país bem-sucedidas
  4. Tenho meu próprio domínio interno, predominantemente para pesquisas reversas para trabalhar.

A solução que tive para implementar para alcançar esses objetivos é

  1. unbound como o servidor DNS primário da minha LAN para pesquisas de cache, mantendo esse cache agressivamente e encaminhando endereços para o servidor DNS relevante para erros de cache
  2. dnscrypt-proxy on 127.0.2.1:53 como forward-addr para "." em não ligado
  3. bind on 192.168.1.1:40 autoritativo apenas para o meu domínio local
  4. isc-dhcp-server para distribuir endereços IP e inserir pesquisas direta e inversa.

Consegui alcançar a maioria dos meus objetivos. Tão reticente em alterar as coisas significativamente exceto por ter pesquisas de avanço / retrocesso para hosts não estáticos na minha LAN.

Suspeito que isc-dhcp-server esteja enviando atualizações de DDNS para unbound , que não tem a menor ideia do que fazer com isso. Como peço ao isc-dhcp-server para enviá-lo para 192.168.1.1:40 , bind , embora eu queira que o servidor DNS dos meus clientes seja 192.168.1.1:53 , unbound ou ative o unbound para saber como encaminhar as atualizações do DDNS para bind ?

Exemplo de mensagem de erro

Sep 29 08:01:10 ubuntu dhcpd[7057]: DHCPREQUEST for 192.168.1.101 from 28:18:78:7c:d5:a1 (Xbox-SystemOS) via enp2s0
Sep 29 08:01:10 ubuntu dhcpd[7057]: DHCPACK on 192.168.1.101 to 28:18:78:7c:d5:a1 (Xbox-SystemOS) via enp2s0
Sep 29 08:01:22 ubuntu dhcpd[7057]: Unable to add forward map from Xbox-SystemOS.mydomain.ddns.net. to 192.168.1.101: timed out

Linhas relevantes em dhcpd.conf

ddns-updates on;
ddns-update-style interim;
key rndc-key { algorithm hmac-md5; secret MIND_YOUR_BUSINESS; }

subnet ...... {
    ....
    option domain-name-servers 192.168.1.1;
    ...
    ddns-domainname "mydomain.ddns.net.";
    ddns-rev-domainname "in-addr.arpa.";
}

Linhas relevantes de /etc/bind/named.conf.local

zone "mydomain.ddns.net" {
        type master;
        file "/etc/bind/zones/db.mydomain.ddns.net"; # Zone file path
       allow-update { key rndc-key; };               # allow for dynamic updates
};

zone "168.192.in-addr.arpa" {
        type master;
        file "/etc/bind/zones/db.192.168";           # 192.168.0.0/16 subnet
        allow-update { key rndc-key; };              # allow for dynamic updates
};

Atualização 1

Depois de cavar dhcpd.conf cheguei à conclusão de que não posso especificar um número de porta para o servidor de ligação nele. No entanto, existe uma opção mágica chamada ddns-local-address4 que me permitiu especificar um endereço IP de servidor diferente para DDNS do domain-name-server option .

Eu alterei o bind para ouvir 127.0.0.1 e isso funciona em grande parte (pelo menos o bind agora está recebendo a atualização). No entanto, está desabilitando permissões.

Sep 29 19:21:40 ubuntu named[31415]: client 127.0.0.1#2824/key rndc-key: signer "rndc-key" approved
Sep 29 19:21:40 ubuntu named[31415]: client 127.0.0.1#2824/key rndc-key: updating zone 'mydomain.ddns.net/IN': adding an RR at 'iPhone.mydomain.ddns.net' A 192.168.1.104
Sep 29 19:21:40 ubuntu named[31415]: client 127.0.0.1#2824/key rndc-key: updating zone 'mydomain.ddns.net/IN': adding an RR at 'iPhone.mydomain.ddns.net' TXT "316a52934f2adcaf4c95004e870a4c0f70"
Sep 29 19:21:40 ubuntu named[31415]: /etc/bind/zones/db.mydomain.ddns.net.jnl: open: permission denied
Sep 29 19:21:40 ubuntu named[31415]: client 127.0.0.1#2824/key rndc-key: updating zone 'mydomain.ddns.net/IN': error: journal open failed: unexpected error
Sep 29 19:21:40 ubuntu kernel: [212079.779512] audit: type=1400 audit(1475148100.710:25): apparmor="DENIED" operation="open" profile="/usr/sbin/named" name="/etc/bind/zones/db.mydomain.ddns.net.jnl" pid=31419 comm="named" requested_mask="w" denied_mask="w" fsuid=110 ouid=0

No entanto, as minhas melhores tentativas ao conceder permissão suficiente para atualizar esse arquivo não estão funcionando. O que dá?

ps aux | grep named
bind     31415  0.0  0.2 429564 19572 ?        Ssl  19:10   0:00 /usr/sbin/named -f -u bind

ls -la /etc/bind/zones
total 16
drwxrwsr-x 2 root bind 4096 Sep 29 19:21 .
drwxr-sr-x 3 root bind 4096 Sep 29 19:07 ..
-rw-r--r-- 1 root bind  340 Sep 28 08:01 db.192.168
-rw-r--r-- 1 root bind  514 Sep 27 07:40 db.mydomain.ddns.net
-rw-rw-r-- 1 bind bind    0 Sep 29 19:21 db.mydomain.ddns.net.jnl

Atualização 2

Eu modifiquei meu perfil apparmor para o named e não estou mais recebendo os erros de permissão.

Quando eu consultar bind diretamente no 127.0.0.1, tudo funciona.

No entanto, quando eu consultá-lo via ubuntu , ele não está encaminhando as pesquisas para bind corretamente.

O que estou fazendo de errado agora?

De unbound.conf

    local-zone: "1.168.192.in-addr.arpa." nodefault
    local-zone:   "168.192.in-addr.arpa." nodefault

    stub-zone:
            name:   "168.192.inaddr.arpa."
            stub-addr: 127.0.0.1

    stub-zone:
            name: "1.168.192.inaddr.arpa."
            stub-addr: 127.0.0.1

    stub-zone:
            name: "mydomain.ddns.net."
            stub-addr: 127.0.0.1
    
por M Afifi 29.09.2016 / 03:11

1 resposta

0

Havia um arquivo adicional em /etc/unbound/unbound.d/ que estava interrompendo a resolução de mydomain.ddns.net. . Depois que o arquivo foi removido, isso resolveu o problema.

Configuração final

  1. dnscrypt-proxy ouvindo 127.0.2.1 .
  2. bind ouvindo 127.0.0.1 .
  3. unbound ouvindo 192.168.1.1 , encaminhando mydomain.ddns.net para bind usando as instruções stub-zone na pergunta, tem um encaminhamento padrão para dnscrypt-proxy .
  4. isc-server-dhcp updates bind usando as opções ddns* em dhcpd.conf
por 01.10.2016 / 12:08