我知道 A,AAAA 记录将被递归解析器和存根解析器缓存。当一个人搜索一个子域/域时,如果搜索的是 CNAME 记录,Resolver 会获取相应的域名(因为 CNAME 记录值也将是 domain )并将其传递给客户端。现在解析器是否重复整个搜索以查找域名(根、TLD 和权威名称服务器)的 IP 地址,或者既然它已经从权威名称服务器获得响应,它会直接去它吗?在这种情况下,我们可以说权威名称服务器将被缓存,直到我们没有在我们的 DNS 记录中提及任何 NS 记录的 TTL 时间?
我最近开始学习 DNS,在 Linux 中使用 dig 命令时卡住了。更确切地说,我希望看到权威名称服务器(它们的名称或 IP 地址)保存我的 DNS 查询的答案,但我不知道如何。您可能已经知道,dig 的命令输出有 5 个部分:HEADER、QUERY、ANSWER、AUTHORITY 和 ADDITIONAL。最后 3 个包括在对 dig 发送的 DNS 请求的回复中找到的资源记录。我感兴趣的是 AUTHORITY 部分,它通常应该显示 NS(名称服务器)类型的资源记录,这些记录提供有关权威名称服务器的信息,从中检索初始查询的答案。权威服务器当然不同于可以提高效率的缓存服务器。
现在,我的问题是,每次我调用 dig 时,答案都不包含任何 AUTHORITY 记录。我可能不知道正确的选项或其他一些我不知道的问题。没有得到任何权威答案的原因可能是什么?为了得到答案应该做些什么?我会放一张终端的图像,但我还没有 10 声望,但问题仍然存在。
当我尝试使用相同的 IP 定义反向区域时,反向区域named-checkconf
会抛出:
$ named-checkconf named.conf.cust_zone
named.conf:63: zone '70.231.168.192.in-addr.arpa': already exists previous definition: named.conf:52
我的配置文件。
...
// zone for the 1st domain
zone "domain_1.com"{
type master;
file "file"
}
// reverse zone for 1st domain
zone "70.231.168.192.in-addr.arpa" {
type master;
file "file"; }
// zone for the 2nd domain
zone "domain_2.com"{
type master;
file "file"
}
// reverse zone for 2nd domain
zone "70.231.168.192.in-addr.arpa" {
type master;
file "file";
}
...
当我更改其中一个反向区域名称时,它会起作用。但我不确定它会起作用吗?
那么,有没有办法为一个 IP 配置两个反向区域?
考虑到 Cloudflare 的这篇文章DNS 服务器类型,有一个 TLD 名称服务器负责查找包含所需记录的权威 DNS 服务器。但是 TLD 名称服务器如何知道权威 DNS 服务器是什么,以便在其中进行搜索?想象一下,我想开一家域名注册公司。如何在 TLD 服务器中注册我的域名服务器,以便它知道将我的服务器包含在其搜索中?
我想在我位于 example.com 的自托管服务器上维护一个 DNS 隧道。我还有一个 DNS 服务器,它为 example.com 提供一切服务。我目前在域 tunnel.example.com 上使用dns2tcp进行 DNS 隧道传输。 NSD3用于为权威区域提供服务,因为它既简单又安全。
但是,我只有一个公共 IPv4 地址,这意味着 NSD 和 dns2tcp 不能监听同一个 IP/端口。
所以我目前正在使用PowerDNS Recursor使用这样的forward-zones
参数:
forward-zones-recurse=tunnel.example.com=1.2.3.4:5354
forward-zones=example.com=1.2.3.4:5353
这使得对权威区域的请求能够被请求到正确的服务器,以及隧道请求。NSD 监听 5353 端口,dns2tcp 监听 5354 端口。
然而,这很糟糕,因为递归需要打开。它实际上回答了任何递归查询。
你有什么解决办法吗?我真的更喜欢不涉及设置 BIND 的解决方案,但如果您有心情说服我,请毫不犹豫地这样做;)
编辑:我将标题更改为更清楚。