因此,我决定将 bind 设置为 DNS 服务器(说实话,这只是一个实践练习,因为我正在学习 Network+。)但我无法让它工作。
我从 named.conf 中的一个区域开始:
zone "example.com" {
type master;
file "example.txt";
};
我有以下 DNS 文件。Bind 在 localhost 上运行,还有一个 python3 简单 http 服务器,其中包含我要查找的页面。example.txt 是:
; example.com
$TTL 604800
@ IN SOA ns1.example.com. root.example.com. (
2006020201 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800); Negative Cache TTL
;
@ IN NS ns1
IN A 127.0.0.1
ns1 IN A 127.0.0.1
mail IN A 127.0.0.1 ; We have our mail server somewhere else.
www IN A 127.0.0.1
client1 IN A 127.0.0.1 ; We connect to client1 very often.
我的理解是,这应该会导致 example.com 被报告为 localhost,而这实际上会解析为我的服务器。但是,我不知道为什么在点之前需要 NS1,老实说,它根本不起作用。一点也不。
(我模糊地认为 ns1 定义了要使用哪个名称服务器,即 DNS 服务器,当然它也位于 Localhost 上。)
如果有人能揭露我的不足,我将不胜感激。这只是一次学习经历——四天前我才知道什么是网络 ID,但我每天学习大约 10 个小时。
答案1
这里实际上发生了多件事。
SOA 记录中的“ns1”定义授权区域,即哪个名称服务器拥有数据的原始版本。在大多数设置中,这完全被忽略,但如果授权名称服务器对同一区域的回答不同,它可能有助于手动追踪不一致之处。据我所知,这不用作 DNS 查找过程的一部分。
您最有可能遇到的问题是 DNS 服务器未被查询,并且您使用的 DNS 服务器不知道您区域的 DNS 配置。DNS 服务器会查看其上游或根名称服务器来查找区域,而这些是使用您的 DNS 软件之外的注册商进行配置的。
例外情况是,如果您将计算机上的名称服务器设置为使用您自己的 DNS 服务器。我预计这里不会出现这种情况 - 除非您在 PC 上手动设置名称服务器。
答案2
看起来您缺少域本身的条目。请尝试添加example.com. IN A 127.0.0.1
。不要忘记句点。