nsupdate respondendo SERVFAIL

1

Eu tenho tentado configurar um domínio que pode ser atualizado. Eu estou usando bind9, eu usei

ddns-confgen -a hmac-sha512 -k <keyname>

para gerar minha chave, adicionei a chave em /etc/bind/keys.local

key "<keyname>" {
        algorithm hmac-sha512;
        secret "<secret>";
};

meu arquivo named.conf tem esta aparência:

include "/etc/bind/keys.local";
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";

meu arquivo named.conf.local tem esta aparência:

zone "<subdomain_name>" {
    type master;
    update-policy {
        grant <keyname> zonesub ANY;
    };
    file "<zone_file>"; # zone file path
};

zone "<reverse_zone>.in-addr.arpa" {
    type master;
    update-policy {
        grant <keyname> zonesub ANY;
    };
    file "<reverse_zone_file>";
};

estou faltando alguma coisa óbvia? porque quando eu faço:

sudo nsupdate -k <keyfile>
server <dns_server>
zone <subdomain_name>
update add newhost.<subdomain_name> 86400 A <newhost_ip>
send

eu acabo recebendo uma resposta do SERVFAIL ...

dig <dns_server>

e

ping <dns_server>

funcione corretamente, não consigo fazer o DDNS funcionar. Eu tentei respostas em outros tópicos como este, todos acabam me dando SERVFAIL independentemente do que eu tento. Agradecemos antecipadamente por qualquer sugestão.

edit1: este é o log correspondente no lado do servidor quando eu tento um nsupdate:

signer "<keyname>" approved
apparmor="DENIED" operation="mknod" profile="/usr/sbin/named" name="/etc/bind/zones/<zone_file>" pid=18799 comm="named" requested_mask="c" denied_mask="c" fsuid=112 ouid=112
client <client_ip>#62287/key <keyname>: signer "<keyname>" approved
client 172.30.2.253#62287/key <keyname>: updating zone '<zonename>/IN': adding an RR at 'host3.<zonename>' A <new_host_ip>
/etc/bind/zones/<zone_file>: create: permission denied
client <client_ip>#62287/key <keyname>: updating zone 'aci.riviera.local/IN': error: journal open failed: unexpected error

edit2:

resulta que o grupo de ligação não possui permissões de gravação em / etc / bind ...

sudo chown -R bind:bind /etc/bind

resolveu o problema

    
por Mazimer 10.07.2018 / 12:08

1 resposta

1

Obrigado por agir como um administrador de sistema e postar seus registros do servidor em vez de tentar depurar problemas do servidor apenas a partir de um utilitário cliente.

apparmor="DENIED" operation="mknod" profile="/usr/sbin/named" name="/etc/bind/zones/" pid=18799 comm="named" requested_mask="c" denied_mask="c" fsuid=112 ouid=112

Isso parece indicar que o Apparmor está impedindo o servidor de nomes de criar um arquivo em /etc/bind/zones .

O servidor de nomes de ligação precisa de um local para armazenar persistentemente (em arquivos) atualizações dinâmicas e faz isso criando .jnl journal files no diretório onde seus arquivos de zona estão armazenados. O Apparmor está bloqueando essa operação porque, em geral, é uma violação de segurança quando daemons e serviços mudam sua própria configuração de tempo de execução.

Soluções possíveis:

  • mova seus arquivos de zona para um diretório com as proteções corretas do AppArmor.
    No meu Ubuntu 16.04 /etc/apparmor.d/usr.sbin.named designa /var/lib/bind/ como a alternativa convencional para /etc/bind para arquivos de zona (e diário) dinamicamente atualizados.
  • Substitua as proteções padrão do AppArmor.

Crie uma substituição local e permita atualizações dinâmicas em / etc / bind / zones:

# /etc/apparmor.d/local/usr.sbin.named 

/etc/bind/zones/** rw,
    
por 10.07.2018 / 16:33