这是我很难理解的概念之一。我甚至不确定在这里要问什么明确的问题。我已经搜索了谷歌和堆栈上的本地搜索,但找不到任何可以清除 AXFR 的东西。以下是我的理解:
DNS 服务器有一个简单的目的:通过 IP 地址(IPv4 带有 A 记录;IPv6 带有 AAAA 记录)解析 URL 名称,例如 abc.com 或 123.net。让我们将这些 URL 名称称为域名。这些域名可以有子域,例如 m.123.net 或 z.abc.com。每个域/子域都有 X 量的信息。为了在网络中实现冗余(避免单点故障),这些域被划分为区域;因此 DNS 服务器被分为主 DNS 区域和辅助 DNS 区域,负责包含域区域信息。
转向 AXFR。此过程的目的是从单个点更新所有辅助 DNS 区域,从而消除在每台服务器上手动更新此信息所需的管理工作量。这就是我迷茫的地方……这些服务器使用密钥(rndc??)来执行此过程。
通过我的研究,我看到使用 axfr 选项通过“dig”命令检索记录。我不明白如果没有 rndc 密钥,这怎么可能实现。所以我想我的问题是:rndc 密钥是否用于加密 DNS 服务器通信?通过 AXFR 查询 DNS 记录与常规查询(寻找记录 A 以进行简单的域名解析到 IPv4)有什么区别?如何在没有 rndc 密钥的情况下通过 AXFR 检索域信息?
答案1
通过 AXFR 查询 DNS 记录与常规查询(寻找记录 A 以进行简单域名解析到 IPv4)有什么区别?
不同之处在于,AXFR
请求会导致服务器返回全部只需响应一个查询即可查看区域内的记录。
这意味着副本服务器可以在不了解区域内容的情况下启动 - 它们不需要被告知区域中存在哪些子域(或者哪些子域刚刚被添加/删除);正如您所提到的,“消除在每台服务器上手动更新此信息所需的管理工作量”是完全转移的重点。
此外,通过区域转移,辅助名称服务器无需单独查询每个子域来检测更新(一个区域可能有数千条记录 - 并且并非所有记录都是 A 类型)。它们仅查询 SOA 记录中的“序列号”,如果该序列号发生变化,则整个区域将在一次转移中刷新。
(除了“完整传输” AXFR 请求之外,许多名称服务器还实现增量传输,其中只发送新旧序列号之间的差异。)
如何在没有 rndc 键的情况下通过 AXFR 检索域信息?
密钥是否需要是名称服务器管理员的个人决定。许多区域实际上并不使用 TSIG 进行传输 - 它们仅使用 IP 地址限制,即“受信任”的 IP 可以在没有密钥的情况下传输区域,其他人根本无法传输。
但如果区域的管理员已将 TSIG 密钥设置为必需,则无法绕过该要求。在这种情况下,服务器之间的区域传输是可能的,因为辅助服务器实际上有钥匙。
(请注意,这不是 rndc 键——它恰好是同一个键类型,但 rndc 仅用于 BIND 名称服务器的本地控制,而对于 DNS 请求,它被称为 TSIG 密钥。)
有些管理员故意将区域传输提供给所有人,例如gnu.org
可以不受限制地进行传输(从其一个名称服务器)。ihtfp.com
是另一个这样的网站。
Linux:
dig gnu.org AXFR @ns2.gnu.org
Windows(由于 nslookup 中的错误,不能很好地工作):
nslookup > server 209.51.188.163 > ls -d gnu.org