Bind9 名前付け確認領域に失敗しました。 SOA レコードがゾーンの上部にありません。

Bind9 名前付け確認領域に失敗しました。 SOA レコードがゾーンの上部にありません。

私は1年前に完全にBind9を設定しましたが、私がやっていることを正確に文書化することを無視していましたが、今は何かが変わって修正しようとしています。問題は、まずLANでDHCP / NSホストを解決できないDHCPクライアントで発生します。

バインディング構成を確認するとnamed-checkzoneエラーが発生します。

adam@gondolin:~$ sudo named-checkzone 192.168.0 /var/cache/bind/db.192.168.0
/var/cache/bind/db.192.168.0:2: SOA record not at top of zone (0.168.192.in-addr.arpa.192.168.0)
zone 192.168.0/IN: loading from master file /var/cache/bind/db.192.168.0 failed: not at top of zone
zone 192.168.0/IN: not loaded due to errors.

そして確かにnamed領域をロードしません。

以下はゾーンファイルです。

adam@gondolin:~$ sudo cat /var/cache/bind/db.192.168.0
$TTL 86400
0.168.192.in-addr.arpa  IN SOA  localdomain. root.localdomain. (
                                1123       ; serial
                                604800     ; refresh (1 week)
                                86400      ; retry (1 day)
                                2419200    ; expire (4 weeks)
                                86400      ; minimum (1 day)
                                )
                        NS      gondolin.localdomain.
$ORIGIN 0.168.192.in-addr.arpa.
adam@gondolin:~$ 

私の唯一の他のゾーンファイルは同じ結果を提供します。

adam@gondolin:~$ sudo cat /var/cache/bind/db.localdomain
$TTL 86400
localdomain             IN SOA  localdomain. root.localdomain. (
                                1650       ; serial
                                604800     ; refresh (1 week)
                                86400      ; retry (1 day)
                                2419200    ; expire (4 weeks)
                                86400      ; minimum (1 day)
                                )
                        NS      gondolin.localdomain.
$ORIGIN localdomain.
adam@gondolin:~$ 

バインディング構成は次のとおりです。

adam@gondolin:~$ cat /etc/bind/named.conf.options
acl goodclients {
    localhost;
    localnets;
};
options {
    listen-on {
        192.168.0.3;
        127.0.0.1;
    };
    listen-on-v6 {
        fe80::2a37:37ff:fe03:4225/64;
        ::1;
        #any;
    };
    directory "/var/cache/bind";
    forwarders {
           208.67.220.220;
           208.67.222.222;
    };
    allow-query {
           goodclients;
    };
    allow-recursion {
           goodclients;
    };
    allow-transfer {
           goodclients;
    };
    dnssec-enable no;
    #dnssec-validation auto;
    auth-nxdomain no;    # conform to RFC1035
};
adam@gondolin:~$ 

面積:

adam@gondolin:~$ cat /etc/bind/named.conf.local
//
// Do any local configuration here
//

// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";

include "/etc/bind/rndc.key";

zone "localdomain" {
    type master;
    notify no;
    file "/var/cache/bind/db.localdomain";
    allow-update {
        key "rndc-key";
    };
};

zone "0.168.192.in-addr.arpa" {
    type master;
    notify no;
    file "/var/cache/bind/db.192.168.0";
    allow-update {
        key "rndc-key";
    };
};
adam@gondolin:~$ 

ここで設定することに関連する他の項目が何であるかよくわかりません。それで、私が考えることができるすべてを見せてあげましょう。

adam@gondolin:~$ cat /etc/hostname
gondolin

adam@gondolin:~$ cat /etc/hosts
127.0.0.1   localhost localhost.localdomain gondolin
127.0.1.1   gondolin
192.168.0.3     gondolin.localdomain gondolin

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

resolv.conf問題になる可能性があります:

adam@gondolin:~$ cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "systemd-resolve --status" to see details about the actual nameservers.

nameserver 192.168.0.3
domain localdomain
search localdomain
adam@gondolin:~$ 

メッセージが関係ないと思っていましたが、systemd-resolve実行状態を見ると次のようになります。

adam@gondolin:~$ sudo systemd-resolve --status
Failed to get global data: Unit dbus-org.freedesktop.resolve1.service not found.

ホストマシンで単純検索を実行します。

adam@gondolin:~$ dig gondolin

; <<>> DiG 9.11.3-1ubuntu1.9-Ubuntu <<>> gondolin
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 58942
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 083d35c6e1daa489584481225d74b44000978776cbc340e9 (good)
;; QUESTION SECTION:
;gondolin.          IN  A

;; AUTHORITY SECTION:
.           3600    IN  SOA a.root-servers.net. nstld.verisign-grs.com. 2019090800 1800 900 604800 86400

;; Query time: 7 msec
;; SERVER: 192.168.0.3#53(192.168.0.3)
;; WHEN: Sun Sep 08 08:56:48 BST 2019
;; MSG SIZE  rcvd: 140

adam@gondolin:~$ 

ベストアンサー1

次のゾーン構成を使用します。

zone "0.168.192.in-addr.arpa" {
type master;
notify no;
file "/var/cache/bind/db.192.168.0";

ゾーンファイルの先頭は次のとおりです。

$TTL 86400
0.168.192.in-addr.arpa  IN SOA  localdomain. root.localdomain. (

SOA レコードは、実際に0.168.192.in-addr.arpa.0.168.192.in-addr.arpa.名前が正しく指定されていない領域を参照します。

理由が何なのか尋ねてもいいですか?

月経を逃したからです。

ゾーンファイルでピリオド()で終わらないドメイン名には、自動的に.ゾーンが追加されます。$ORIGIN明示的に指定しないと、コンポーネントの$ORIGINゾーン名ですが、コンポーネントはzone最後にピリオドがあると想定します。ゾーンファイルでは、必要に応じて明示的に指定する必要があります。

これに気づいたら、エラーメッセージがわかります。 BINDは、構成行と同じドメイン名を指すSOAレコードを見ることを期待していますzone

SOAレコードの最初の行は次のようにする必要があります(使用されていない場合@)。

0.168.192.in-addr.arpa.  IN SOA  localdomain. root.localdomain. (

.ここでは、0.168.192.in-addr.arpaの末尾のピリオドが非常に重要です。

あなたのlocaldomain地区にも同じ問題があります。それが必要です:

localdomain.             IN SOA  localdomain. root.localdomain. (

おすすめ記事