0 domain-name-system bind dns-zone ubuntu-22.04
我正在尝试在 ProxMox 主机上设置访客 ubuntu 22.04 DNS/DHCP 服务器。我运行时的错误信息
我通过 cloudfare 注册了我的域名(“文件中未显示”,当 cloudfare 是我的域名服务器之一时,该域名可以返回积极的挖掘结果”)所以这应该是本地域,直到我可以配置我的互联网面对路由器(奇怪的情况)。
sudo named-checkzone example.local /etc/bind/db.example.local
zone example.local/IN: NS 'ns.example.local' has no address records (A or AAAA)
zone example.local/IN: not loaded due to errors.
Run Code Online (Sandbox Code Playgroud)
我的前向区域文件是:
;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA ns.example.local. root.example.local. (
7 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;Name Server Information
@ IN NS ns.example.local.
ns.example.local IN A 192.168.4.100
clientlongname.example.local IN A 192.168.4.97
client2.example.local IN A 192.168.4.98
client3.example.local IN A 192.168.4.99
client4.example.local IN A 192.168.4.96
Run Code Online (Sandbox Code Playgroud)
当我的反向查找区域文件使用named-checkzone时,它会返回正值。
如果需要的话,下面是我的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";
zone "example.local" IN {
type master;
file "/etc/bind/db.example.local";
allow-update { none; };
};
zone "4.168.192.in-addr.arpa" IN {
type master;
file "/etc/bind/db.r.example.local";
allow-update { none; };
};
Run Code Online (Sandbox Code Playgroud)
我尝试在 NS 记录之前删除 @,并将 FQDN 添加到客户端的主机名中。不知道我还能尝试什么,这些该死的记录“看起来”非常简单。
任何的意见都将会有帮助。
谢谢。
是的,有一个错误。你所想的记录,
\nns.example.local IN A 192.168.4.100\n
Run Code Online (Sandbox Code Playgroud)\n被解释为ns.example.local.example.local
相反。要修复此问题,请添加点,使标识符完全限定:
ns.example.local. IN A 192.168.4.100\nclientlongname.example.local. IN A 192.168.4.97\nclient2.example.local. IN A 192.168.4.98\nclient3.example.local. IN A 192.168.4.99\nclient4.example.local. IN A 192.168.4.96\n\n
Run Code Online (Sandbox Code Playgroud)\n或利用设置的原点删除后缀:
\nns IN A 192.168.4.100\nclientlongname IN A 192.168.4.97\nclient2 IN A 192.168.4.98\nclient3 IN A 192.168.4.99\nclient4 IN A 192.168.4.96\n
Run Code Online (Sandbox Code Playgroud)\n或者,通过在区域开头或至少在第一个非合格记录之前将源设置为 DNS 根来同时修复所有记录:
\n$ORIGIN .\n
Run Code Online (Sandbox Code Playgroud)\n我更喜欢删除多余的内容,通常选择第二种方式:利用原点。
\n在 DNS 中,末尾带有点的记录(被视为完全限定标识符)和末尾没有点的记录之间存在区别。
\n完全合格的内容将立即按原样阅读和解释。例如,单独的点.
(DNS 根)和example.com.
.
非限定标识符根据当前origin进行解析。在区域起始处设置为 BIND 中的区域名称,在您的情况下,example.local
对于第一个区域和4.168.192.in-addr.arpa
第二个区域。然后,当解析每条记录时,如果存在非限定名称,则附加origin 。这种情况会发生在记录名称(如您的情况ns.example.local
)和记录数据中,例如,CNAME、PTR、SOA、NS、MX、SRV 和其他记录中的目标名称。例如,如果在 SOA 之前不更改原点,则记录
@ IN SOA ns root 7 604800 86400 2419200 604800\n
Run Code Online (Sandbox Code Playgroud)\n将被解释为与您的区域 \xe2\x80\x94 中的当前 SOA 记录完全相同,ns
并且root
将附加原点。这也是为什么反向区域中的 PTR 记录几乎总是以点结尾的 \xe2\x80\x94 拼写的原因,我们通常不希望它们被解释为诸如 , 之类的名称foo.bar.x.y.z.in-addr.arpa.
,而是解释为foo.bar.
。您可以随时在区域文件中更改原点,新值将用于所有后续记录,直到再次更改。
归档时间: |
|
查看次数: |
282 次 |
最近记录: |