假设我想托管自己的 DNS 服务器,但出于某种原因,我无法访问 ICANN 的个人服务器。是否有某种主机文件或全局 DNS 可供我下载,其中包含当前索引和分配的地址列表?如果有,我在哪里可以获取它?
我对网络管理还很陌生,所以请耐心听我说。我以前没有做过这样的任务。我以前做的大部分工作都是摆弄我的 Hosts 文件。
答案1
我觉得根区域文件将提供您正在寻找的内容。它包含所有已识别的顶级域名(.com、.net、.gov、.us、.ru、.cn 等),以及为这些 TLD 提供服务的名称服务器 IP 地址。
请记住,root.zone 文件只能为您提供一层深度。正如其他人指出的那样,DNS 是一个分层的分布式数据库。世界上没有每个 IP 地址的中央列表(不可行)。
假设您想访问 www.example.com。您的计算机需要知道目标 IP 地址。使用 root.zone 文件,您将能够识别负责所有 .com 域的名称服务器。然后,您的计算机必须询问 .com 名称服务器如何解析 example.com。.com 名称服务器将帮助您识别负责所有 example.com 站点的服务器。然后,您的计算机必须向 example.com 名称服务器询问 www.example.com 的 IP 地址。
如果您不太信任 ICANN,那么您对负责维护各种 TLD 的注册商有多信任呢?
请注意,在现实世界中,没有人会直接使用 root.zone,并且它随时可能过期。相反,“根提示”服务器您可以查询以获取该信息。
您不是第一个对根名称服务器的所有权有疑问的人。存在备用根 DNS 服务器集。如果您在网络上运行自己的 DNS 服务器,则只需将您的根提示替换为此列表。
答案2
你的意思是根提示文件?没有所有地址/域的数据库。DNS 是一个分布式数据库。
让我们使用networkengineering.stackexchange.com作为示例。假设末尾有一个 .。
如果你的 DNS 服务器没有缓存答案,它会询问其中一个根服务器。为了com名称服务器。之后,您的 DNS 服务器会询问.com名称服务器stackchange名称服务器,然后会询问stackchange名称服务器网络工程。
如果您正在运行 Linux 安装挖亲自体验一下挖掘 networkengineering.stackexchange.com +trace
(运行 DNS 服务器时安装 dig 总是一个好主意)。
答案3
DNS 是一个分层系统,要启动您自己的 DNS 服务器,只需知道对根区域 (.) 具有权威性的 DNS 服务器是a.root-servers.net
、b.root-servers.net
、... 直至m.root-servers.net
。当然,要真正能够与这些服务器通信,必须提供至少一个 IP 地址。
无需下载包含“全部”信息的列表。根服务器会将您的 DNS 服务器指向您要查找的顶级域名的权威服务器,然后这些服务器会将您指向负责您想要的域名的 DNS 服务器。此过程将持续进行,直到您找到可以回答您的查询的服务器。
IANA 提供根提示文件包含所有根服务器的名称和 IP 地址。
请注意,这 13 个根服务器(其中一些)实际上是地理上分散的服务器集群。ICANN 负责运营l.root-servers.net
。