bind: loading from master file failed: file not found

ada*_*est 6 domain-name-system ubuntu bind

So I'm kinda a newbie and I'm following this to connect a domain to my server. here is my codes:

named.conf.options:

acl "trusted" {
        124.243.241.164;
        124.243.241.164;
        124.243.241.164;
        124.243.241.164;
};


options {
    directory "/var/cache/bind";

    recursion yes;                 
    allow-recursion { trusted; };  
    listen-on { 124.243.241.164; };  
    allow-transfer { none; };      

    forwarders {
            8.8.8.8;
            8.8.4.4;
    };


    dnssec-validation auto;

    auth-nxdomain no;    # conform to RFC1035
    listen-on-v6 { any; };
};
Run Code Online (Sandbox Code Playgroud)

named.conf.local:

zone "ns1.raze.one" {
        type master;
        file "/etc/bind/zones/db.ns1.raze.one";
        allow-transfer { 124.243.241.164; };
 };
zone "243.124.in-addr.arpa" {
        type master;
        file "/etc/bind/zones/db.124.243";
        allow-transfer { 124.243.241.164; };
 };
Run Code Online (Sandbox Code Playgroud)

db.124.243:

;
; BIND reverse data file for local loopback interface
;
$TTL    604800
@   IN  SOA ns1.raze.one. root.ns1.raze.one. (
                  3     ; Serial
             604800     ; Refresh
              86400     ; Retry
            2419200     ; Expire
             604800 )   ; Negative Cache TTL
; name servers - NS records
      IN      NS      ns1.ns1.raze.one.
      IN      NS      ns2.ns2.raze.one.
; PTR Records
164.241   IN      PTR     ns1.ns1.raze.one.    ; 124.243.241.164
164.241   IN      PTR     ns2.ns2.raze.one.    ; 124.243.241.164
164.241   IN      PTR     rdn.mercury.orderbox-dns.com.  ; 124.243.241.164
164.241   IN      PTR     rdn.venus.orderbox-dns.com.  ; 124.243.241.164
Run Code Online (Sandbox Code Playgroud)

db.ns1.raze.one:

;
; BIND data file for local loopback interface
;
$TTL    604800
@   IN  SOA ns1.raze.one. root.ns1.raze.one. (
                  5     ; Serial
             604800     ; Refresh
              86400     ; Retry
            2419200     ; Expire
             604800 )   ; Negative Cache TTL
; name servers - NS records
    IN      NS      ns1.ns1.raze.one.
    IN      NS      ns2.ns1.raze.one.
; name servers - A records
ns1.ns1.raze.one.          IN      A       124.243.241.164
ns2.ns2.raze.one.          IN      A       124.243.241.164

; 124.243.241.164 - A records
rdn.mercury.orderbox-dns.com.        IN      A      124.243.241.164
rdn.venus.orderbox-dns.com.        IN      A      124.243.241.164
Run Code Online (Sandbox Code Playgroud)

Now the problem is when I enter sudo named-checkzone ns1.raze.one db.ns1.raze.one I get this error:

zone ns1.raze.one/IN: loading from master file db.ns1.raze.one failed: file not found
zone ns1.raze.one/IN: not loaded due to errors. 
Run Code Online (Sandbox Code Playgroud)

although this file does exist!
and when I do sudo named-checkzone 124.243.in-addr.arpa /etc/bind/zones/db.124.243 it's working:

zone 124.243.in-addr.arpa/IN: loaded serial 3
OK
Run Code Online (Sandbox Code Playgroud)

I'm stuck at this for while I would appreciate a little help here.

Tom*_*iie 5

这只是一个疯狂的猜测,但是当directory语句指向/var/cache/bind/ 时,如果您指定相对路径名,它将在那里搜索文件。要么像您一样指定绝对路径,要么修改directory语句。

  • 答案对我有帮助;我只是补充一下,而不是“sudo name-checkzone ns1.raze.one db.ns1.raze.one”,它应该是“sudo name-checkzone /etc/bind/zones/ns1.raze.one db.ns1” .raze.one` 在OP的情况下(当有人简单地说“使用绝对路径而不是相对路径”时,可能很难确定自己的方向,因为我正在研究confs而不是命令本身)。不用说,bind9 尊重配置文件中的目录,只有 `named-checkzone` 实用程序由于某种原因不尊重。 (3认同)