美好的一天!我有 Ubuntu 20.04,我希望按照以下配置创建本地 DNS 服务器(在 Core 上):
我用的是bind9。我用视图制作了前方区域,看起来效果很好。然后我尝试创建反向区域,但失败了。我不明白有什么问题。我读了很多教程并观看了很多视频。配置文件的内容对我来说似乎没问题。请帮助我))))
顺便说一句,我尝试不使用 ORIGIN 结果是一样的。服务器根本看不到反向区域。我遇到 NXDOMAIN 错误。
这些条目对于 IPv6 反向区域来说太短。现在您正在为
fd01:1
或类似的东西定义 rDNS,而不是为 fd01::1
。
即使您使用缩写形式的 IPv6 地址,反向区域也需要具有完整的地址 – 无法以 rDNS 格式表达 ::
,因此您需要将
fd01::1
扩展为
fd01:0000:0000:0000:0000:0000:0000:0001
,写出每个半字节,然后然后反转。 BIND 的
arpaname
工具或 Python 的 ipaddress 可以显示您需要的完整反向名称:
$ arpaname fd01::1
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.1.0.d.f.ip6.arpa
因为您的区域以 1.0.d.f.ip6.arpa
作为其原点,这意味着您需要 PTR 来:
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 PTR core.adm.lab.
2.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 PTR srv-l.adm.lab.
是的,这很快就会变得烦人。
#!/usr/bin/env python3
# mkreverse -- Transform shorthand like "[2001:db8::1] PTR foo.bar."
# into valid rDNS zone file entries.
#
# $ mkreverse < rdns.zone.in > rdns.zone
import ipaddress
import sys
import time
print("; generated at", time.strftime("%F %T"))
for line in sys.stdin:
if line.startswith("["):
parv = line.strip().split()
addr = ipaddress.ip_address(parv[0][1:-1])
print("%s." % addr.reverse_pointer, *parv[1:])
elif line.startswith("; ["):
parv = line.strip().split()
addr = ipaddress.ip_address(parv[1][1:-1])
print("%s." % addr.reverse_pointer, "PTR", *parv[2:])
else:
line = line.replace("<serial>", time.strftime("%s"))
print(line, end="")
print("; end")