为什么我的 DNS 服务器无法启动(坏区错误)?

n0p*_*0pe 7 domain-name-system centos

这是我的配置(在named上运行centos)。

/etc/named.conf

options {
    ## path to zone files ##
    directory "/var/named";

    ## forward non-local to google ##
    forwarders { 8.8.8.8; };
};

zone "gallactica.lab" IN {
    type master;
    file "named.gallactica.lab";
    allow-update { none; };
};

zone "1.168.192.in-addr.arpa" IN {
    type master;
    file "rz-192-168-1";
    allow-update { none; };
};
Run Code Online (Sandbox Code Playgroud)

/var/named/named.gallactica.lab

$TTL 1D
@       IN SOA  ns1.gallactica.lab. admin.gallactica.lab. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
IN NS      ns1.gallactica.lab.
IN A       192.168.1.105
ns1         IN A        192.168.1.105
proxmox     IN A        192.168.1.180
Run Code Online (Sandbox Code Playgroud)

/var/named/rz-192-168-1

$TTL 1D
@       IN SOA  ns1.gallactica.lab. admin.gallactica.lab. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
IN NS      ns1.gallactica.lab.
105     IN PTR  ns1.gallactica.lab.
180     IN PTR  proxmox.gallactica.lab.
Run Code Online (Sandbox Code Playgroud)

我的 DNS 服务器ns1.gallactica.lab位于地址192.168.1.105


尝试重新启动named服务时遇到的错误是:

Jan 19 20:18:10 ns1.gallactica.lab named-checkconf[6469]: zone 1.168.192.in-addr.arpa/IN: not loaded due to errors.
Jan 19 20:18:10 ns1.gallactica.lab named-checkconf[6469]: _default/1.168.192.in-addr.arpa/IN: bad zone
Jan 19 20:18:10 ns1.gallactica.lab named-checkconf[6469]: zone localhost.localdomain/IN: loaded serial 0
Jan 19 20:18:10 ns1.gallactica.lab named-checkconf[6469]: zone localhost/IN: loaded serial 0
Jan 19 20:18:10 ns1.gallactica.lab named-checkconf[6469]: zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0....ial 0
Jan 19 20:18:10 ns1.gallactica.lab named-checkconf[6469]: zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0
Jan 19 20:18:10 ns1.gallactica.lab named-checkconf[6469]: zone 0.in-addr.arpa/IN: loaded serial 0
Jan 19 20:18:10 ns1.gallactica.lab systemd[1]: named.service: control process exited, code=exited status=1
Jan 19 20:18:10 ns1.gallactica.lab systemd[1]: Failed to start Berkeley Internet Name Domain (DNS).
Jan 19 20:18:10 ns1.gallactica.lab systemd[1]: Unit named.service entered failed state.
Run Code Online (Sandbox Code Playgroud)

And*_*w B 7

假设您在问题中重新格式化区域文件时,它们的空白保持不变,由于格式问题,您似乎NS在区域顶部没有记录,这使区域成为假的。您还需要更正该A名称服务器的相应记录。

  • 您输入的内容: IN NS ns1.gallactica.lab.
  • 您打算将其解释为: 1.168.192.in-addr.arpa. IN NS ns1.gallactica.lab.
  • 它实际上是如何解释的: IN.1.168.192.in-addr.arpa. IN NS ns1.gallactica.lab.

当一行以空格开头时,假定标签(记录的名称)与区域中的前一条记录相同。这是一种有用的速记,但在复制和粘贴之间丢失前导空格时会产生可移植性问题。

作为旁注,named-checkzone在遇到此类问题时运行很有用。(并且在任何区域文件修改之后,真的)