Назад | Перейти на главную страницу

nsupdate отвечает на SERVFAIL

Я пытаюсь создать домен, который можно обновлять. я использую bind9, я использовал

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

чтобы сгенерировать свой ключ, я добавил ключ в /etc/bind/keys.local

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

мой файл named.conf выглядит так:

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

мой файл named.conf.local выглядит так:

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>";
};

я упускаю что-то очевидное? потому что когда я делаю:

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

я получаю ответ SERVFAIL ...

dig <dns_server>

и

ping <dns_server>

работают правильно, я просто не могу заставить работать DDNS. Я пробовал ответы в других темах, подобных этому, все в конечном итоге дают мне SERVFAIL, независимо от того, что я пытаюсь. Спасибо заранее за любые предложения.

edit1: это соответствующие журналы на стороне сервера, когда я пытаюсь выполнить 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:

оказывается, что группа привязки не имеет прав на запись в / etc / bind ...

sudo chown -R bind:bind /etc/bind

исправил проблему

Благодарим вас за то, что вы действуете как системный администратор и публикуете журналы сервера, а не пытаетесь отладить проблемы с сервером только с помощью клиентской утилиты.

apparmor = "DENIED" operation = "mknod" profile = "/ usr / sbin / named" name = "/ etc / bind / zone /" pid = 18799 comm = "named" required_mask = "c" denied_mask = "c" fsuid = 112 уид = 112

Похоже, это указывает на то, что Apparmor блокирует ваш сервер имен от создания файла в /etc/bind/zones.

Серверу имен связывания требуется место для постоянного хранения (в файлах) динамических обновлений, и он делает это, создавая .jnl журнальные файлы в каталоге, где хранятся файлы вашей зоны. Apparmor блокирует эту операцию, потому что, как правило, это нарушение безопасности, когда демоны и службы изменяют свою собственную конфигурацию времени выполнения.

Возможные решения:

  • переместите файлы зоны в каталог с правильной защитой AppArmor.
    На моем Ubuntu 16.04 /etc/apparmor.d/usr.sbin.named обозначает
    /var/lib/bind/ как обычная альтернатива /etc/bind для динамически обновляемых файлов зоны (и журнала).
  • Отменить защиту AppArmor по умолчанию.

Создайте локальное переопределение и разрешите динамические обновления в / etc / bind / zone:

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

/etc/bind/zones/** rw,