Bind9 新手无法解析本地地址

Bind9 新手无法解析本地地址

我对 DNS 服务器完全陌生,作为一种教育工具,我在运行 dietpi(Debian 的精简版)的 RPi 上安装了 bind9。

外部地址可以完美解析,但内部地址则不行。我有一个 db.local.lan 文件,设置如下:

$TTL 3D 
$ORIGIN local.lan. 
local.lan. IN SOA dietpi.local.lan. hostmaster.local.lan. ( 
        2020100418 ; serial 
        8H ; refresh 
        4H ; retry 
        4W ; expire 
        1D ; minimum 
    ) 
    local.lan. IN NS dietpi.local.lan. 
    local.lan. IN MX 10 dietpi.local.lan. 
    localhost IN A 127.0.0.1 
    dietpi IN A 192.168.20.254 
    router IN A 192.168.20.1 
    NL1901ACV IN A 192.168.20.1

named.conf.local是这样的:

//
// Do any local configuration here
//

zone "local.lan" IN {
            type master;
            file "/etc/bind/db.local.lan";
      };
    zone "20.168.192.in-addr.arpa" {
            type master;
            file "/etc/bind/db.rev.20.168.192.in-addr.arpa";
      };

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

我已经设置了一台电脑来使用此设备作为它的 DNS 服务器。从这台电脑我可以 ping google.com,但如果我尝试 ping dietpi 或 dietpi.local.lan,我会收到主机未找到错误。

named-checkconf 没有发现任何错误。

named-checkconf -z 返回以下内容 - 我不知道这是什么意思!

/etc/bind/db.local.lan:10: unknown RR type 'local.lan.'
/etc/bind/db.local.lan:11: unknown RR type 'local.lan.'
/etc/bind/db.local.lan:12: unknown RR type 'localhost'
/etc/bind/db.local.lan:13: unknown RR type 'dietpi'
/etc/bind/db.local.lan:14: unknown RR type 'router'
/etc/bind/db.local.lan:15: unknown RR type 'NL1901ACV'
zone local.lan/IN: loading from master file /etc/bind/db.local.lan failed: unknown class/type
zone local.lan/IN: not loaded due to errors.
_default/local.lan/IN: unknown class/type
/etc/bind/db.rev.20.168.192.in-addr.arpa:1: no TTL specified; using SOA MINTTL instead
/etc/bind/db.rev.20.168.192.in-addr.arpa:10: TTL set to prior TTL (1)
zone 20.168.192.in-addr.arpa/IN: loaded serial 2020100417
zone localhost/IN: loaded serial 2
zone 127.in-addr.arpa/IN: loaded serial 1
zone 0.in-addr.arpa/IN: loaded serial 1
zone 255.in-addr.arpa/IN: loaded serial 1

谁能解释我做错了什么?

提前致谢。大卫。

答案1

删除区域文件中主机条目开头的空格。

这里的问题是,如果一行以空格开头,那么该行应该引用前一个条目。在这种情况下,您不应该指定名称,因为它已经给出。此外,您不需要IN区域文件中的 s。

该区域文件应该可以工作:

$TTL 3D 
$ORIGIN local.lan. 
local.lan. IN SOA dietpi.local.lan. hostmaster.local.lan. ( 
    2020100418 ; serial 
    8H ; refresh 
    4H ; retry 
    4W ; expire 
    1D ; minimum 
) 
   NS dietpi.local.lan. 
   MX 10 dietpi.local.lan. 
localhost A 127.0.0.1 
dietpi A 192.168.20.254 
router A 192.168.20.1 
NL1901ACV A 192.168.20.1

请注意,前两个条目开头有空格。这使得条目引用前一个条目,即区域本身。由于此引用由行中的前导空格给出,因此不应在这些条目中指定任何名称。文件其余部分的条目引用单独的记录,因此它们确实有名称,并且没有前导空格。

相关内容