![命名检查区域错误:DNS 区域错误:(区域外)没有地址记录(A 或 AAAA)](https://linux22.com/image/1610244/%E5%91%BD%E5%90%8D%E6%A3%80%E6%9F%A5%E5%8C%BA%E5%9F%9F%E9%94%99%E8%AF%AF%EF%BC%9ADNS%20%E5%8C%BA%E5%9F%9F%E9%94%99%E8%AF%AF%EF%BC%9A%EF%BC%88%E5%8C%BA%E5%9F%9F%E5%A4%96%EF%BC%89%E6%B2%A1%E6%9C%89%E5%9C%B0%E5%9D%80%E8%AE%B0%E5%BD%95%EF%BC%88A%20%E6%88%96%20AAAA%EF%BC%89.png)
我有同样的问题命名检查区域错误。我已经交叉检查了我的区域文件并且它们的 FQDN 格式正确。
我使用以下命令检查了区域文件:
:/etc/bind$ sudo named-checkzone linuxconfig.org zones/master/db.linuxconfig.org
zone linuxconfig.org/IN: sample.linuxconfig.org/NS 'ns1.sample.linuxconfig.org' (out of zone) has no addresses records (A or AAAA)
zone linuxconfig.org/IN: loaded serial 1
OK
该文件:db.linuxconfig.org.
包含以下内容:
;
; BIND data file for linuxconfig.org
;
$TTL 3h
@ IN SOA ns1.linuxconfig.org. admin.linuxconfig.org. (
1 ; Serial
3h ; Refresh after 3 hours
1h ; Retry after 1 hour
1w ; Expire after 1 week
1h ) ; Negative caching TTL of 1 day
;
@ IN NS ns1.linuxconfig.org.
linuxconfig.org. IN MX 10 mail.linuxconfig.org.
linuxconfig.org. IN A 192.168.0.19
ns1 IN A 92.168.0.10
www IN CNAME @
mail IN A 12.168.0.10
ftp IN CNAME linuxconfig.org.
sample IN NS ns1.sample.linuxconfig.org.
ns1.sample.linuxconfig.org. IN A 1.1.1.1
如果我删除了 ns1.sample.linuxconfig.org. 记录,那么 BIND 将会抱怨.. has no REQUIRED GLUE address records
。
named-checkzone
当 BIND 可以成功接受文件并在查询时返回记录时, 为什么会出现抱怨?
答案1
如果传递-i local
或-i local-sibling
,named-checkzone
将完全成功。请参阅手册页以了解 的解释-i
。
基本上-i
进行加载后区域完整性检查,默认为-i full
:
模式“完整”检查委托 NS 记录是否引用 A 或 AAAA 记录(区域内和区域外的主机名)。它还检查区域中的粘合地址记录是否与子区域所通告的记录相匹配。模式“本地”仅检查引用区域内主机名的 NS 记录或是否存在某些必需的粘合,即当名称服务器位于子区域中时。
首先,这解释了为什么即使在运行中 named-checkzone 失败,区域仍会加载:您收到的错误来自于区域之后进行的检查,通过在此处执行真实的 DNS 查询。
事实上,它尝试查询ns1.sample.linuxconfig.org
但失败了,因此出现错误,如果你这样做,ltrace
你会看到:
getaddrinfo("ns1.sample.linuxconfig.org.", nil, 0x7ffe2c6c4bb0, 0x7ffe2c6c4b78) = -2